XML targetNamespace和元素的非限定声明

时间:2011-10-12 17:19:28

标签: xml xsd xml-validation xsd-validation

我对XML模式中的targetNamespace属性如何影响元素的命名感到困惑。我收到错误验证以下内容:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="test" version="1.0">
    <xs:element name="testType" type="testType"/>
    <xs:complexType name="testType">
        <xs:sequence>
            <xs:element name="testSubtype" type="testSubType" />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="testSubType">
        <!-- some fields -->
    </xs:complexType>
</xs:schema>

XMLSpy正在陈述Cannot resolve the unqualified declaration or definition 'testSubType'.我该如何解决这个问题?我需要保留targetNamespace属性。我尝试在各个方面将testSubType更改为test:testSubType,但这似乎不起作用。

1 个答案:

答案 0 :(得分:6)

xmlns="test"属性添加到schema元素,以声明此架构的默认命名空间为“test”或添加xmlns:t="test"以声明t是“{1}}的前缀测试“命名空间并在引用您在此命名空间中定义的类型时使用type=t:testSubType之类的前缀(您通过将test称为targetNamespace来执行此操作)。