gpt4 book ai didi

xml - 如何在 XSD 中定义互斥属性?

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:50 26 4
gpt4 key购买 nike

###首先是代码片段...

<tag name="default" abc="10" def="20"> <!-- not valid, abc and def should be mutually exclusive -->

<tag name="default1" abc="10"> <!-- valid -->

<tag name="default2" def="20"> <!-- valid -->

###我想做什么...

我可以在我的 XSD 中放入什么,以便 @abc@def 不能作为同一元素上的属性共存?

所以如果它们共存于同一元素上,验证将失败?

最佳答案

XSD 1.0

可以使用 xs:key 巧妙地完成。参见 @Kachna's answer .

请注意,如果某些解析器无法针对 xs:key 中的多个选定值失败,则它们可能会允许这两个属性。至少有 one known case过去发生过这种情况。

XSD 1.1

可以使用 xs:assert 完成:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning"
vc:minVersion="1.1">
<xs:element name="tag">
<xs:complexType>
<xs:sequence/>
<xs:attribute name="name" type="xs:string"/>
<xs:attribute name="abc" use="optional" type="xs:integer"/>
<xs:attribute name="def" use="optional" type="xs:integer"/>
<xs:assert test="(@abc and not(@def)) or (not(@abc) and @def)"/>
</xs:complexType>
</xs:element>
</xs:schema>

关于xml - 如何在 XSD 中定义互斥属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33748490/

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