在 XMS 元素中定义键

Define key in XMS element

我有一块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>

我想定义 student 元素中的 id 元素在所有学生中必须是唯一的。有没有办法使用 xs:key 或类似的方法来做到这一点?

您可以使用 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>

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