如何在XSD中使用XLink数据类型

时间:2018-03-28 12:34:59

标签: xml xsd xsd-validation xml-validation xlink

当我尝试使用xjc运行XSD文件时出现此错误:

  

解析组件' xlin:href'时出错。有人发现了这一点   ' xlin:HREF'在名称空间' http://www.w3.org'中,但来自的组件   此命名空间不能从架构文档"文件中引用   地址"也许是' xlin:href'的前缀需要改变。如果   这是正确的命名空间,然后是适当的导入'标签应该   被添加到"文件地址"

以下是代码:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="properties">
<xs:complexType>
  <xs:sequence>
    <xs:element name="property" maxOccurs="unbounded" minOccurs="0">
      <xs:complexType>
        <xs:simpleContent>
          <xs:extension base="xs:string">
            <xs:attribute type="xs:int" name="giataId" use="optional"/>
            <xs:attribute type="xs:dateTime" name="lastUpdate" use="optional"/>
            <xs:attribute ref="xlin:href" xmlns:xlin="http://www.w3.org/1999/xlink"/>
          </xs:extension>
        </xs:simpleContent>
      </xs:complexType>
    </xs:element>
  </xs:sequence>
  <xs:attribute type="xs:date" name="lastUpdate"/>
     </xs:complexType>
       </xs:element>
            </xs:schema>

1 个答案:

答案 0 :(得分:0)

要访问另一个命名空间中的任何XSD组件,您必须导入该命名空间。

在您的情况下,添加

<xs:import namespace="http://www.w3.org/1999/xlink" 
           schemaLocation="http://www.w3.org/1999/xlink.xsd"/>

到您的XSD以访问XLink组件。

以下是从XSD引用XLink组件(如href

)的一般指南
  1. 通常在xlink元素上声明xs:schema名称空间前缀:

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
               xmlns:xlink="http://www.w3.org/1999/xlink"
    
  2. 导入XLink XSD:

    <xs:import namespace="http://www.w3.org/1999/xlink" 
               schemaLocation="http://www.w3.org/1999/xlink.xsd"/>
    
  3. 引用所需的XLink组件:

    <xs:attribute ref="xlink:href" xmlns:xlin="http://www.w3.org/1999/xlink"/>