XSD怎么定义一个元素的唯一性约束 xs:unique

幻夢星雲
发布: 2025-12-12 15:21:37
原创
612人浏览过
xs:unique用于定义XML元素内字段值的唯一性约束,由name、xs:selector和xs:field三部分组成,作用域限于所在元素,允许字段为空,区别于要求非空的xs:key。

xsd怎么定义一个元素的唯一性约束 xs:unique

xs:unique 用于在 XML 文档中为某个元素(或其子元素)定义唯一性约束,确保指定字段在整个作用域内不重复。它必须写在 xs:elementxs:complexTypexs:key / xs:unique / xs:keyref 容器中(通常放在 xs:annotation 后、xs:complexType 前),且只对当前元素及其后代生效。

基本结构:怎么写一个 xs:unique

一个典型的 xs:unique 包含三部分:name(唯一标识名)、xs:selector(选中要检查的元素范围)、xs:field(指定哪个值需唯一)。

  • name 必须是合法的 NCName(不能含空格、数字开头等),同一作用域内不能重名
  • xs:selectorxpath 表达式必须匹配到零个或多个元素(通常用相对路径,如 .//bookbook
  • xs:fieldxpath 是相对于 selector 匹配结果的,只能取原子值(如属性、文本节点),不支持复杂表达式

常见写法示例:按属性或子元素值唯一

假设有一个 library 元素,包含多个 book,要求每本书的 isbn 属性或 title 子元素不能重复:

<xs:element name="library">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="book" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="title" type="xs:string"/>
          </xs:sequence>
          <xs:attribute name="isbn" type="xs:string"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <!-- 唯一性约束:isbn 属性值全局唯一 -->
  <xs:unique name="isbnUniq">
    <xs:selector xpath="book"/>
    <xs:field xpath="@isbn"/>
  </xs:unique>
  <!-- 唯一性约束:title 文本内容唯一 -->
  <xs:unique name="titleUniq">
    <xs:selector xpath="book"/>
    <xs:field xpath="title"/>
  </xs:unique>
</xs:element>
登录后复制

注意作用域和 XPath 限制

xs:unique 的作用域就是它所在的元素(这里是 library),不会跨父元素生效。XPath 在这里受限较多:

Procys
Procys

AI驱动的发票数据处理

Procys 102
查看详情 Procys
  • 不支持函数(如 normalize-space()concat()
  • 不支持轴步(如 parent::following-sibling::
  • 只能用 @attrchild::element.(文本)这类简单路径
  • 如果 field 匹配不到值(如 title 为空或不存在),该条记录会被忽略(不报错,也不参与去重)

和 xs:key、xs:keyref 的区别

xs:uniquexs:key 结构完全一样,唯一区别是:xs:key 要求 field 值必须存在且非空,而 xs:unique 允许为空或缺失(跳过校验)。xs:keyref 则用于引用另一个 keyunique 的值,实现外键约束。

所以如果你只要“不重复”,不强求每个都填,就用 xs:unique;如果必须填且不能重复(比如主键),就该用 xs:key

基本上就这些。写的时候注意 name 唯一、xpath 简单、作用域清晰,就能稳稳生效。

以上就是XSD怎么定义一个元素的唯一性约束 xs:unique的详细内容,更多请关注php中文网其它相关文章!

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号