fixed DTD serialization bugs, thanks to _3b for the report

This commit is contained in:
dlichteblau
2007-11-24 00:04:16 +00:00
parent 77db951f12
commit 37b4873ee4
2 changed files with 8 additions and 6 deletions

View File

@ -286,6 +286,8 @@
(%write-rod "EMPTY" sink)) (%write-rod "EMPTY" sink))
((eq m :PCDATA) ((eq m :PCDATA)
(%write-rod "#PCDATA" sink)) (%write-rod "#PCDATA" sink))
((eq m :ANY)
(%write-rod "ANY" sink))
((atom m) ((atom m)
(unparse-string m sink)) (unparse-string m sink))
(t (t
@ -306,13 +308,13 @@
(%write-rune #/\) sink)) (%write-rune #/\) sink))
(* (*
(walk (second m)) (walk (second m))
(%write-rod #/* sink)) (%write-rune #/* sink))
(+ (+
(walk (second m)) (walk (second m))
(%write-rod #/+ sink)) (%write-rune #/+ sink))
(? (?
(walk (second m)) (walk (second m))
(%write-rod #/? sink))))))) (%write-rune #/? sink)))))))
(walk model)) (walk model))
(%write-rune #/> sink) (%write-rune #/> sink)
(%write-rune #/U+000A sink)) (%write-rune #/U+000A sink))

View File

@ -1098,7 +1098,8 @@
(prog1 (prog1
(setf (gethash element-name (dtd-elements dtd)) (setf (gethash element-name (dtd-elements dtd))
(make-elmdef :name element-name :content content-model)) (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) ((null content-model)
e) e)
(t (t
@ -2101,8 +2102,7 @@
(wf-error input "Malformed or invalid content model: ~S." (mu content))) (wf-error input "Malformed or invalid content model: ~S." (mu content)))
(p/S? input) (p/S? input)
(expect input :\>) (expect input :\>)
(when *validate* (define-element (dtd *ctx*) name content)
(define-element (dtd *ctx*) name content))
(list :element name content))) (list :element name content)))
(defun maybe-compile-cspec (e) (defun maybe-compile-cspec (e)