3

我正在使用com.ctc.wstx.stax.WstxOutputFactory来生成 XML。我正在运行 wstx-asl-3.2.4

我需要开始针对 W3 Schema 验证生成的 XML。

当我像这样创建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) 在 org.codehaus.stax2.validation.XMLValidationSchemaFactory.newInstance(XMLValidationSchemaFactory.java:98) 的验证.XMLValidationSchemaFactory.w3c')

我可以看到woodstox 只捆绑了一个DTD 解析器。我发现这篇文章 包含无用的说明

  1. 获取一个 XMLValidationSchemaFactory 的实例,该实例知道如何解析您需要的类型的模式(本例中为 RelaxNG == rng)。

我一直在研究Sun Multi-Schema XML Validator,它应该包含连接到 XMLSchemaValidation 工厂所需的位。

看起来我可以使用com.sun.msv.reader.xmlschema.XMLSchemaReader 来编写我自己的 XMLValidationSchemaFactory 实例并让它以这种方式工作。

我的问题是;我真的必须这样做吗,还是我找不到预先存在的 w3c 模式工厂?

也许在我生成XML之后验证它会更简单。

对此有何看法?

4

1 回答 1

3

我已经升级到 Woodstox 4.0.8,W3CSchemaFactory 捆绑在一起,一切都很好。

于 2010-08-06T13:33:54.833 回答