diff --git a/collects/tests/web-server/pr/12271.rkt b/collects/tests/web-server/pr/12271.rkt new file mode 100644 index 0000000000..d3e08c067b --- /dev/null +++ b/collects/tests/web-server/pr/12271.rkt @@ -0,0 +1,16 @@ +#lang racket +(require tests/eli-tester + xml) + +(test + (with-output-to-bytes + (lambda () + (write-xexpr + `(html (head (title "Form with CDATA")) + (body (p "Hello, this is a form") + (p ,(cdata 'cdata-start 'cdata-end "")) + (p ,(p-i 'pis 'pie 'target "instruction")) + (p ,(comment "comment")) + "Something"))))) + => + #"Form with CDATA

Hello, this is a form

Something") diff --git a/collects/xml/private/writer.rkt b/collects/xml/private/writer.rkt index 13339fb427..1abc891e7a 100644 --- a/collects/xml/private/writer.rkt +++ b/collects/xml/private/writer.rkt @@ -169,6 +169,9 @@ escape-table escape-attribute-table lowercase-symbol + write-xml-cdata + write-xml-comment + write-xml-p-i write-xml-element) ;; incr : Nat -> Nat diff --git a/collects/xml/private/xexpr.rkt b/collects/xml/private/xexpr.rkt index e541e9290c..ae0d35bb09 100644 --- a/collects/xml/private/xexpr.rkt +++ b/collects/xml/private/xexpr.rkt @@ -299,5 +299,9 @@ [(valid-char? x) (fprintf out "&#~a;" x)] ; Embedded XML - [(source? x) - (write-xml-element x 0 void out)])) + [(cdata? x) + (write-xml-cdata x 0 void out)] + [(comment? x) + (write-xml-comment x 0 void out)] + [(p-i? x) + (write-xml-p-i x 0 void out)])) diff --git a/collects/xml/xml.rkt b/collects/xml/xml.rkt index e61183b017..d2928312d3 100644 --- a/collects/xml/xml.rkt +++ b/collects/xml/xml.rkt @@ -7,6 +7,9 @@ escape-table escape-attribute-table lowercase-symbol + write-xml-cdata + write-xml-comment + write-xml-p-i write-xml-element) "private/xexpr.rkt" "private/syntax.rkt")