gpt4 book ai didi

XML Schema - 如何有条件地要求地址元素? (街道、城市、州等)

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:03 27 4
gpt4 key购买 nike

如果地址可以由子元素组成:Street、City、State、PostalCode...您如何允许此 XML:

 <Address>
<Street>Somestreet</Street>
<PostalCode>zip</PostalCode>
</Address>

并允许:

<Address>
<City>San Jose</City>
<Street>Somestreet</Street>
<State>CA</State>
</Address>

不是这个:

<Address>
<Street>Somestreet</Street>
<City>San Jose</City>
</Address>

什么模式会做这样的事情!?

最佳答案

有一种使用 choice 来创建选择的复杂方法,其中只允许有效的组合...

在您的示例中,这应该具有所需的结果:

 <xs:complexType name="Address">
<xs:choice>
<xs:sequence>
<xs:element name="city"/>
<xs:element name="street"/>
<xs:element name="state"/>
</xs:sequence>
<xs:sequence>
<xs:element name="street"/>
<xs:element name="postcode"/>
</xs:sequence>
</xs:choice>
</xs:complexType>

另一个简单的例子,如果你想允许三个中的任意两个......你可以这样做,假设你有元素 A B C 并且你想要允许三个中的任意两个你可以使用以下 xsd:

<xs:complexType name="anyTwo">
<xs:choice>
<xs:sequence>
<xs:element name="A"/>
<xs:element name="B"/>
</xs:sequence>
<xs:sequence>
<xs:element name="A"/>
<xs:element name="C"/>
</xs:sequence>
<xs:sequence>
<xs:element name="B"/>
<xs:element name="C"/>
</xs:sequence>
</xs:choice>
</xs:complexType>

您可以看到,这对于大型集合来说很快就会变得笨拙,但主体确实有效!

编辑:另见 answer

关于XML Schema - 如何有条件地要求地址元素? (街道、城市、州等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2982270/

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