From dlichteblau at common-lisp.net Sun Nov 18 18:43:00 2007 From: dlichteblau at common-lisp.net (dlichteblau) Date: Sun, 18 Nov 2007 13:43:00 -0500 (EST) Subject: [cxml-cvs] CVS cxml/xml Message-ID: <20071118184300.C00474F017@common-lisp.net> Update of /project/cxml/cvsroot/cxml/xml In directory clnet:/tmp/cvs-serv28949/xml Modified Files: xmls-compat.lisp Log Message: fixed xmls compatibility for recent sax changes --- /project/cxml/cvsroot/cxml/xml/xmls-compat.lisp 2007/07/01 17:26:04 1.5 +++ /project/cxml/cvsroot/cxml/xml/xmls-compat.lisp 2007/11/18 18:43:00 1.6 @@ -61,7 +61,7 @@ ;;;; SAX-Handler (Parser) -(defclass xmls-builder () +(defclass xmls-builder (sax:default-handler) ((element-stack :initform nil :accessor element-stack) (root :initform nil :accessor root) (include-default-values :initform t From dlichteblau at common-lisp.net Sun Nov 18 18:43:10 2007 From: dlichteblau at common-lisp.net (dlichteblau) Date: Sun, 18 Nov 2007 13:43:10 -0500 (EST) Subject: [cxml-cvs] CVS cxml Message-ID: <20071118184310.D867C4F018@common-lisp.net> Update of /project/cxml/cvsroot/cxml In directory clnet:/tmp/cvs-serv28989 Added Files: dist.sh Log Message: cxml:unescaped, sax:unescaped --- /project/cxml/cvsroot/cxml/dist.sh 2007/11/18 18:43:10 NONE +++ /project/cxml/cvsroot/cxml/dist.sh 2007/11/18 18:43:10 1.1 #!/bin/sh cd $(dirname $0) home=$(pwd) name=$(basename $home) dir=${name}-$(date --iso) TMPDIR=`mktemp -d /tmp/dist.XXXXXXXXXX` cleanup() { cd rm -rf $TMPDIR } trap cleanup exit cd $TMPDIR cvs -d "`cat $home/CVS/Root`" export -r HEAD -d "$dir" "$name" make -C $dir/doc tgz=$TMPDIR/${dir}.tgz tar czf $tgz $dir gpg -b -a $tgz mv $tgz $tgz.asc $home/ From dlichteblau at common-lisp.net Sun Nov 18 18:43:11 2007 From: dlichteblau at common-lisp.net (dlichteblau) Date: Sun, 18 Nov 2007 13:43:11 -0500 (EST) Subject: [cxml-cvs] CVS cxml/xml Message-ID: <20071118184311.4020E4F018@common-lisp.net> 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))) From dlichteblau at common-lisp.net Sun Nov 18 18:45:15 2007 From: dlichteblau at common-lisp.net (dlichteblau) Date: Sun, 18 Nov 2007 13:45:15 -0500 (EST) Subject: [cxml-cvs] CVS closure-common Message-ID: <20071118184515.39FE82D07D@common-lisp.net> Update of /project/cxml/cvsroot/closure-common In directory clnet:/tmp/cvs-serv29467 Modified Files: hax.lisp Log Message: hax:unescaped --- /project/cxml/cvsroot/closure-common/hax.lisp 2007/10/21 17:49:23 1.4 +++ /project/cxml/cvsroot/closure-common/hax.lisp 2007/11/18 18:45:12 1.5 @@ -45,6 +45,7 @@ #:start-document #:start-element #:characters + #:unescaped #:end-element #:end-document #:comment @@ -118,6 +119,14 @@ (declare (ignore data)) nil)) +(defgeneric unescaped (handler data) + (:method ((handler null) data) + (declare (ignore data)) + nil) + (:method ((handler default-handler) data) + (declare (ignore data)) + nil)) + (defgeneric end-element (handler name) (:method ((handler null) name) (declare (ignore name)) @@ -170,6 +179,7 @@ @aboutfun{start-element} @aboutfun{end-element} @aboutfun{characters} + @aboutfun{unescaped} @aboutfun{comment} @aboutfun{end-document} @end{section}") @@ -205,6 +215,7 @@ @see{start-element} @see{end-element} @see{characters} + @see{unescaped} @see{comment}") (setf (documentation 'default-handler 'type) @@ -222,6 +233,7 @@ @see{start-element} @see{end-element} @see{characters} + @see{unescaped} @see{comment}") (setf (documentation 'standard-attribute 'type) @@ -315,6 +327,7 @@ @see{start-element} @see{end-element} @see{characters} + @see{unescaped} @see{comment} @see{end-document}") @@ -336,6 +349,7 @@ @see{start-document} @see{end-element} @see{characters} + @see{unescaped} @see{comment} @see{end-document}") @@ -351,6 +365,7 @@ @see{start-document} @see{start-element} @see{characters} + @see{unescaped} @see{comment} @see{end-document}") @@ -369,6 +384,23 @@ @see{comment} @see{end-document}") +(setf (documentation 'unescaped 'function) + "@arg[handler]{a HAX/SAX handler + (see @class{abstract-handler} for details)} + @arg[data]{rod/string} + @return{unspecified} + @short{Escaping bypass.} + + This event writes raw characters into a document. + + Beware dragons. + + @see{start-document} + @see{start-element} + @see{end-element} + @see{comment} + @see{end-document}") + (setf (documentation 'comment 'function) "@arg[handler]{a HAX/SAX handler (see @class{abstract-handler} for details)} @@ -382,6 +414,7 @@ @see{start-element} @see{end-element} @see{characters} + @see{unescaped} @see{end-document}") (setf (documentation 'end-document 'function) @@ -401,4 +434,5 @@ @see{start-element} @see{end-element} @see{characters} + @see{unescaped} @see{comment}") From dlichteblau at common-lisp.net Sat Nov 24 00:04:16 2007 From: dlichteblau at common-lisp.net (dlichteblau) Date: Fri, 23 Nov 2007 19:04:16 -0500 (EST) Subject: [cxml-cvs] CVS cxml/xml Message-ID: <20071124000416.9C1814F017@common-lisp.net> Update of /project/cxml/cvsroot/cxml/xml In directory clnet:/tmp/cvs-serv31472 Modified Files: unparse.lisp xml-parse.lisp Log Message: fixed DTD serialization bugs, thanks to _3b for the report --- /project/cxml/cvsroot/cxml/xml/unparse.lisp 2007/11/18 18:43:11 1.23 +++ /project/cxml/cvsroot/cxml/xml/unparse.lisp 2007/11/24 00:04:16 1.24 @@ -286,6 +286,8 @@ (%write-rod "EMPTY" sink)) ((eq m :PCDATA) (%write-rod "#PCDATA" sink)) + ((eq m :ANY) + (%write-rod "ANY" sink)) ((atom m) (unparse-string m sink)) (t @@ -306,13 +308,13 @@ (%write-rune #/\) sink)) (* (walk (second m)) - (%write-rod #/* sink)) + (%write-rune #/* sink)) (+ (walk (second m)) - (%write-rod #/+ sink)) + (%write-rune #/+ sink)) (? (walk (second m)) - (%write-rod #/? sink))))))) + (%write-rune #/? sink))))))) (walk model)) (%write-rune #/> sink) (%write-rune #/U+000A sink)) --- /project/cxml/cvsroot/cxml/xml/xml-parse.lisp 2007/10/14 18:40:26 1.74 +++ /project/cxml/cvsroot/cxml/xml/xml-parse.lisp 2007/11/24 00:04:16 1.75 @@ -1098,7 +1098,8 @@ (prog1 (setf (gethash element-name (dtd-elements dtd)) (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) e) (t @@ -2101,8 +2102,7 @@ (wf-error input "Malformed or invalid content model: ~S." (mu content))) (p/S? input) (expect input :\>) - (when *validate* - (define-element (dtd *ctx*) name content)) + (define-element (dtd *ctx*) name content) (list :element name content))) (defun maybe-compile-cspec (e)