[cxml-cvs] CVS update: cxml/xml/xml-parse.lisp
David Lichteblau
dlichteblau at common-lisp.net
Sun Nov 27 00:44:47 UTC 2005
Update of /project/cxml/cvsroot/cxml/xml
In directory common-lisp.net:/tmp/cvs-serv27309/xml
Modified Files:
xml-parse.lisp
Log Message:
-ibm/not-wf/P46/ibm46n01.xml [not-wf?] FAILED:
- well-formedness violation not detected
-[
- Tests contentspec with wrong key word. the string "empty" is used as
- the key word in the contentspec of the second elementdecl in the DTD.
- ]
-ibm/not-wf/P46/ibm46n02.xml [not-wf?] FAILED:
- well-formedness violation not detected
-[
- Tests contentspec with wrong key word. the string "Empty" is used as
- the key word in the contentspec of the second elementdecl in the DTD.
- ]
-ibm/not-wf/P46/ibm46n03.xml [not-wf?] FAILED:
- well-formedness violation not detected
-[
- Tests contentspec with wrong key word. the string "Any" is used as
- the key word in the contentspec of the second elementdecl in the DTD.
- ]
-ibm/not-wf/P46/ibm46n04.xml [not-wf?] FAILED:
- well-formedness violation not detected
-[
- Tests contentspec with wrong key word. the string "any" is used as
- the key word in the contentspec of the second elementdecl in the DTD.
- ]
Date: Sun Nov 27 01:44:46 2005
Author: dlichteblau
Index: cxml/xml/xml-parse.lisp
diff -u cxml/xml/xml-parse.lisp:1.18 cxml/xml/xml-parse.lisp:1.19
--- cxml/xml/xml-parse.lisp:1.18 Sun Nov 27 01:40:13 2005
+++ cxml/xml/xml-parse.lisp Sun Nov 27 01:44:46 2005
@@ -2169,9 +2169,9 @@
;; | Name
;; | cs
;; cs ::= '(' S? cspec ( S? '|' S? cspec)* S? ')' ('?' | '*' | '+')?
-;; und eine post mortem analyse
+;; und eine post factum analyse
-(defun p/cspec (input)
+(defun p/cspec (input &optional recursivep)
(let ((term
(let ((names nil) op-cat op res stream)
(multiple-value-bind (cat sem) (peek-token input)
@@ -2181,8 +2181,10 @@
:EMPTY)
((rod= sem '#.(string-rod "ANY"))
:ANY)
- (t
- sem)))
+ ((not recursivep)
+ (wf-error "invalid content spec"))
+ (t
+ sem)))
((eq cat :\#PCDATA)
(consume-token input)
:PCDATA)
@@ -2190,7 +2192,7 @@
(setf stream (car (zstream-input-stack input)))
(consume-token input)
(p/S? input)
- (setq names (list (p/cspec input)))
+ (setq names (list (p/cspec input t)))
(p/S? input)
(cond ((member (peek-token input) '(:\| :\,))
(setf op-cat (peek-token input))
@@ -2198,7 +2200,7 @@
(while (eq (peek-token input) op-cat)
(consume-token input)
(p/S? input)
- (push (p/cspec input) names)
+ (push (p/cspec input t) names)
(p/S? input))
(setf res (cons op (reverse names))))
(t
@@ -2645,7 +2647,7 @@
(unless (and (eq cat2 :etag)
(eq (car sem2) name))
(perror input "Bad nesting. ~S / ~S" (mu name) (mu (cons cat2 sem2))))
- (when sem2
+ (when (cdr sem2)
(wf-error "no attributes allowed in end tag")))
(sax:end-element (handler *ctx*) ns-uri local-name name))
More information about the Cxml-cvs
mailing list