java xml SchemaFactory - загрузка схемы с импортом из разных пространств имен - PullRequest
1 голос
/ 25 января 2012

У меня есть схема xsd со следующим определением заголовка

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            targetNamespace="vdv453ger" 
            xmlns="vdv453ger" 
            xmlns:siri="http://www.siri.org.uk/siri" 
            elementFormDefault="unqualified" 
            attributeFormDefault="unqualified" 
            version="2.3e">

Этот файл импортирует другой файл xsd:

<xsd:import namespace="http://www.siri.org.uk/siri" 
            schemaLocation="siri-1.3/siri/siri_all-v1.2.xsd"/>

Импортированная схема xsd имеет другое пространство имен:

<xsd:schema xmlns="http://www.siri.org.uk/siri" 
            xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
            xmlns:acsb="http://www.ifopt.org.uk/acsb" 
            xmlns:ns1="http://datex2.eu/schema/1_0/1_0" 
            targetNamespace="http://www.siri.org.uk/siri" 
            elementFormDefault="qualified" 
            attributeFormDefault="unqualified" 
            version="1.2" 
            id="siri_all">

Когда я пытаюсь загрузить схему с помощью:

SchemaFactory sf = SchemaFactory.newInstance(W3C_XML_SCHEMA_NS_URI);
mySchema = sf.newSchema( fileUrla );

Исключение выдается:

org.xml.sax.SAXParseException: src-include.2.1: targetNamespace ссылочной схемы, в настоящее время http://www.siri.org.uk/siri, должно совпадать с таковым для включающей схемы, в настоящее время vdv453ger.

Он жалуется, что пространства имен разные. Как это исправить?

1 Ответ

2 голосов
/ 25 января 2012

Сообщение об ошибке подсказывает мне, что существует элемент xsd: include, о котором вы нам не сообщили.Используйте xsd: import для импорта документа схемы для другого пространства имен, xsd: include для документа схемы для того же пространства имен.

...