使用 xsd 架构的 XML 文档中的唯一性

uniqueness in XML document using xsd schema

我正在使用 XSD.

在 XML 验证中遇到以下用例

请考虑以下XML

<Library>
  <Book>Do Androids Dream of Electric Sheep?</Book>
  <Book>Choke</Book>
  <Book>Choke</Book>
</Library>

你会怎样写XSD避免一本书被重复?

所以上面的xml不会通过验证。

如果一本书包含像 "title" 这样的子元素,我可以保证唯一性。

提前致谢 最好的问候

使用xs:key构造实现起来非常简单。看看吧。

XML

<?xml version="1.0"?>
<Library xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="LibraryNew.xsd">
    <Book>Do Androids Dream of Electric Sheep?</Book>
    <Book>Choke</Book>
    <Book>Choke</Book>
</Library>

XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="Library">
        <xs:complexType>
            <xs:sequence>
                <xs:element maxOccurs="unbounded" ref="Book"/>
            </xs:sequence>
        </xs:complexType>

        <!-- Primary Key -->
        <xs:key name="PK">
            <xs:selector xpath="Book"/>
            <xs:field xpath="."/>
        </xs:key>
    </xs:element>
    <xs:element name="Book" type="xs:string"/>
</xs:schema>