Sunday, 18 August 2013

XML validation against many XSD's of inocrrect XML doc not report any errors in Java?

XML validation against many XSD's of inocrrect XML doc not report any
errors in Java?

I am validating an XML doc in Java with Xerces, but don't get any errors.
However, the XML doc contains errors and when I validate it with for
example XMLSply editor, the errors are correctly reported.
I can't find what I am doing wrong. I think I do include all XSD schemas
that are required to validate correctly.
Please some advice? The code snippet:
SchemaFactory factory =
SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
factory.setErrorHandler(new ErrorHandlerDefault());
Schema schema = factory.newSchema(createSchemaSources());
validator = schema.newValidator().validate("file.xml";
The XSD's that I use to validate:
private Source[] createSchemaSources() throws IOException {
Source[] sources = new Source[5];
sources[0] =
createSource("http://www.nltaxonomie.nl/7.0/domein/bd/tuples/bd-bedr-tuples.xsd");
sources[1] =
createSource("http://www.nltaxonomie.nl/7.0/domein/bd/tuples/bd-bedr-tuples.xsd");
sources[2] =
createSource("http://www.nltaxonomie.nl/7.0/domein/bd/tuples/bd-burg-tuples.xsd");
sources[3] =
createSource("http://www.nltaxonomie.nl/7.0/basis/sbr/types/nl-types.xsd");
sources[4] =
createSource("http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd");
return sources;
}
A small snippet of the xml file being validated (too big to list all):
<bd-burgers:CommutingExpensesDaysPerWeekCount unitRef="uu_513"
contextRef="cc_711">2</bd-burgers:CommutingExpensesDaysPerWeekCount>
This entry contains an error, namely:
Numeric item <bd-burgers:CommutingExpensesDaysPerWeekCount> has neither a
'precision' nor a 'decimals' attribute.
This is correctly reported by XMLSpy but not by my Java code :(... So what
am I doing wrong here? I though I was forgetting an XSD file, but
"CommutingExpensesDaysPerWeekCount" is defined in
"http://www.nltaxonomie.nl/7.0/basis/bd/items/bd-burgers.xsd", that is
contained int he above xsd's, that corresponds to the type
"nonNegativeIntegerItemType" contained in
"http://www.nltaxonomie.nl/7.0/basis/sbr/types/nl-types.xsd", also
contained in the xsd's above, and that extends "monetaryItemType" and is
defined in "http://www.xbrl.org/2003/xbrl-instance-2003-12-31.xsd", which
xsd is also contained in the above validation.
Any idea why my Java validation not reports any errors?
BTW: it does report an error if I change the above XML snippet in:
<bd-burgers:CommutingExpensesAccordingToTableTotalAmount>841.0</bd-burgers:CommutingExpensesAccordingToTableTotalAmount>
That is: removing all attributes. I then get a correct Validation error
saying that the contextRef is missing.

No comments:

Post a Comment