views:

31

answers:

1

I am using com.ctc.wstx.stax.WstxOutputFactory to generate XML. I am running wstx-asl-3.2.4

I need to start validating the generated XML against a W3 Schema.

When I create an instance of org.codehaus.stax2.validation.XMLValidationSchemaFactory like this

private final static XMLValidationSchemaFactory xsdFact= XMLValidationSchemaFactory.newInstance(XMLValidationSchema.SCHEMA_ID_W3C_SCHEMA);

I get the error

javax.xml.stream.FactoryConfigurationError: No XMLValidationSchemaFactory implementation class specified or accessible (via system property 'org.codehaus.stax2.validation.XMLValidationSchemaFactory.w3c', or service definition under 'META-INF/services/org.codehaus.stax2.validation.XMLValidationSchemaFactory.w3c') at org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:208) at org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:98)

I can see that woodstox is bundled with a DTD parser only. I found this article which contains the unhelpful instruction

  1. Get an instance of XMLValidationSchemaFactory that knows how to parse schemas of the type you need (RelaxNG == rng for this example).

I have been looking at the Sun Multi-Schema XML Validator which is supposed to contain the bits necessary to bolt on to the XMLSchemaValidation factory.

It looks like I might be able to use com.sun.msv.reader.xmlschema.XMLSchemaReader to write my own instance of XMLValidationSchemaFactory and get it to work this way.

My question is; do I really have to do this, or is there a pre-existing w3c schema factory that I have failed to find?

Perhaps it would be simpler just to validate the XML after I have generated it.

What are the views on this ?

+1  A: 

I've upgraded to Woodstox 4.0.8, W3CSchemaFactory comes bundled and its all good.

Ben Hammond
Yes; sorry for late response byt XML Schema support was just added in 4.0. 3.2 did support RelaxNG using MSV, as well as native DTD validation, but not yet XML Schema.
StaxMan