导入命名空间 - 无法将名称解析为(n)'类型定义'零件

时间:2015-03-31 15:31:35

标签: xml xsd xsd-validation

上下文:我使用Eclipse生成xsd文件。我的所有.xsd文件都在一个位置 - 项目/目录。

问题:当xsd没有引用/导入具有不同目标命名空间的其他xsd时,一切正常。但是,当下面的xsd(使用namespace="http://www.example.org/experimento")从另一个命名空间(lugar_experimento.xsd)导入另一个xsd namespace="http://www.example.org/lugar_experimento"时,我收到以下错误:

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:'to'我希望使用以下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>

我做错了什么?你有什么简单的例子吗?

1 个答案:

答案 0 :(得分:3)

experimento.xsd中,更改此内容:

xmlns:lugar="http://www.example.org/lugar_experimento"

为:

xmlns:lugar="http://www.example.org/lugar"

问题是名称空间URI ^^。

之间的区别