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

相关文章

java中判断json key是否存在的几种方法

《java中判断jsonkey是否存在的几种方法》在使用Java处理JSON数据时,如何判断某一个key是否存在?本文就来介绍三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的... 目http://www.chinasem.cn录第一种方法是使用 jsONObject 的 has 方法

Java中的Schema校验技术与实践示例详解

《Java中的Schema校验技术与实践示例详解》本主题详细介绍了在Java环境下进行XMLSchema和JSONSchema校验的方法,包括使用JAXP、JAXB以及专门的JSON校验库等技术,本文... 目录1. XML和jsON的Schema校验概念1.1 XML和JSON校验的必要性1.2 Sche

Redis高性能Key-Value存储与缓存利器常见解决方案

《Redis高性能Key-Value存储与缓存利器常见解决方案》Redis是高性能内存Key-Value存储系统,支持丰富数据类型与持久化方案(RDB/AOF),本文给大家介绍Redis高性能Key-... 目录Redis:高性能Key-Value存储与缓存利器什么是Redis?为什么选择Redis?Red

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

MySQL中On duplicate key update的实现示例

《MySQL中Onduplicatekeyupdate的实现示例》ONDUPLICATEKEYUPDATE是一种MySQL的语法,它在插入新数据时,如果遇到唯一键冲突,则会执行更新操作,而不是抛... 目录1/ ON DUPLICATE KEY UPDATE的简介2/ ON DUPLICATE KEY UP

MYSQL中information_schema的使用

《MYSQL中information_schema的使用》information_schema是MySQL中的一个虚拟数据库,用于提供关于MySQL服务器及其数据库的元数,这些元数据包括数据库名称、表... 目录关键要点什么是information_schema?主要功能使用示例mysql 中informa

把Python列表中的元素移动到开头的三种方法

《把Python列表中的元素移动到开头的三种方法》在Python编程中,我们经常需要对列表(list)进行操作,有时,我们希望将列表中的某个元素移动到最前面,使其成为第一项,本文给大家介绍了把Pyth... 目录一、查找删除插入法1. 找到元素的索引2. 移除元素3. 插入到列表开头二、使用列表切片(Lis

shell脚本批量导出redis key-value方式

《shell脚本批量导出rediskey-value方式》为避免keys全量扫描导致Redis卡顿,可先通过dump.rdb备份文件在本地恢复,再使用scan命令渐进导出key-value,通过CN... 目录1 背景2 详细步骤2.1 本地docker启动Redis2.2 shell批量导出脚本3 附录总

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat