XSD 兄弟元素内的唯一约束

XSD unique constraint within sibling elements

我有以下 XML 文件。我正在尝试在 XML 文件中创建一个唯一约束,以便图书的 ID 在图书馆中应该是唯一的。我尝试创建一个,但能够在组内创建唯一约束。

<library>
  <group>
    <groupName>Group 1</groupName>
    <books>
      <book>
        <name>Aa</name>
        <id>11</id>
      </book>
      <book>
        <name>Bb</name>
        <id>12</id>
      </book>
    </books>
  </group>
  <group>
    <groupName>Group 1</groupName>
    <books>
      <book>
        <name>Cc</name>
        <id>11</id>
      </book>
      <book>
        <name>Dd</name>
        <id>14</id>
      </book>
    </books>
  </group>
</library>

在给定的文件中,书名 'Cc' 的 ID 为 11,与书名 'Aa' 相同,因此验证应该失败。请帮我看看我哪里出错了 这是我的 xsd 文件

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="library">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="group">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="groupName" type="xs:string" />
              <xs:element name="books">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element maxOccurs="unbounded" name="book">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="name" type="xs:string" />
                          <xs:element name="id" type="xs:unsignedByte" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
                <xs:unique name="uniqueRegAddr">
                  <xs:selector xpath="book"/>
                  <xs:field xpath="id"/>
                </xs:unique>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

如果有两本书ID相同,则library元素无效,所以需要为library定义唯一性约束。您对 books 元素的有效性定义了约束,这太窄了。