[jdom-interest] JDOM SAXBuilder validation schema with Java

Christian Avril christian.avril at dpma.finances.gouv.fr
Mon Dec 27 07:12:38 PST 2004


JDOM SAXBuilder validation schema
-----------------------------------------------------
Does somebody know if we are obliged to mention the name of the schema xsd just inside of the file XML ?
OR if we can place it only in the program Java ?

--------------------
For example in Java,
--------------------
when I use only the builder.setFeature() ... it'works very well, because the name and the path of the schema xsd 
is already written in the XML file, and I don't need to use the builder.setProperty()  : 
---------------------------------------------------
...

    SAXBuilder builder =  new SAXBuilder("org.apache.xerces.parsers.SAXParser", true);
    builder.setFeature("http://apache.org/xml/features/validation/schema", true);
    // builder.setProperty("http://apache.org/xml/properties/schema/external-schemaLocation",
    //                    "file:///C:/Projets/Jdom-1-0/xml/countries.xsd");

...    
--------------------------
File countries.xml
--------------------------
<?xml version="1.0" encoding="UTF-8"?>
<countries xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="countries.xsd">     <!-- the name of my schema is in the file XML ! -->
 <country name="England" capital="London"/>
 <country name="Wales" capital="Cardiff"/>
 <country name="Scotland" capital="Edinburgh"/>
</countries>

--------------------------
File countries.xsd
--------------------------
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 <xs:element name="countries">
  <xs:complexType>
   <xs:sequence minOccurs="0" maxOccurs="unbounded">
    <xs:element ref="country"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
 <xs:element name="country">
  <xs:complexType>
   <xs:attribute name="name" type="xs:string" use="required"/>
   <xs:attribute name="capital" type="xs:string" use="required"/>
  </xs:complexType>
 </xs:element>
</xs:schema>



But, if I don't want to have the name of the schema reference into the XML file, but only in the java program, 
how Can I do ? I think I need the builder.setProperty() 
But if I delete the name of the schema from the XML file, I have the error : 
------------------
Error on line 3 of document file:///C:/Projets/Jdom-1-0/xml/countries.xml: 
cvc-elt.1: Cannot find the declaration of element 'countries'.

And I know there is no problem with the path C:/Projets/Jdom-1-0/xml/countries.xml

Can somebody help ?

Thank's in advance
I hope this problem can help somebody

Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.jdom.org/pipermail/jdom-interest/attachments/20041227/d709c0a7/attachment.htm


More information about the jdom-interest mailing list