xml - 在 XMS 元素中定义键
问题描述
我有一个这样的 XMS:
<xs:element name="student" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element type="xs:int" name="id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
我想定义学生元素中的 id 元素在所有学生中必须是唯一的。有没有办法使用 xs:key 或类似的东西?
解决方案
您可以使用xs:unique
确保由 XPath 指定的(子)元素仅出现一次的元素。
在您的情况下,这可能如下所示:
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="student" maxOccurs="unbounded" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="name"/>
<xs:element type="xs:int" name="id"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="theID">
<xs:selector xpath="student/id"/>
<xs:field xpath="."/>
</xs:unique>
</xs:element>
这确保了元素的所有id
s 的值都是唯一的。student
推荐阅读
- python - 设置多线程 python 3
- sharepoint - Yammer 嵌入式停止在经典 SharePoint 中工作
- html - 如何在不删除另一侧的信使聊天图标的情况下添加固定在索引页面左下角的小部件?
- r - 使用 !is.na() 过滤数据。替代 !is na?
- c++ - CMake:在其他目录中找不到我的头文件
- java - Thymeleaf,如何用一串文本做一个新段落
- node.js - 是否有服务或 API 选项可以用 Chrome 开发控制台这样的设备框架包装 Puppeteer 屏幕截图?
- swift - 如果日期相同,则按时间戳过滤数组
- javascript - 如何从字符串数组构造 gulp.parallel()?
- linux-kernel - PXE 引导失败并出现内核崩溃:无法挂载 root fs