gpt4 book ai didi

xml - 使用 XML 1.1 模式在全局范围内断言元素 ID 唯一性

转载 作者:行者123 更新时间:2023-12-04 18:11:44 25 4
gpt4 key购买 nike

是否可以使用 XML 1.1 模式来验证文档中没有两个元素共享一个 id。例如,附加的 XML 文档应该失败,因为 id 的 0、1 和 3 不是唯一的。

<?xml version="1.0" encoding="UTF-8"?>
<Item>
<c id="0"/> <!-- error: shared id -->
<a id="1"/> <!-- error: shared id -->
<a id="2"/>
<b id="3"/> <!-- error: shared id -->
<a id="4"/>
<b id="0"/> <!-- error: shared id -->
<d id="6"/>
<d id="7"/>
<b id="3"/> <!-- error: shared id -->
<c id="1"/> <!-- error: shared id -->
</Item>

Schema,要转换为 XML 1.1。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Item">
<xs:complexType>
<xs:sequence maxOccurs="unbounded">
<xs:choice>

<xs:element name="a">
<xs:complexType>
<xs:attribute name="id" use="required"/>
</xs:complexType>
</xs:element>

<xs:element name="b">
<xs:complexType>
<xs:attribute name="id" use="required"/>
</xs:complexType>
</xs:element>

<xs:element name="c">
<xs:complexType>
<xs:attribute name="id" use="required"/>
</xs:complexType>
</xs:element>

<xs:element name="d">
<xs:complexType>
<xs:attribute name="id" use="required"/>
</xs:complexType>
</xs:element>

</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

最佳答案

为此,您不需要 XSD 1.1,可以使用 XSD 1.0 来完成。在 Item 的元素定义中,添加唯一性约束:

<xs:unique name="unique-id">
<xs:selector xpath="*"/>
<xs:field xpath="@id"/>
</xs:unique>

关于xml - 使用 XML 1.1 模式在全局范围内断言元素 ID 唯一性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12496989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com