如何在XML中声明属性ID

前端之家收集整理的这篇文章主要介绍了如何在XML中声明属性ID前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一些 XML和XSD作为一项任务……
在我的XML中,我有一个名为a(非实际名称)的标签和名为id的属性.我的部分XML如下所示:
<a id="1">
    ...........
    </a>
    <a id="1">
    ............
    </a>

当我使用XSD验证时,它不会给出错误….

<xsd:attribute name="id" type="xsd:string" />

我试图使用xsd:ID作为属性id的数据类型,但它给了我一个错误;我无法弄清楚问题是什么.

我怎样才能做到这一点?

你应该回到使用type =“xsd:ID”.除了确保值是唯一的之外,它还允许您使用xsd:IDREF进行引用.

尝试使用xsd:ID时出现的错误是ID值必须以字母开头.如果您将ID更改为“ID-1”/“ID-2”或“a1”/“a2”,它将正常工作.

示例架构:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xsd:element name="doc">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element maxOccurs="unbounded" ref="a"/>
        <xsd:element maxOccurs="unbounded" ref="b"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="a">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="id" use="required" type="xsd:ID"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="b">
    <xsd:complexType>
      <xsd:simpleContent>
        <xsd:extension base="xsd:string">
          <xsd:attribute name="idref" use="required" type="xsd:IDREF"/>
        </xsd:extension>
      </xsd:simpleContent>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

示例XML:

<doc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="Untitled1.xsd">
  <a id="ID-1">
    ...........
  </a>
  <a id="ID-2">
    ............
  </a>
  <b idref="ID-1"/>
</doc>
原文链接:https://www.f2er.com/xml/292466.html

猜你在找的XML相关文章