XSD错误:不允许从此架构引用无命名空间中的组件

时间:2017-12-19 19:28:37

标签: xml xsd xml-namespaces xsd-validation xml-validation

以下是我的XML Schema,后跟我要验证的.xml文件。

我继续收到错误

  

元素'{http://www.w3.org/2001/XMLSchema}元素',属性'type':不允许从此模式引用到无命名空间中的组件,因为未由import语句指示。

我是这方面的新手,我对使用命名空间的理解是创建“全局”类型,例如我在全球范围内重复使用的复杂类型“OneType”。

我的样式表:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:tns="test/namespace" targetNamespace="test/namespace"
            elementFormDefault="qualified">
  <xsd:complexType name="OneType">
    <xsd:annotation>
       <xsd:documentation>One Test</xsd:documentation>
    </xsd:annotation>
    <xsd:choice>
      <xsd:element name="One"/>
    </xsd:choice>
  </xsd:complexType>

  <xsd:element name="testroot">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="Test" type="OneType"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

我的XML:

<?xml version="1.0" encoding="UTF-8"?>
<tns:testroot xmlns:tns="test/namespace">
  <tns:Test>
    <tns:One/>
  </tns:Test>
</tns:testroot>

1 个答案:

答案 0 :(得分:2)

替换

    <xsd:element name="Test" type="OneType"/>

    <xsd:element name="Test" type="tns:OneType"/>

然后您的XSD将没有错误,您的XML将对您的XSD有效。