约束
Unique
W3C XML Schema 提供了几种灵活的基于XPath的特性,其描述了唯一性约束和一致性引用约束。首先,一个简单的唯一性声明,使用xs:unique元素进行声明。下面的声明建立在我们的book元素的名称必须唯一的前提下:
<xs:selector xpath="character"/>
<xs:field xpath="name"/>
</xs:unique>
xs:unique 元素在schema中的位置,给出了内容节点,其中包括了约束。靠在book元素插入xs:unique,我们指定了在全文中此book名称必须唯一。
唯一性约束中定义的两个XPath 相对符合内容节点。第一个使用selector元素定义,目的是定义拥有该唯一性约束的元素——selector指向的节点必须是一个元素节点。
第二个路径,在xs:field元素中定义的,是相对于xs:selector所标识的元素,其可以是一个元素或者一个属性节点。这就是一个其值将会被检查唯一性的节点。组合值可以通过在xs:unique中添加另外的xs:field元素来实现。
Key
第二个结构,xs:key,和xs:unique类似,除了其值不能为null(注意xs:unique和xs:key都可以被引用)。要使用一个字符串名称作为一个key,我们可以通过使用xs:key替换xs:unique实现。
<xs:selector xpath="character"/>
<xs:field xpath="name"/>
</xs:key>
Keyref
第三个结构,xs:keyref,允许我们的那个有一个到xs:key或xs:unique的引用。要显示它的用法,我们将介绍friend-of 元素,将会针对字符串使用。
<name>Snoopy</name>
<friend-of>Peppermint Patty</friend-of>
<since>1950-10-04</since>
<qualification>
extroverted beagle
</qualification>
</character>
为了显示friend-of需要从同一本书参考一个字符,我们将会写,在同一个层次我们定义一个key约束,如下:
<xs:selector xpath="character"/>
<xs:field xpath="friend-of"/>
</xs:keyref>
这些功能基本独立于schema中的其他特性。它们从数据类型的定义中断开。唯一固定它们到schema的是它们被定义的位置,其中确定唯一性约束的范围。