Update of /project/cxml/cvsroot/cxml/xml In directory clnet:/tmp/cvs-serv28989/xml
Modified Files: package.lisp sax-handler.lisp unparse.lisp Log Message: cxml:unescaped, sax:unescaped
--- /project/cxml/cvsroot/cxml/xml/package.lisp 2007/10/14 17:50:11 1.20 +++ /project/cxml/cvsroot/cxml/xml/package.lisp 2007/11/18 18:43:11 1.21 @@ -61,6 +61,9 @@ #:cdata #:text #:doctype + #:processing-instruction + #:comment + #:unescaped
#:xml-parse-error #:well-formedness-violation --- /project/cxml/cvsroot/cxml/xml/sax-handler.lisp 2007/10/21 14:43:20 1.13 +++ /project/cxml/cvsroot/cxml/xml/sax-handler.lisp 2007/11/18 18:43:11 1.14 @@ -64,6 +64,7 @@ #:start-prefix-mapping #:start-element #:characters + #:unescaped #:processing-instruction #:end-element #:end-prefix-mapping @@ -326,6 +327,10 @@ (data) (hax:characters handler data))
+ (define-event (unescaped default-handler) + (data) + (hax:unescaped handler data)) + (define-event (processing-instruction default-handler) (target data) nil) @@ -461,6 +466,9 @@ (defmethod hax:characters ((handler abstract-handler) data) (sax:characters handler data))
+(defmethod hax:unescaped ((handler abstract-handler) data) + (sax:unescaped handler data)) + (defmethod hax:comment ((handler abstract-handler) str) (sax:comment handler str))
@@ -515,6 +523,9 @@ It is possible that the character content of an element is reported via multiple subsequent calls to this generic function.")
+(setf (documentation 'unescaped 'function) + "Called for unescaped element content. Beware dragons.") + (setf (documentation 'processing-instruction 'function) "Called when a processing instruction is read.
--- /project/cxml/cvsroot/cxml/xml/unparse.lisp 2007/10/21 17:07:23 1.22 +++ /project/cxml/cvsroot/cxml/xml/unparse.lisp 2007/11/18 18:43:11 1.23 @@ -459,6 +459,10 @@ (loop for c across data do (unparse-datachar c y)) (loop for c across data do (unparse-datachar-readable c y))))))))
+(defmethod sax:unescaped ((sink sink) data) + (maybe-close-tag sink) + (%write-rod data sink)) + (defmethod sax:comment ((sink sink) data) (maybe-close-tag sink) (unless (canonical sink) @@ -682,3 +686,17 @@ (maybe-emit-start-tag) (sax:characters *sink* (rod data)) data) + +(defun comment (data) + (maybe-emit-start-tag) + (sax:comment *sink* (rod data)) + data) + +(defun processing-instruction (target data) + (maybe-emit-start-tag) + (sax:processing-instruction *sink* (rod target) (rod data)) + data) + +(defun unescaped (str) + (maybe-emit-start-tag) + (sax:unescaped *sink* (rod str)))