[jdom-interest] Validation using schemas, how?

Travers Waker traversw at innoforge.co.za
Fri Sep 8 04:27:03 PDT 2000


Hi Jdom mailing list subscribers.

I'm struggling with validating with schemas using JDOM.  I'm  trying to get
a simple-as-can be schema to validate a simple-as-can-be XML doc.  I've
included what I think should work

I'm expecting this minimal test program to throw an exception because the
contents of <tag> is 1, and I thought I was constraining it to being an
integer >= 2 in test.xsd.  It doesn't behave like I expected (no Exception
is thrown).  Also, when I call "new SAXBuilder(true)" with my code like it
is, I get a message saying I must define the <tag> element.  specifying a
dtd sorts that out, but surely one doesn't have to use both a dtd and a
schema for validation - a schema on its own should be acceptable too.

BTW, the latest complete download of Jdom in the CVS repository does not
seem to be complete.  The jdom-complete.zip I downloaded wouldn't build
becasue it didn't have Ant and Xerces in the lib directory.

I feel a bit bad about this post because it's more a newbie request for help
than a contribution towards the coding of Jdom.  Maybe it's time for a
jdom-help mailing list.

Thanks to anyone who can help.

Travers

File: test.xml

  <!DOCTYPE tag>
  <tag
    xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"
    xsi:schemaLocation="file://test.xsd">1</tag>

File: test.xsd

  <schema xmlns="http://www.w3.org/1999/XMLSchema">

  <dataType name="limitedInt">
    <basetype name="integer"/>
    <minInclusive>2</minInclusive>
  </dataType>

  <elementType name="tag">
    <datatypeRef name="limitedInt">
  </elementType>

File: JdomTest.java

package tests.jdom;
import java.io.File;
import org.jdom.*;
import org.jdom.input.*;

class JdomTest {

  public static void main(String[] args) throws Exception {

    SAXBuilder builder = new SAXBuilder();  // SHOULD THIS HAVE "true" ARG
FOR SCHEMA VALIDATION?
    Document doc = builder.build(new File("test.xml"));

    Element currentElement = doc.getRootElement();
    String content = currentElement.getContent();

    System.out.println("The <tag> field contains: " + content);
  }
}






More information about the jdom-interest mailing list