Я пытаюсь разобрать загрузку довольно сложной схемы XML в объект Schema в Java, чтобы я мог выполнить некоторую проверку сообщений XML.
Мой код выглядит примерно так:
SchemaFactory factory = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Schema schema = factory.newSchema(new StreamSource(new File("schema/schema.xsd")));
Моя схема имеет несколько импортов:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="base_1">
<xs:import namespace="base_1" schemaLocation="common/MessageBase.xsd"/>
</xs:schema>
... и т.д.. Когда я пытаюсь загрузить схему, я получаю много ошибок. Основываясь на еще одном вопросе, связанном с этим, похоже, мне нужно указать определитель ресурсов, но разве это не то, что должно обрабатываться по умолчанию?
Если так, есть ли конкретный каталог, в который мне нужно поместить схему относительно места, где я запускаю приложение, которое я пишу, или относительно файла базовой схемы?
Наконец, когда я загружаю схему с помощью XMLSpy или аналогичного, она работает нормально, и я могу без проблем проверять экземпляры XML.