gpt4 book ai didi

xml - XSD 只允许属性依赖于其他属性值

转载 作者:行者123 更新时间:2023-12-04 21:48:31 25 4
gpt4 key购买 nike

假设我有一个 XML 元素,food , 可以采用以下两种形式之一:

<food kind="juice" />
<food kind="fruit" sort="apple" />

在我的 XSD 中,我想指定 sort属性只能存在于 <food>元素当且仅当 kind="fruit" .属性 sort其他 kind Not Acceptable 值。它看起来像一个 simple attribute implication可能有用,但我找不到这方面的更多详细信息。

如何指定这样的依赖关系?

最佳答案

您可以使用 XSD 1.1 的 Conditional Type Assignment 执行此操作:

<?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"
elementFormDefault="qualified"
vc:minVersion="1.1">
<xs:element name="food">
<xs:alternative test="@kind = 'juice'" type="JuiceType"/>
<xs:alternative test="@kind = 'fruit'" type="FruitType"/>
</xs:element>
<xs:complexType name="JuiceType">
<xs:sequence>
<!-- ... -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="FruitType">
<xs:sequence>
<!-- ... -->
</xs:sequence>
<xs:attribute name="sort"/>
</xs:complexType>
</xs:schema>

但是,请考虑一种通常更可取的 XSD 1.1 和 1.0 中都可表达的替代设计:

<juice/>
<fruit sort="apple"/>

也就是说,不是使用 kind 属性,而是使用元素名称来传达种类。

关于xml - XSD 只允许属性依赖于其他属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29497691/

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