本文主要是介绍Schema元素xsd:key和xsd:keyref,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
XML Schema可以通过将一个元素或属性定义为key,从而保证该元素或属性在一定范围内的唯一性。在XML实例文档中,key所代表的元素或属性的值组成一个集合,可以通过keyref来限定另一个元素或属性的值必须在这个集合中。
key的定义方法和unique的定义方法十分相似。首先选择一组元素做为范围,然后依据上下文关系指定某元素或属性为key。keyref的定义跟key的定义基本相同,唯一区别在于增加了refkey属性来引用key。
-
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.cnblogs.com" xmlns="http://www.cnblogs.com">
<xs:element name="bookInfo">
<xs:complexType>
<xs:sequence>
<xs:element name="bookSort" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="book" type="bookType" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:key name="sortKey">
<xs:selector xpath="bookSort"/>
<xs:field xpath="."/>
</xs:key>
<xs:keyref refer="sortKey" name="sortKeyRef">
<xs:selector xpath="book"></xs:selector>
<xs:field xpath="@type"></xs:field>
</xs:keyref>
<xs:unique name="maneUnique">
<xs:selector xpath="book"></xs:selector>
<xs:field xpath="name"></xs:field>
</xs:unique>
</xs:element>
<xs:complexType name="bookType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="quantity" type="xs:integer"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="type" type="xs:string"/>
</xs:complexType>
</xs:schema>
<xs:key name="sortKey"> 用于声明一个key。name=’sortKey’表明key的名字,<xs:selector xpath="bookSort"/> 用于指定元素的范围,由于sortKey定义在元素bookInfo声明之内,元素bookSort是元素bookInfo的子元素。<xs:field xpath="."/> 用于指定对元素bookSort本身进行唯一性约束。
<xs:keyref refer="sortKey" name="sortKeyRef"> 用于什么一个keyref。refer="sortKey" 表示它要引用的key是sortKey。<xs:selector xpath="book"></xs:selector> 指定元素的范围。<xs:field xpath="@type"></xs:field> 表示在book元素下的属性type都必须是sortKey的一员。
xml实例:
-
<?xml version="1.0" encoding="UTF-8"?>
<bookInfo xsi:schemaLocation="http://www.cnblogs.com t.xsd" xmlns:n1="http://www.cnblogs.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
-
<bookSort>technology</bookSort>
<bookSort>novel</bookSort>
<bookSort>history</bookSort>
<book type="technology">
<name>XML Schema应用</name>
<quantity>2</quantity>
<price>20</price>
</book>
<book type="novel">
<name>疯狂程序员</name>
<quantity>3</quantity>
<price>15</price>
</book>
<book type="history">
<name>三国志</name>
<quantity>1</quantity>
<price>30</price>
</book>
</bookInfo>
这篇关于Schema元素xsd:key和xsd:keyref的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!