[jdom-interest] Another user with schema validation woes

Spencer Marks smarks at aveksa.com
Mon Jun 26 12:34:15 PDT 2006


>From searching this list and and others I see that validating an XML
instance with a Schema is not as simple as one would hope.

Here's my tale of woe:

My java code looks like this:

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-schema
Location",
       "http://www.w3.org/2001/12/soap-envelope soap-envelope.xsd" + " " +
       "http://www.aveksa.com/schema/system Condition.xsd " +
       "http://www.aveksa.com/schema/system EntitlementData.xsd");
        Document doc = builder.build(input.xml);


input.xml, Condition.xsd and EntitlementData.xsd all exist in the same
directory. 

When run this code I get:

 Exception in thread "main" org.jdom.input.JDOMParseException: Error on line
4 of document file:///Users/sam/temp.xml: cvc-elt.1: Cannot find the
declaration of element 'tns:entitlement-data'.
    at org.jdom.input.SAXBuilder.build(SAXBuilder.java:465)


I am trying to figure out why the "tns" namespace is not getting picked up
correctly.


My input.xml looks like this:

?xml version="1.0" encoding="UTF-8"?>
<!--Sample XML file generated by XMLSpy v2005 rel. 3 U
(http://www.altova.com)-->
<tns:entitlement-data xmlns:tns="http://www.aveksa.com/schema/system"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   
xsi:schemaLocation="http://www.aveksa.com/schema/system
EntitlementData.xsd">

 <entitlement-part>
         <resources>
            <resource fully-qualified-name="payroll_change"
name="payroll_change" />
         </resources>
...

EntitlementData.xsd looks  like this:


<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:tns="http://www.aveksa.com/schema/system"
    targetNamespace="http://www.aveksa.com/schema/system">

but has errors on a line 77 which is:

<xs:complexType name="EntUsers">
    <xs:sequence>
        <xs:element name="user" type="tns:EntUser" maxOccurs="unbounded"
minOccurs="1" />
    </xs:sequence>
</xs:complexType>

and line 88 which is:

<xs:element name="attribute-filter" type="tns:Condition"/>


Basically, it seems like the tns namespace is not being found or declared
correctly, but i am at loss as to why the java validation code does not
work. 
Sorry if this is repeat question, but I am stuck after quite a bit of
searching and talking to colleagues. Thanks in advance for any help.

Sam






More information about the jdom-interest mailing list