[cxml-devel] Problem with parsing XMLTV file

Nicolas Lamirault lam at tuxfamily.org
Mon Feb 13 19:19:19 UTC 2006


hello,
i would like to use cxml to parse a XML TV file

i try like this :

CL-USER> (cxml:parse-file "/home/nicolas/src/cl-freetv/var/xmltv.xml" (cxml-dom:make-dom-builder) :validate t)

and i have this error :


Document not valid: (03) Element Valid: title
Context:
  Line 19655, column 12 in file://+/home/nicolas/src/cl-freetv/var/xmltv.xml

   [Condition of type CXML:VALIDITY-ERROR]

Restarts:
  0: [ABORT-REQUEST] Abort handling SLIME request.
  1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" {B322659}>)

Backtrace:
  0: (CXML::%ERROR CXML:VALIDITY-ERROR NIL "Document not valid: (03) Element Valid: title")
  1: (CXML::%ERROR CXML:VALIDITY-ERROR NIL "Document not valid: (03) Element Valid: title")
  2: (CXML:VALIDITY-ERROR "(03) Element Valid: ~A" "title")
  3: (CXML:VALIDITY-ERROR "(03) Element Valid: ~A")
  4: (CXML::VALIDATE-START-ELEMENT #S(CXML::CONTEXT :HANDLER #<RUNE-DOM::DOM-BUILDER {ADCA581}> :DTD #S(CXML::DTD :ELEMENTS #<HASH-TABLE :TEST EQUAL :COUNT 40 {B06DE09}> :GENTITIES #<HASH-TABLE :TEST EQUAL :COUNT 5 {B06DE51}> :PENTITIES #<HASH-TABLE :TEST EQUAL :COUNT 0 {B06DE99}> :NOTATIONS #<HASH-TABLE :TEST EQUAL :COUNT 0 {B06DEE1}>) :MODEL-STACK ((#<FUNCTION CXML::CMODEL-DONE> . #<FUNCTION # {BC7AF15}>) (#<CLOSURE #1=# {B1191C5}> . #<CLOSURE #2=# {B0C7C4D}>) (#<CLOSURE #1# {B5A51A5}> . #<CLOSURE #2# {B5A520D}>) (#<FUNCTION # {B0E023D}> . #<FUNCTION # {B0E0155}>)) :REFERENCED-NOTATIONS NIL :ID-TABLE #<HASH-TABLE :TEST EQUAL :COUNT 0 {AFEE5F1}> :NAME-HASHTABLE #S(CXML::ROD-HASHTABLE :SIZE 2003 :TABLE #(NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL ...)) :STANDALONE-P NIL :ENTITY-RESOLVER NIL :DISALLOW-INTERNAL-SUBSET NIL :MAIN-ZSTREAM #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>))) "title")
  5: (CXML::P/ELEMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
  6: (CXML::P/CONTENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
  7: (CXML::P/ELEMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
  8: (CXML::P/CONTENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
  9: (CXML::P/ELEMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
 10: (CXML::P/CONTENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
 11: (CXML::P/ELEMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
 12: (CXML::P/DOCUMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)) #<RUNE-DOM::DOM-BUILDER {ADCA581}> :VALIDATE T :DTD NIL :ROOT NIL :ENTITY-RESOLVER NIL :DISALLOW-INTERNAL-SUBSET NIL :RECODE T)
 13: (CXML::PARSE-XSTREAM #<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]> #<RUNE-DOM::DOM-BUILDER {ADCA581}> :VALIDATE T)
 14: (CXML::CALL-WITH-OPEN-XFILE #<CLOSURE (LAMBDA (CXML::INPUT)) {ADCA605}> "/home/nicolas/src/cl-freetv/var/xmltv.xml")
 15: (SB-INT:EVAL-IN-LEXENV (CXML:PARSE-FILE "/home/nicolas/src/cl-freetv/var/xmltv.xml" (RUNE-DOM:MAKE-DOM-BUILDER) :VALIDATE T) #<NULL-LEXENV>)
 16: (SWANK::EVAL-REGION "(cxml:parse-file \"/home/nicolas/src/cl-freetv/var/xmltv.xml\" (cxml-dom:make-dom-builder) :validate t)
" T)
 17: ((LAMBDA NIL))
 18: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-SYNTAX-HOOKS (T)) #<unused argument> #<unused argument> #<CLOSURE (LAMBDA NIL) {AD6871D}>)
 19: (SWANK::CALL-WITH-BUFFER-SYNTAX #<CLOSURE (LAMBDA NIL) {AD6871D}>)
 20: (SB-INT:EVAL-IN-LEXENV (SWANK:LISTENER-EVAL "(cxml:parse-file \"/home/nicolas/src/cl-freetv/var/xmltv.xml\" (cxml-dom:make-dom-builder) :validate t)
") #<NULL-LEXENV>)
 21: ((LAMBDA NIL))
 22: ((SB-PCL::FAST-METHOD SWANK-BACKEND:CALL-WITH-DEBUGGER-HOOK (T T)) #<unused argument> #<unused argument> #<FUNCTION SWANK:SWANK-DEBUGGER-HOOK> #<CLOSURE (LAMBDA NIL) {AD67F75}>)


but with the XML validator (http://www.stg.brown.edu/service/xmlvalid/)
the result is the document is valid

so i try without validate argument :

CL-USER> (cxml:parse-file "/home/nicolas/src/cl-freetv/var/xmltv.xml" (cxml-dom:make-dom-builder))

and the error :

Document not well-formed: Bad nesting. "category" / (:ETAG "programme")
Context:
  Line 19659, column 15 in file://+/home/nicolas/src/cl-freetv/var/xmltv.xml

   [Condition of type CXML:WELL-FORMEDNESS-VIOLATION]

Restarts:
  0: [ABORT-REQUEST] Abort handling SLIME request.
  1: [TERMINATE-THREAD] Terminate this thread (#<THREAD "repl-thread" {B322659}>)

Backtrace:
  0: (CXML::%ERROR CXML:WELL-FORMEDNESS-VIOLATION #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)) "Document not well-formed: Bad nesting. \"category\" / (:ETAG \"programme\")")
  1: (CXML::%ERROR CXML:WELL-FORMEDNESS-VIOLATION #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)) "Document not well-formed: Bad nesting. \"category\" / (:ETAG \"programme\")")
  2: (CXML::WF-ERROR #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)) "Bad nesting. ~S / ~S" "category" (:ETAG "programme"))
  3: (CXML::WF-ERROR #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)) "Bad nesting. ~S / ~S")
  4: (CXML::P/ELEMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
  5: (CXML::P/CONTENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
  6: (CXML::P/ELEMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
  7: (CXML::P/CONTENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
  8: (CXML::P/ELEMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)))
  9: (CXML::P/DOCUMENT #S(CXML::ZSTREAM :TOKEN-CATEGORY NIL :TOKEN-SEMANTIC NIL :INPUT-STACK (#<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]>)) #<RUNE-DOM::DOM-BUILDER {AC29D31}> :VALIDATE NIL :DTD NIL :ROOT NIL :ENTITY-RESOLVER NIL :DISALLOW-INTERNAL-SUBSET NIL :RECODE T)
 10: (CXML::PARSE-XSTREAM #<RUNES:XSTREAM [main document :MAIN file://+/home/nicolas/src/cl-freetv/var/xmltv.xml]> #<RUNE-DOM::DOM-BUILDER {AC29D31}>)
 11: (CXML::CALL-WITH-OPEN-XFILE #<CLOSURE (LAMBDA (CXML::INPUT)) {AC29D65}> "/home/nicolas/src/cl-freetv/var/xmltv.xml")
 12: (SB-INT:EVAL-IN-LEXENV (CXML:PARSE-FILE "/home/nicolas/src/cl-freetv/var/xmltv.xml" (RUNE-DOM:MAKE-DOM-BUILDER)) #<NULL-LEXENV>)



so i don't really understand the problem.
could you help me to solve it ?

the XML file could be find there :

http://xmltvfree.free.fr/xmltv.xml.gz

and the DTD attached to this mail

thanks for any help

-------------- next part --------------
A non-text attachment was scrubbed...
Name: xmltv.dtd
Type: application/octet-stream
Size: 22070 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/cxml-devel/attachments/20060213/79032e91/attachment.obj>
-------------- next part --------------

--
Nicolas Lamirault




More information about the cxml-devel mailing list