[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