diff --git a/collects/xml/private/writer.rkt b/collects/xml/private/writer.rkt index 7443ccf236..4b06e7611f 100644 --- a/collects/xml/private/writer.rkt +++ b/collects/xml/private/writer.rkt @@ -168,7 +168,15 @@ (define (escape x table) (regexp-replace* table x replace-escaped)) +(define (display/escape x table out) + (cond [(regexp-match table x) + (display (escape x table) out)] + [else + (display x out)])) + + (provide escape + display/escape escape-table escape-attribute-table lowercase-symbol diff --git a/collects/xml/private/xexpr.rkt b/collects/xml/private/xexpr.rkt index 67112dbaa2..349a1a60df 100644 --- a/collects/xml/private/xexpr.rkt +++ b/collects/xml/private/xexpr.rkt @@ -141,7 +141,7 @@ (display (car att) out) (display "=" out) (display "\"" out) - (display (escape (cadr att) escape-attribute-table) out) + (display/escape (cadr att) escape-attribute-table out) (display "\"" out)) ; Write end of opening tag (if (and (null? content) @@ -161,7 +161,7 @@ (display ">" out)))] ; PCData [(string? x) - (display (escape x escape-table) out)] + (display/escape x escape-table out)] ; Entities [(symbol? x) (display "&" out)