XMLを生成するためにcom.ctc.wstx.stax.WstxOutputFactoryを使用しています。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のサービス定義を介して)。 org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:208)at org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:98)のvalidation.XMLValidationSchemaFactory.w3c')
woodstoxにはDTDパーサーのみがバンドルされていることがわかります。 役に立たない指示が含まれているこの記事を見つけました
- 必要なタイプのスキーマを解析する方法を知っているXMLValidationSchemaFactoryのインスタンスを取得します(この例ではRelaxNG == rng)。
XMLSchemaValidationファクトリにボルトオンするために必要なビットが含まれているはずのSunMulti-SchemaXMLValidatorを見てきました。
com.sun.msv.reader.xmlschema.XMLSchemaReaderを使用 してXMLValidationSchemaFactoryの独自のインスタンスを記述し、このように機能させることができるようです。
私の質問は; 本当にこれを行う必要がありますか、それとも私が見つけられなかった既存のw3cスキーマファクトリがありますか?
おそらく、XMLを生成した後でXMLを検証する方が簡単でしょう。
これについての見解は何ですか?