首页 > 解决方案 > 在 XMS 元素中定义键

问题描述

我有一个这样的 XMS:

<xs:element name="student" maxOccurs="unbounded" minOccurs="0">
   <xs:complexType>
      <xs:sequence>
          <xs:element type="xs:string" name="name"/>
          <xs:element type="xs:int" name="id"/>
      </xs:sequence>
  </xs:complexType>
</xs:element>

我想定义学生元素中的 id 元素在所有学生中必须是唯一的。有没有办法使用 xs:key 或类似的东西?

标签: xmlxsdxms

解决方案


您可以使用xs:unique确保由 XPath 指定的(子)元素仅出现一次的元素。

在您的情况下,这可能如下所示:

<xs:element name="root">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="student" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element type="xs:string" name="name"/>
                        <xs:element type="xs:int" name="id"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:unique name="theID">
        <xs:selector xpath="student/id"/>
        <xs:field xpath="."/>
    </xs:unique>
</xs:element>

这确保了元素的所有ids 的值都是唯一的。student


推荐阅读