JAXB SchemaFactory源命令必须遵循模式之间的导入顺序吗?

Mat*_*ell 9 java validation xsd jaxb

使用最新的JAXB(Sun)并具有模式层次结构,这些模式在模式之间使用导入指令来共享类型定义.在JAXB中对Marshaller/Unmarshaller的setSchema调用中激活了模式验证,这应该将验证推迟到Xerces(使用Java 1.5).在使用SchemaFactory创建Schema对象时,我不想知道模式之间的import指令的顺序.不幸的是,我还没有找到允许这个的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) 
      }
   );
Run Code Online (Sandbox Code Playgroud)

Source数组的顺序必须是a.xsd然后是b.xsd.有什么方法吗?

bdo*_*han 6

如果在根源上创建模式,然后设置ResourceResolver(LSResourceResolver)以在模式创建期间解析其他导入的模式,该怎么办?