使用xsd模式的XML文档中的唯一性



在使用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>

最新更新