Schema元素xsd:key和xsd:keyref

2024-06-10 21:58
文章标签 元素 key schema xsd keyref

本文主要是介绍Schema元素xsd:key和xsd:keyref,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

   XML Schema可以通过将一个元素或属性定义为key,从而保证该元素或属性在一定范围内的唯一性。在XML实例文档中,key所代表的元素或属性的值组成一个集合,可以通过keyref来限定另一个元素或属性的值必须在这个集合中。

      key的定义方法和unique的定义方法十分相似。首先选择一组元素做为范围,然后依据上下文关系指定某元素或属性为key。keyref的定义跟key的定义基本相同,唯一区别在于增加了refkey属性来引用key。

  1. <?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实例:

  1. <?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">
    
  2. <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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049381

相关文章

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

深入理解Redis大key的危害及解决方案

《深入理解Redis大key的危害及解决方案》本文主要介绍了深入理解Redis大key的危害及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着... 目录一、背景二、什么是大key三、大key评价标准四、大key 产生的原因与场景五、大key影响与危

python 字典d[k]中key不存在的解决方案

《python字典d[k]中key不存在的解决方案》本文主要介绍了在Python中处理字典键不存在时获取默认值的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录defaultdict:处理找不到的键的一个选择特殊方法__missing__有时候为了方便起见,

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

遮罩,在指定元素上进行遮罩

废话不多说,直接上代码: ps:依赖 jquer.js 1.首先,定义一个 Overlay.js  代码如下: /*遮罩 Overlay js 对象*/function Overlay(options){//{targetId:'',viewHtml:'',viewWidth:'',viewHeight:''}try{this.state=false;//遮罩状态 true 激活,f

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

JS和jQuery获取节点的兄弟,父级,子级元素

原文转自http://blog.csdn.net/duanshuyong/article/details/7562423 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比。 JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元素。 <div id="test"><div></div><div></div

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed

DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed 文章目录 DBeaver 连接 MySQL 报错 Public Key Retrieval is not allowed问题解决办法 问题 使用 DBeaver 连接 MySQL 数据库的时候, 一直报错下面的错误 Public Key Retrieval is