From 37b4873ee4dae3790ee03de8e920f2ce8dc875e4 Mon Sep 17 00:00:00 2001 From: dlichteblau Date: Sat, 24 Nov 2007 00:04:16 +0000 Subject: [PATCH] fixed DTD serialization bugs, thanks to _3b for the report --- xml/unparse.lisp | 8 +++++--- xml/xml-parse.lisp | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/xml/unparse.lisp b/xml/unparse.lisp index 1858a55..f6263fd 100644 --- a/xml/unparse.lisp +++ b/xml/unparse.lisp @@ -286,6 +286,8 @@ (%write-rod "EMPTY" sink)) ((eq m :PCDATA) (%write-rod "#PCDATA" sink)) + ((eq m :ANY) + (%write-rod "ANY" sink)) ((atom m) (unparse-string m sink)) (t @@ -306,13 +308,13 @@ (%write-rune #/\) sink)) (* (walk (second m)) - (%write-rod #/* sink)) + (%write-rune #/* sink)) (+ (walk (second m)) - (%write-rod #/+ sink)) + (%write-rune #/+ sink)) (? (walk (second m)) - (%write-rod #/? sink))))))) + (%write-rune #/? sink))))))) (walk model)) (%write-rune #/> sink) (%write-rune #/U+000A sink)) diff --git a/xml/xml-parse.lisp b/xml/xml-parse.lisp index cabf17b..7113273 100644 --- a/xml/xml-parse.lisp +++ b/xml/xml-parse.lisp @@ -1098,7 +1098,8 @@ (prog1 (setf (gethash element-name (dtd-elements dtd)) (make-elmdef :name element-name :content content-model)) - (sax:element-declaration (handler *ctx*) element-name content-model))) + (when content-model + (sax:element-declaration (handler *ctx*) element-name content-model)))) ((null content-model) e) (t @@ -2101,8 +2102,7 @@ (wf-error input "Malformed or invalid content model: ~S." (mu content))) (p/S? input) (expect input :\>) - (when *validate* - (define-element (dtd *ctx*) name content)) + (define-element (dtd *ctx*) name content) (list :element name content))) (defun maybe-compile-cspec (e)