Как использовать API проверки Stax2 для схемы W3 - PullRequest
3 голосов
/ 06 августа 2010

Я использую com.ctc.wstx.stax.WstxOutputFactory для генерации XML. Я использую wstx-asl-3.2.4

Мне нужно начать проверку сгенерированного XML по схеме W3.

Когда я создаю экземпляр org.codehaus.stax2.validation.XMLValidationSchemaFactory вот так

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

Я получаю ошибку

javax.xml.stream.FactoryConfigurationError: не указан или не доступен класс реализации XMLValidationSchemaFactory (через системное свойство 'org.codehaus.stax2.validation.XMLValidationSchemaFactory.w3c' или определение службы в разделе 'META-INF / services / org.codehaus .stax2.validation.XMLValidationSchemaFactory.w3c ') в org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance (XMLValidationSchemaFactory.java:208) в org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance (XMLValidationSchemaFactory.java:98)

Я вижу, что woodstox поставляется только с анализатором DTD. Я нашел эту статью который содержит бесполезную инструкцию

  1. Получите экземпляр XMLValidationSchemaFactory, который знает, как анализировать схемы нужного вам типа (для этого примера RelaxNG == rng).

Я просматривал Sun Multi-Schema XML Validator , который должен содержать биты, необходимые для установки на фабрику XMLSchemaValidation.

Похоже, я мог бы использовать com.sun.msv.reader.xmlschema.XMLSchemaReader написать свой собственный экземпляр XMLValidationSchemaFactory и заставить его работать таким образом.

Мой вопрос; мне действительно нужно это сделать, или существует уже существующая фабрика схем w3c, которую мне не удалось найти?

Возможно, было бы проще проверить XML после того, как я его сгенерировал.

Какие взгляды на это?

1 Ответ

3 голосов
/ 06 августа 2010

Я обновился до Woodstox 4.0.8, W3CSchemaFactory поставляется в комплекте и все хорошо.

...