我有一个带有以下标头定义的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
)必须与包含架构的targetNamespace相同,目前为vdv453ger
。
它抱怨命名空间不同。如何解决这个问题?
答案 0 :(得分:2)
错误消息告诉我有一个你没有告诉我们的xsd:include元素。使用xsd:import导入不同名称空间的模式文档,使用xsd:include作为同一名称空间的模式文档。