Использование последней версии JAXB (Sun) и иерархия схем, которые используют директивы импорта между схемами для совместного использования определений типов. Проверка схемы активируется при вызове setSchema к Marshaller / Unmarshaller в JAXB, который должен отложить проверку до Xerces (используя Java 1.5). Я не хочу знать порядок директив импорта между схемами при создании объекта Schema с SchemaFactory. К сожалению, я не нашел возможности / свойства 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. Есть ли способ обойти это?
Что делать, если вы создаете схему в корневом источнике, а затем устанавливаете ResourceResolver (LSResourceResolver) для разрешения других импортированных схем во время создания схемы.