From b0ca8a12da1ae0971abf88985991c74e075931c9 Mon Sep 17 00:00:00 2001 From: dlichteblau Date: Sun, 22 Jul 2007 19:44:01 +0000 Subject: [PATCH] DTD serialization fixes --- xml/unparse.lisp | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/xml/unparse.lisp b/xml/unparse.lisp index a9a2482..9a39c4f 100644 --- a/xml/unparse.lisp +++ b/xml/unparse.lisp @@ -145,15 +145,15 @@ (%write-rod #"") sink))) @@ -449,6 +452,14 @@ (loop for c across data do (unparse-datachar c y)) (loop for c across data do (unparse-datachar-readable c y)))))))) +(defmethod sax:comment ((sink sink) data) + (maybe-close-tag sink) + (unless (canonical sink) + ;; XXX signal error if body is unprintable? + (%write-rod #"" sink))) + (defmethod sax:end-cdata ((sink sink)) (unless (eq (pop (stack sink)) :cdata) (error "output does not nest: not in a cdata section"))) @@ -510,6 +521,7 @@ ((rune= c #/<) (write-rod '#.(string-rod "<") ystream)) ((rune= c #/>) (write-rod '#.(string-rod ">") ystream)) ((rune= c #/\") (write-rod '#.(string-rod """) ystream)) + ((rune= c #/U+000D) (write-rod '#.(string-rod " ") ystream)) (t (write-rune c ystream))))