导入命名空间 - 无法将名称解析为 (n) 'type definition' 组件
Import namespace - Cannot resolve the name to a(n) 'type definition' component
上下文:我正在使用 Eclipse 生成 xsd 文件。我所有的 .xsd 文件都在一个位置 - Project/ 目录。
问题:当 xsd 不 reference/import 其他 xsd 具有不同的目标命名空间时,一切正常。但是,当下面的 xsd(带有 namespace="http://www.example.org/experimento"
)从不同的命名空间 (namespace="http://www.example.org/lugar_experimento"
) 导入另一个 xsd lugar_experimento.xsd
时,我收到以下错误:
Cannot resolve the name xxx to a(n) 'type definition' component.
这是我的 XSD (experimento.xsd
):
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/experimento"
xmlns:tns="http://www.example.org/experimento"
xmlns:lugar="http://www.example.org/lugar_experimento"
elementFormDefault="qualified">
<xsd:import schemaLocation="lugar_experimento.xsd" namespace="http://www.example.org/lugar_experimento"/>
<xsd:complexType name="experimento">
<xsd:sequence>
<xsd:element name="identificador" type="xsd:string" />
<xsd:element name="lugar" type="lugar:tipoRefGeografica"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
我想使用以下 XSD:' 到 '我想使用以下 XSD(保存在 lugar_experimento.xsd
):
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/lugar"
xmlns:tns="http://www.example.org/lugar"
elementFormDefault="qualified">
<xsd:complexType name="tipoRefGeografica">
<xsd:choice>
<xsd:element name="W3Cgeo" type="tns:tipoW3Cgeo" />
<xsd:element name="kml" type="tns:tipoKml" />
</xsd:choice>
</xsd:complexType>
<xsd:simpleType name="tipoKml">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d\.{0,1}\d*\s\d+\.{0,1}\d*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="tipoW3Cgeo">
<xsd:sequence>
<xsd:element name="lat" type="xsd:decimal" />
<xsd:element name="long" type="xsd:decimal" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
我做错了什么?你有什么简单的例子吗?
在 experimento.xsd
中,更改为:
xmlns:lugar="http://www.example.org/lugar_experimento"
至:
xmlns:lugar="http://www.example.org/lugar"
问题是命名空间 URI 之间的差异 ^^。
上下文:我正在使用 Eclipse 生成 xsd 文件。我所有的 .xsd 文件都在一个位置 - Project/ 目录。
问题:当 xsd 不 reference/import 其他 xsd 具有不同的目标命名空间时,一切正常。但是,当下面的 xsd(带有 namespace="http://www.example.org/experimento"
)从不同的命名空间 (namespace="http://www.example.org/lugar_experimento"
) 导入另一个 xsd lugar_experimento.xsd
时,我收到以下错误:
Cannot resolve the name xxx to a(n) 'type definition' component.
这是我的 XSD (experimento.xsd
):
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/experimento"
xmlns:tns="http://www.example.org/experimento"
xmlns:lugar="http://www.example.org/lugar_experimento"
elementFormDefault="qualified">
<xsd:import schemaLocation="lugar_experimento.xsd" namespace="http://www.example.org/lugar_experimento"/>
<xsd:complexType name="experimento">
<xsd:sequence>
<xsd:element name="identificador" type="xsd:string" />
<xsd:element name="lugar" type="lugar:tipoRefGeografica"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
我想使用以下 XSD:' 到 '我想使用以下 XSD(保存在 lugar_experimento.xsd
):
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/lugar"
xmlns:tns="http://www.example.org/lugar"
elementFormDefault="qualified">
<xsd:complexType name="tipoRefGeografica">
<xsd:choice>
<xsd:element name="W3Cgeo" type="tns:tipoW3Cgeo" />
<xsd:element name="kml" type="tns:tipoKml" />
</xsd:choice>
</xsd:complexType>
<xsd:simpleType name="tipoKml">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d\.{0,1}\d*\s\d+\.{0,1}\d*"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="tipoW3Cgeo">
<xsd:sequence>
<xsd:element name="lat" type="xsd:decimal" />
<xsd:element name="long" type="xsd:decimal" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
我做错了什么?你有什么简单的例子吗?
在 experimento.xsd
中,更改为:
xmlns:lugar="http://www.example.org/lugar_experimento"
至:
xmlns:lugar="http://www.example.org/lugar"
问题是命名空间 URI 之间的差异 ^^。