Я пытаюсь проверить XML файл на несколько разных схем (извинения за надуманный пример):
- a.xsd
- b.xsd
- c.xsd
c.xsd в частности импортирует b.xsd и b.xsd импортирует a.xsd, используя:
<xs:include schemaLocation="b.xsd"/>
Я пытаюсь сделать это через Xerces следующим образом:
XMLSchemaFactory xmlSchemaFactory = new XMLSchemaFactory();
Schema schema = xmlSchemaFactory.newSchema(new StreamSource[] { new StreamSource(this.getClass().getResourceAsStream("a.xsd"), "a.xsd"),
new StreamSource(this.getClass().getResourceAsStream("b.xsd"), "b.xsd"),
new StreamSource(this.getClass().getResourceAsStream("c.xsd"), "c.xsd")});
Validator validator = schema.newValidator();
validator.validate(new StreamSource(new StringReader(xmlContent)));
но это не позволяет импортировать все три схемы правильно, в результате чего невозможно разрешить имя "бла" для компонента (n) "group".
Я успешно проверил это с помощью Python, но имел реальные проблемы с Java 6.0 и Xerces 2.8.1. Кто-нибудь может предположить, что здесь происходит, или более простой подход для проверки моих XML-документов?