【问题标题】:Type namespace is not declared or is not a simple type类型命名空间未声明或不是简单类型
【发布时间】:2016-02-10 20:34:05
【问题描述】:

我正在尝试使用在一个模式文件中定义的类型并在另一个模式文件中使用它。我相信格式是正确的,但我在验证时一直收到相同的错误消息。

主架构文件

<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="urn:deliverableNamespace" xmlns:mstns="urn:deliverableNamespace" attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:deliverableNamespace">
<xs:include schemaLocation="ManageDeliverableLookup.xsd" />
 <xs:element name="GEMS">
  <xs:complexType>
   <xs:sequence>
    <xs:element name="header">
      <xs:complexType>
        <xs:sequence>
          <xs:element name="token" type="xs:string" />
          <xs:element name="timestamp" type="xs:string" />
          <xs:element name="system">
            <xs:complexType>
              <xs:attribute name="id" type="SystemIdLkup" use="required"/>
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:complexType>
    </xs:element>
   </xs:sequence>
  </xs:complexType>
 </xs:element>
</xs:schema>

第二个架构文件

<?xml version="1.0" encoding="utf-8"?>
    <xs:schema id="ManageDeliverableLookup" targetNamespace="urn:deliverableNamespace" elementFormDefault="unqualified" attributeFormDefault="unqualified" xmlns="urn:deliverableNamespace" xmlns:mstns="urn:deliverableNamespace" xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:simpleType name="SystemIdLkup">
     <xs:restriction base="xs:string" >
      <xs:enumeration value="3"/>
      <xs:enumeration value="4"/>
      <xs:enumeration value="5"/>
      <xs:enumeration value="16"/>
      <xs:enumeration value="18"/>
      <xs:enumeration value="56"/>
      <xs:enumeration value="150"/>
      <xs:enumeration value="151"/>
    </xs:restriction>

  </xs:simpleType>
</xs:schema>

【问题讨论】:

  • XSD 本身没有问题。请发布您的 XML 以及您是否希望更改 XSD 或 XML 以使 XML 有效。谢谢。
  • 另外,您能否发布“验证时出现相同的错误消息”?谢谢

标签: xml xsd schema xsd-validation


【解决方案1】:

随便看看就知道了,这可能无法解决您的问题,但可能会帮助您更接近:您的目标命名空间在两个 XSD 中的值相同。它们应该是不同的,因为目标命名空间代表当前文档中声明的元素。您有两个文档,因此需要两个目标命名空间。

【讨论】:

    猜你喜欢
    • 2017-02-11
    • 2016-08-06
    • 2020-03-06
    • 2013-03-25
    • 1970-01-01
    • 2020-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多