[cxml-devel] validating XML: document

David Lichteblau david at lichteblau.com
Wed Jul 11 14:33:29 UTC 2012


Hi,

Quoting Alexandre Rademaker (arademaker at gmail.com):
> I need to validate a XML file that doesn't have the doctype
> declaration. Actually, I don't control how the XML files are created
> so I am not able to change the fact that those files don't have
> doctype declarations. My problem is how to validate does files agains
> a DTD. I found at http://common-lisp.net/project/cxml/sax.html#parser
> that the correctly way should be:
> 
> > (let ((d (cxml:parse-file "0675365413696898.xml" (cxml-dom:make-dom-builder)))
> 	       (x (cxml:parse-dtd-file "LMPLCurriculo.DTD")))
> 	   (dom:map-document (cxml:make-validator x #"CURRICULO-VITAE") d))
> 
> But that gives me two warnings and return a NIL
> 
> Warning: deprecated SAX default method used by a handler that is not a
>          subclass of SAX:ABSTRACT-HANDLER or HAX:ABSTRACT-HANDLER
> Warning: deprecated SAX default method used by a handler that is not a
>          subclass of SAX:ABSTRACT-HANDLER or HAX:ABSTRACT-HANDLER
> NIL
> 
> It seems to work. I also tried with an invalid XML and the code fired
> an error! Nevertheless, what are bothering me are does warnings!! Any
> idea?

sorry for the late response.  The warnings are a cxml bug I haven't
fixed yet (sorry about that, too :-)).  Until then, my recommendation is
to use the following workaround:

(handler-bind ((warning #'muffle-warning))
  ...)

around the call to map-document to suppress the warnings and any related
performance issues.


Best regards
d.




More information about the cxml-devel mailing list