[cxml-cvs] CVS update: cxml/xml/xml-parse.lisp

David Lichteblau dlichteblau at common-lisp.net
Sat Dec 3 21:54:46 UTC 2005


Update of /project/cxml/cvsroot/cxml/xml
In directory common-lisp.net:/tmp/cvs-serv26832/xml

Modified Files:
	xml-parse.lisp 
Log Message:
-eduni/namespaces/1.0/043.xml [not validating:] FAILED:
-  well-formedness violation not detected
-[
-Colon in entity name
-]
-eduni/namespaces/1.0/044.xml [not validating:] FAILED:
-  well-formedness violation not detected
-[
-Colon in entity name
-]
-eduni/namespaces/1.0/045.xml [not validating:] input [validating:] FAILED:
-  validity error not detected
-[
-Colon in ID attribute name
-]
-eduni/namespaces/1.0/046.xml [not validating:] input [validating:] FAILED:
-  validity error not detected
-[
-Colon in ID attribute name
-]

Date: Sat Dec  3 22:54:44 2005
Author: dlichteblau

Index: cxml/xml/xml-parse.lisp
diff -u cxml/xml/xml-parse.lisp:1.48 cxml/xml/xml-parse.lisp:1.49
--- cxml/xml/xml-parse.lisp:1.48	Sat Dec  3 22:31:31 2005
+++ cxml/xml/xml-parse.lisp	Sat Dec  3 22:54:44 2005
@@ -624,7 +624,6 @@
 	 (zstream (if (zstream-p stream) stream zmain))
 	 (xstream (if (xstream-p stream) stream nil))
 	 (s (make-string-output-stream)))
-    (write-string "Parse error: " s)
     (write-line message s)
     (when xstream
       (write-line "Location:" s)
@@ -726,12 +725,18 @@
         (dolist (a attlist)		;normalize non-CDATA values
           (let* ((qname (sax:attribute-qname a))
                  (adef (find-attribute e qname)))
-            (when (and adef (not (eq (attdef-type adef) :CDATA)))
-              (let ((canon (canon-not-cdata-attval (sax:attribute-value a))))
-                (when (and (standalone-check-necessary-p adef)
-                           (not (rod= (sax:attribute-value a) canon)))
-                  (validity-error "(02) Standalone Document Declaration: attribute value not normalized"))
-                (setf (sax:attribute-value a) canon)))))
+	    (when adef
+	      (when (and *validate*
+			 sax:*namespace-processing*
+			 (eq (attdef-type adef) :ID)
+			 (find #/: (sax:attribute-value a)))
+		(validity-error "colon in ID attribute"))
+	      (unless (eq (attdef-type adef) :CDATA)
+		(let ((canon (canon-not-cdata-attval (sax:attribute-value a))))
+		  (when (and (standalone-check-necessary-p adef)
+			     (not (rod= (sax:attribute-value a) canon)))
+		    (validity-error "(02) Standalone Document Declaration: attribute value not normalized"))
+		  (setf (sax:attribute-value a) canon))))))
         (when *validate*		;maybe validate attribute values
           (dolist (a attlist)
             (validate-attribute ctx e a))))
@@ -879,6 +884,8 @@
 
 (defun define-entity (source-stream name kind def)
   (setf name (intern-name name))
+  (when (and sax:*namespace-processing* (find #/: name))
+    (wf-error source-stream "colon in entity name"))
   (let ((table
          (ecase kind
            (:general (dtd-gentities (dtd *ctx*)))
@@ -2273,6 +2280,8 @@
                                   (normalize-public-id (extid-public id))
                                   nil)
                               (uri-rod (extid-system id)))
+    (when (and sax:*namespace-processing* (find #/: name))
+      (wf-error input "colon in notation name"))
     (when *validate*
       (define-notation (dtd *ctx*) name id))
     (list :notation-decl name id)))




More information about the Cxml-cvs mailing list