【发布时间】:2011-04-03 06:25:06
【问题描述】:
使用最新的 JAXB (Sun) 并具有架构层次结构,这些架构在架构之间使用导入指令来共享类型定义。在 JAXB 中对 Marshaller/Unmarshaller 的 setSchema 调用上激活模式验证,这应该将验证推迟到 Xerces(使用 Java 1.5)。使用 SchemaFactory 创建 Schema 对象时,我不想知道模式之间导入指令的顺序。不幸的是,我还没有找到允许这样做的 Xerces 功能/属性。例如,如果通过导入将 a.xsd 拉入 b.xsd,则以下代码不起作用:
FileInputStream a = new FileInputStream("a.xsd");
FileInputStream b = new FileInputStream("b.xsd");
Schema schema = SchemaFactory.newInstance(
XMLConstants.W3C_XML_SCHEMA_NS_URI).newSchema(
new Source[] {
new StreamSource(b),
new StreamSource(a)
}
);
Source 数组的顺序必须是 a.xsd 然后 b.xsd。有什么办法吗?
【问题讨论】:
标签: java validation xsd jaxb