diff --git a/doc/using.html b/doc/using.html index efc7360..ecbd003 100644 --- a/doc/using.html +++ b/doc/using.html @@ -67,6 +67,7 @@
Function CXML:PARSE-FILE (pathname handler &key ...)
Function CXML:PARSE-STREAM (stream handler &key ...)
Function CXML:PARSE-OCTETS (octets handler &key ...)
+
Function CXML:PARSE-ROD (rod handler &key ...)
Parse an XML document.  Return values from this function depend on the SAX handler used.
Arguments: @@ -123,6 +124,11 @@ otherwise. +

+ Note: parse-rod assumes that the input has already been + decoded into Unicode runes and ignores the encoding + specified in the XML declaration, if any. +

Function CXML:PARSE-DTD-FILE (pathname)
diff --git a/xml/package.lisp b/xml/package.lisp index 39bd4e6..8fc1255 100644 --- a/xml/package.lisp +++ b/xml/package.lisp @@ -34,8 +34,7 @@ #:parse-file #:parse-stream - ;; XXX encoding is mis-handled by parse-string, don't export it - ;; #:parse-string + #:parse-rod #:parse-octets #:make-octet-vector-sink diff --git a/xml/sax-tests/tests.lisp b/xml/sax-tests/tests.lisp index 7d39069..38a33a6 100644 --- a/xml/sax-tests/tests.lisp +++ b/xml/sax-tests/tests.lisp @@ -1,7 +1,7 @@ (in-package :sax-tests) (defun first-start-element-event (string) - (let ((events (xml:parse-string string (make-instance 'event-collecting-handler)))) + (let ((events (cxml:parse-rod string (make-instance 'event-collecting-handler)))) (find :start-element events :key #'car))) @@ -17,7 +17,7 @@ (deftest attribute-uniqueness-1 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -26,7 +26,7 @@ (deftest attribute-uniqueness-2 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () nil) (:no-error (&rest junk) (declare (ignore junk)) @@ -36,7 +36,7 @@ (deftest attribute-uniqueness-3 (let ((sax:*namespace-processing* nil)) (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () nil) (:no-error (&rest junk) (declare (ignore junk)) @@ -46,7 +46,7 @@ ;;; Namespace undeclaring (deftest undeclare-default-namespace-1 - (let* ((evts (xml:parse-string "" + (let* ((evts (cxml:parse-rod "" (make-instance 'event-collecting-handler))) (start-elt-events (remove :start-element evts :test (complement #'eql) :key #'car)) (evt1 (first start-elt-events)) @@ -59,7 +59,7 @@ (deftest undeclare-other-namespace (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -71,7 +71,7 @@ (deftest pi-names-are-ncnames-when-namespace-processing-1 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -81,7 +81,7 @@ (deftest pi-names-are-ncnames-when-namespace-processing-2 (let ((sax:*namespace-processing* nil)) (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () nil) (:no-error (&rest junk) (declare (ignore junk)) @@ -90,7 +90,7 @@ (deftest entity-names-are-ncnames-when-namespace-processing-1 (handler-case - (xml:parse-string " ]>&y:z;") + (cxml:parse-rod " ]>&y:z;") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -99,7 +99,7 @@ (deftest entity-names-are-ncnames-when-namespace-processing-2 (handler-case - (xml:parse-string " ]>") + (cxml:parse-rod " ]>") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -109,7 +109,7 @@ (deftest entity-names-are-ncnames-when-namespace-processing-3 (let ((sax:*namespace-processing* nil)) (handler-case - (xml:parse-string " ]>&y:z;") + (cxml:parse-rod " ]>&y:z;") (error () nil) (:no-error (&rest junk) (declare (ignore junk)) @@ -119,7 +119,7 @@ (deftest entity-names-are-ncnames-when-namespace-processing-4 (let ((sax:*namespace-processing* nil)) (handler-case - (xml:parse-string " ]>") + (cxml:parse-rod " ]>") (error () nil) (:no-error (&rest junk) (declare (ignore junk)) @@ -259,7 +259,7 @@ (deftest redefine-xml-namespace-1 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () nil) (:no-error (&rest junk) (declare (ignore junk)) @@ -268,7 +268,7 @@ (deftest redefine-xml-namespace-2 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -277,7 +277,7 @@ (deftest redefine-xml-namespace-3 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -286,7 +286,7 @@ (deftest redefine-xml-namespace-4 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -295,7 +295,7 @@ (deftest redefine-xmlns-namespace-1 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -304,7 +304,7 @@ (deftest redefine-xmlns-namespace-2 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -313,7 +313,7 @@ (deftest redefine-xmlns-namespace-3 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) @@ -322,11 +322,9 @@ (deftest redefine-xmlns-namespace-4 (handler-case - (xml:parse-string "") + (cxml:parse-rod "") (error () t) (:no-error (&rest junk) (declare (ignore junk)) nil)) t) - - diff --git a/xml/xml-parse.lisp b/xml/xml-parse.lisp index d489067..6d60367 100644 --- a/xml/xml-parse.lisp +++ b/xml/xml-parse.lisp @@ -3025,12 +3025,10 @@ (p/ext-subset zstream) (dtd *ctx*))))) -(defun parse-string (string handler) - ;; XXX this function mis-handles encoding +(defun parse-rod (string handler) (parse-xstream (string->xstream string) handler)) (defun string->xstream (string) - ;; XXX encoding is mis-handled by this kind of stream (make-rod-xstream (string-rod string))) (defclass octet-input-stream