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


相关推荐: 《气泡星球》兑换码礼包大全  mysql触发器如何编写_mysql触发器编写规范与代码示例讲解  餐馆菜篮选购指南  C++中的explicit关键字有什么作用_C++类型转换控制与explicit使用  Win10如何彻底关闭OneDrive Win10禁用云同步功能【纯净】  Win11便笺在哪打开 Win11桌面便笺(Sticky Notes)使用方法【详解】  邦丰播放器频道搜索设置  鸣潮历史学家灯塔位置一览  PHP与SQL实践:高效实现数据复制与特定列值修改  如何使用 Optional 类型并满足 Pylint 的类型检查  J*aScript模拟悬停与点击:自动化网页动态元素交互指南  智慧团建活动报名入口 智慧团建活动报名入口手机端官网​  51漫画网实时入口 51漫画网页版官方免费漫画入口  J*aScript装饰器_元编程实战  如何编写一个符合 composer 规范的 post-install-cmd 脚本?  PySimpleGUI中实现键盘按键与按钮事件绑定教程  《长生:天机降世》火塔小怪大全  Lar*el 中高效执行多列更新:单次查询实现  如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】  发博客与长微博技巧  教育查询官方网站入口 教育个人档案查询免费官网  汽水音乐车机版 汽水音乐车机版官方入口  Lar*el Eloquent中通过Join查询关联数据表:解决多行子查询问题  酷狗音乐多音轨设置教程  J*aScript包管理器_Npm与Yarn对比  行者app怎样导出日志  12306售票时间最新规定 | 网上订票和车站窗口时间一样吗  如何在CSS中使用伪类选择器_hover实现悬停效果  如何用mysql实现客户反馈管理_mysql客户反馈数据库方法  Animex动漫社社登录官网 Animex动漫社资源社入口直达  漫蛙app官方版手机正版入口-漫蛙漫画manwa在线漫画正版入口  手机远程连接电脑方法  国际经济与贸易就业方向解析  苹果11如何更换iCloud账号_苹果11账号切换的具体步骤  《华夏千秋》龙女试炼功法获取方法  163邮箱登录入口官网 163.com邮箱登录入口  WooCommerce购物车:强制显示所有交叉销售商品教程  路由器DNS怎么设置最快 优化DNS提升上网速度教程  Keras中Convolution2D层及其核心辅助层详解  咸鱼怎么设置仅粉丝可见的动态_咸鱼动态粉丝可见设置方法  使用VS Code作为你的个人知识管理系统  向往的生活小游戏启动处_向往的生活小游戏立即启动  有道AI翻译入口 智能写作官方网站入口  C#中的Record类型有什么优势?C# 9新特性Record与Class的用法区别  使用jQuery精确检测除指定元素外任意位置的点击事件  iPhone14开启Apple TV遥控设置  TikTok网页版实时观看入口 TikTok网页版短视频在线浏览  cad加载的线型看不见怎么办_cad线型不可见问题解决方法  Linux如何自动分析系统异常日志_Linux日志智能检测  《全民k歌》网页版最新登录入口一览 

 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.