[jdom-interest] Is JDOM schema checking when it shouldn't be?

Brett McLaughlin brett.mclaughlin at lutris.com
Wed Jun 14 13:09:45 PDT 2000


Elliotte Rusty Harold wrote:
> 
> Here's a weird one I encountered while trying to track down a bug. It's
> almost certainly a problem inherited from the xerces.jar JDOM bundles.
> Consider this simple well-formed but invalid document:
> 
> <test xmlns="http://www.jdom.org/">

Shoot - yes, this is Xerces doing its thing... which of course is sort
of crummy. We haven't moved our xerces.jar to 1.1, which supposedly
implements 4/7 of Schema, which uses xsi:schemaLocation instead of this
outdated reference... I'll see if Jason or I can get that fixed today,
and ensure nothing breaks with a newer Xerces.

-Brett

> </test>
> 
> When I tried to parse this with a SAXBuilder, JDOM actually attempted to
> connect to http://www.jdom.org/ and parse the document it found there.
> Naturally, since that document is HTML and not XML I got errors:
> 
> D:\speaking\xmldevcon\jdom\examples>java Validator test.xml
> [Error] :1:7: Element type "html" must be declared.
> [Error] :2:7: Element type "head" must be declared.
> [Error] :3:8: Element type "title" must be declared.
> [Error] :4:18: Attribute "http-equiv" must be declared for element type
> "meta".
> [Error] :4:41: Attribute "content" must be declared for element type
> "meta".
> [Error] :4:73: Element type "meta" must be declared.
> [Fatal Error] :5:7: The element type "meta" must be terminated by the
> matching end-tag "</meta>".
> test.xml is not valid.
> null: null
> 
> There's no reason for the parser to try to download the document at a
> namespace URI, near as I can figure, unless perhaps it's some weird
> Xerces behavior with regard to schemas.
> 
> Here's the class that tried to parse the file:
> 
> import org.jdom.JDOMException;
> import org.jdom.input.SAXBuilder;
> 
> public class Validator {
> 
>   public static void main(String[] args) {
> 
>     if (args.length == 0) {
>       System.out.println("Usage: java Validator URL1 URL2...");
>     }
> 
>     SAXBuilder builder = new SAXBuilder(true);
>                              /*         ^^^^       */
>                              /* Turn on validation */
>     // start parsing...
>     // start parsing...
>     for (int i = 0; i < args.length; i++) {
> 
>       // command line should offer URIs or file names
>       try {
>           builder.build(args[i]);
>         // If there are no well-formedness errors,
>         // then no exception is thrown
>         System.out.println(args[i] + " is well formed.");
>       }
>       catch (JDOMException e) { // indicates an error
>         System.out.println(args[i] + " is not valid.");
>         System.out.println(e.getMessage());
>       }
> 
>     }
> 
>   }
> 
> }
> 
> I'm still trying to track down the details, but using the default
> namespace on the root element seems to be a fruitful source of bugs.
> 
> This occurs with Xerces 1.0.3 and with whichever version of Xerces is
> distributed with JDOMb4. Upgrading to Xerces 1.1.0 fixes the problem.
> 
> --
> +-----------------------+------------------------+-------------------+
> | Elliotte Rusty Harold | elharo at metalab.unc.edu | Writer/Programmer |
> +-----------------------+------------------------+-------------------+
> |               Java I/O (O'Reilly & Associates, 1999)               |
> |            http://metalab.unc.edu/javafaq/books/javaio/            |
> |   http://www.amazon.com/exec/obidos/ISBN=1565924851/cafeaulaitA/   |
> +----------------------------------+---------------------------------+
> |  Read Cafe au Lait for Java News:  http://metalab.unc.edu/javafaq/ |
> |  Read Cafe con Leche for XML News: http://metalab.unc.edu/xml/     |
> +----------------------------------+---------------------------------+
> _______________________________________________
> To control your jdom-interest membership:
> http://lists.denveronline.net/mailman/options/jdom-interest/youraddr@yourhost.com

-- 
Brett McLaughlin
Enhydra Strategist
Lutris Technologies
1200 Pacific Avenue
Santa Cruz, CA  95060



More information about the jdom-interest mailing list