Update of /project/cxml/cvsroot/cxml/xml In directory common-lisp.net:/tmp/cvs-serv23697/xml
Modified Files: unparse.lisp xml-parse.lisp Log Message: -sun/not-wf/pi.xml [not-wf?] FAILED: - well-formedness violation not detected -[ - No space between PI target name and data] -ibm/not-wf/P24/ibm24n02.xml [not-wf?] FAILED: - well-formedness violation not detected -[ - Tests VersionInfo with a required field missing. The white space is - missing between the key word "xml" and the VersionInfo in the XMLDecl. - ]
sowie massenhaft :eof-pruefungen
Date: Sun Nov 27 00:57:10 2005 Author: dlichteblau
Index: cxml/xml/unparse.lisp diff -u cxml/xml/unparse.lisp:1.1.1.6 cxml/xml/unparse.lisp:1.2 --- cxml/xml/unparse.lisp:1.1.1.6 Sun Mar 13 19:02:56 2005 +++ cxml/xml/unparse.lisp Sun Nov 27 00:57:10 2005 @@ -291,8 +291,9 @@ (unless (rod-equal target '#.(string-rod "xml")) (write-rod '#.(string-rod "<?") sink) (write-rod target sink) - (write-rune #/space sink) - (write-rod data sink) + (when data + (write-rune #/space sink) + (write-rod data sink)) (write-rod '#.(string-rod "?>") sink)))
(defmethod sax:start-cdata ((sink sink))
Index: cxml/xml/xml-parse.lisp diff -u cxml/xml/xml-parse.lisp:1.11 cxml/xml/xml-parse.lisp:1.12 --- cxml/xml/xml-parse.lisp:1.11 Sun Nov 27 00:25:29 2005 +++ cxml/xml/xml-parse.lisp Sun Nov 27 00:57:10 2005 @@ -1079,7 +1079,7 @@ (setf (elmdef-external-p e) *markup-declaration-external-p*) e))))
-(defvar *redefinition-warning* t) +(defvar *redefinition-warning* nil)
(defun define-attribute (dtd element name type default) (let ((adef (make-attdef :element element @@ -1313,6 +1313,11 @@ (t (error "Bad character ~S after "<!"" d)))))
+(definline read-S? (input) + (while (member (peek-rune input) '(#/U+0020 #/U+0009 #/U+000A #/U+000D) + :test #'eql) + (consume-rune input))) + (defun read-attribute-list (zinput input imagine-space-p) (cond ((or imagine-space-p (let ((c (peek-rune input))) @@ -1348,11 +1353,6 @@ (perror input "Expected ";".")) (values :NAMED name))))))
-(definline read-S? (input) - (while (member (peek-rune input) '(#/U+0020 #/U+0009 #/U+000A #/U+000D) - :test #'eq) - (consume-rune input))) - (defun read-tag-2 (zinput input kind) (let ((name (read-name-token input)) (atts nil)) @@ -1547,8 +1547,15 @@ (unless (name-start-rune-p c) (error "Expecting name after '<?'")) (setf name (read-name-token input))) - (values name - (read-pi-content input)))) + (cond + ((member (peek-rune input) '(#/U+0020 #/U+0009 #/U+000A #/U+000D) + :test #'eql) + (values name (read-pi-content input))) + (t + (unless (and (eql (read-rune input) #/?) + (eql (read-rune input) #/>)) + (wf-error "malformed processing instruction")) + (values name "")))))
(defun read-pi-content (input &aux d) (read-S? input) @@ -1557,6 +1564,8 @@ (tagbody state-1 (setf d (read-rune input)) + (unless d + (error 'end-of-xstream)) (unless (data-rune-p d) (error "Illegal char: ~S." d)) (when (rune= d #/?) (go state-2)) @@ -1564,6 +1573,8 @@ (go state-1) state-2 ;; #/? seen (setf d (read-rune input)) + (unless d + (error 'end-of-xstream)) (unless (data-rune-p d) (error "Illegal char: ~S." d)) (when (rune= d #/>) (return))