【发布时间】:2011-07-29 07:37:43
【问题描述】:
假设我有一个定义以下 XML 的架构:
<Values>
<Add Key="Key1">Value 1</Add>
<Add Key="Key2">Value 2</Add>
<Add Key="Key3">Value 3</Add>
<Add Key="Key4">Value 4</Add>
</Values>
我希望在架构级别能够强制 Key 属性的值是唯一的,即上面的示例是有效的,但下面的示例将是无效的:
<Values>
<Add Key="Key1">Value 1</Add>
<Add Key="Key2">Value 2</Add>
<Add Key="Key2">Value 3</Add>
<Add Key="Key3">Value 4</Add>
</Values>
请注意,有两个 Add 元素的 Key 是 Key2
这里是简单的模式供参考:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Values">
<xs:complexType>
<xs:sequence>
<xs:element name="Add" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Key" type="xs:token" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我的印象是这在架构级别是不可能的,但是我全神贯注。
【问题讨论】:
标签: xml schema xml-validation