XML Schema中的key和keyref怎么用 实现主外键约束


XML Schema 中的 key 和 keyref 用于实现文档内主键—外键约束:key 确保指定字段值全局唯一且非空,keyref 要求字段值必须匹配某 key 或 unique 声明的键值,二者均在 XSD 验证阶段由解析器检查。

xml schema中的key和keyref怎么用 实现主外键约束

XML Schema 中的 keykeyref 用于在 XML 文档内部实现类似数据库中“主键—外键”的约束机制,确保元素/属性值的唯一性与引用有效性。它们不依赖外部数据库,而是在 XML 解析(如 XSD 验证)阶段由处理器检查。

key:定义唯一标识符(相当于主键)

key 声明一个字段(或字段组合)在整个文档范围内必须唯一,且非空。它必须出现在 <element></element><complextype></complextype><key></key> 子元素中,作用域是该元素及其后代。

关键点:

  • <selector></selector> 指定要约束的元素集合(XPath 表达式,相对路径)
  • <field></field> 指定作为“键值”的子项(可多个,对应联合主键)
  • 每个 <field></field> 的 XPath 必须返回**单个原子值**(不能是元素节点集)

示例:要求每个 <book></book>isbn 属性全局唯一


  
  

keyref:定义引用关系(相当于外键)

keyref 声明某个字段的取值必须匹配某个 key(或 unique)声明的键值,从而建立引用完整性。

标贝AI虚拟主播 标贝AI虚拟主播

一站式虚拟主播视频生产和编辑平台

标贝AI虚拟主播 69 查看详情 标贝AI虚拟主播

关键点:

  • 必须通过 refer 属性指向一个已定义的 keyuniquename
  • <selector></selector><field></field> 的写法与 key 完全一致,但语义是“被引用的值”
  • 引用字段和被引用字段的数据类型需兼容(通常都为字符串或 xs:ID/xs:IDREF,但 XSD 1.0 不强制类型一致,仅比对字面值)

示例:要求 <order></order> 中的 book_isbn 必须等于某个 <book></book>isbn


  
  

完整 XSD 片段示例(含 key + keyref)

以下是一个简化的图书订单 Schema,体现主键(book/@isbn)与外键(order/book_isbn)约束:


  
    
      
        
          red"/>
        

      

      
        
          
            
          

        

      

    

    
    
      
      
    

    
    
      
      
    

  

注意事项与常见问题

使用 key/keyref 时需注意:

  • 作用域限制:key/keyref 只对 <selector></selector> 选中的元素及其后代生效,不能跨顶层元素引用(除非把 key 定义在更外层)
  • 空值不参与约束:若 <field></field> 对应的值为空字符串或不存在,该实例不参与唯一性/引用检查(即不报错)
  • ID/IDREF 更轻量但能力有限:如果只需简单单值引用,可用 xs:ID(自动保证唯一)和 xs:IDREF(自动验证存在),但不支持 XPath 定位、不支持复合键、且 ID 值必须符合 NCName 规则
  • 验证时机:只有启用 XSD 全验证(如使用 xsi:schemaLocation 并由支持 key/keyref 的解析器处理)才触发检查;DOM/SAX 解析本身不执行该逻辑

以上就是XML Schema中的key和keyref怎么用 实现主外键约束的详细内容,更多请关注其它相关文章!


# 处理器  # 是在  # 河东区营销推广系统建设  # 龙岗网站建设厂家地址  # 网站优化推广seo批发  # 山东提供网站推广的公司  # 蒙阴短视频推广招聘网站  # 国际站关键词怎么查排名  # 什么软件可以优化seo网站  # 利用facebook营销推广  # 常规营销推广方式  # 百货推广视频素材库网站  # 多个  # 是一个  # 新特性  # 如何用  # 文档  # 键值  # 如何处理  # 主播  # 主键  # red  # 作用域  # 常见问题 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: NumPy 高性能技巧:基于多列条件查找最近邻行索引的向量化实现  雨课堂官网在线登录 网页版雨课堂登录链接  电子白板帮助菜单使用指南  汽水音乐车机版 汽水音乐车机版官方入口  win11自带录屏文件保存在哪里 Win11 Game Bar录制视频默认路径【分享】  5G和6G的连接密度有什么区别 6G每平方公里能连接多少设备  ToDesk远程摄像头功能使用方法_ToDesk远程视频画面查看设置教程  mysql镜像配置如何设置用户权限组_mysql镜像配置用户组与权限分级管理方法  sf漫画官网登录入口直达_sf漫画官方正版网址  智慧团建活动报名入口 智慧团建活动报名入口手机端官网​  《下一站江湖2》独孤剑诀习得方法  手机坏了微信聊天记录怎么导出来 新手机恢复聊天记录技巧  以下哪一个是适应长期护理制度发展而设立的新职业  百度网盘如何设置上传限额  豆包AI怎样为教育场景定制答疑逻辑_为教育场景定制豆包AI答疑逻辑方案【方案】  阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口  家里的小飞虫总是不断,用什么方法可以彻底根除?  《气泡星球》兑换码礼包大全  圆通快递官方入口不需要登录 在线查询入口快速查询  搜狗浏览器如何查找页面中的文字 搜狗浏览器Ctrl+F页面搜索功能  126邮箱申请入口官网_126邮箱注册免费登录2025  芒果TV官网登录入口 芒果TV官方网站登录入口  如何在mysql中比较InnoDB和MyISAM区别  WPS文字如何进行简繁转换  键盘测试软件哪个好_键盘故障检测工具推荐  腾讯QQ邮箱官方入口 QQ邮箱网页版登录平台  J*aScript对象中深度嵌套URL键的查找与更新策略  Go Goroutine调度与并发执行深度解析  iPhone14无法连接蓝牙设备如何解决  百度网盘网页入口链接分享 百度网盘官网入口网页登录  mail.qq.com登录入口 QQ邮箱网页版直达  Chart.js 教程:自定义插件实现图表与图例间距调整  《小黑盒》删除历史浏览方法  使用Selenium在无头Chrome中交互动态菜单和复选框的策略  《优志愿》修改手机号方法  英国搜索:多数英国人认为语言搜索是未来搜索  J*a中为什么强调组合优于继承_组合模式带来的灵活性与可维护性解析  动漫岛在线动漫网 动漫岛动漫在线观看官方入口  可米酷漫画在线阅读入口_ 可米酷漫画官网直达链接  PHP utf8_encode 字符编码转换陷阱与解决方案  韩剧圈正版官网入口_韩剧圈官方指定登录  Golang中的rune与byte类型区别是什么_Golang字符与字节处理详解  Win11怎么录屏_Windows 11自带Xbox Game Bar录制视频  奥克斯空调不制热啥毛病_奥克斯空调不制热原因分析及解决技巧  鲨鱼剧场app金币获取方法  解决jQuery多计算器输入字段冲突的教程  PHP odbc_fetch_array 返回值处理:如何正确访问嵌套数组元素  PHP页面重载后变量状态保持:实现用户档案连续浏览的教程  Excel如何设置动态下拉菜单_Excel表格下拉选项快速方法  《桃源记2》资源采集攻略 

 2025-12-20

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.