gpt4 book ai didi

xml - 协助在多个元素之间进行 XML XSD 选择

转载 作者:行者123 更新时间:2023-12-04 04:33:42 26 4
gpt4 key购买 nike

我有一个 XML 文档,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<Data>
<AddressStreetNumber>123</AddressStreetNumber>
<AddressStreetName>Main St</AddressStreetName>
<AddressUnitNumber>10-B</AddressUnitNumber>
<AddressUnitType>Apt</AddressUnitType>
<AddressLine1>123 Main St Apt 10-B</AddressLine1>
</Data>

我希望 XSD 中的定义记录要包含的前 4 个元素或要包含的最后一个元素。基本上,消费者可以选择拆分地址或仅使用元素“addressline1”来放置整个 address1 信息。我如何在 XSD 中描述这一点?我试过使用 xsd:group 和 xsd:choice 但它似乎不起作用(或验证)。

示例:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:group name="householdaddress1parts">
<xs:all>
<xs:element name="AddressStreetNumber" type="xs:unsignedInt" minOccurs="0" />
<xs:element name="AddressStreetName" minOccurs="0" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="100"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="AddressUnitNumber" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="16"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="AddressUnitType" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="16"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:all>
</xs:group>
<xs:group name="householdaddress1">
<xs:all>
<xs:element name="AddressLine1" minOccurs="0" >
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="164"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:all>
</xs:group>
<xs:choice minOccurs="0">
<xs:group ref="householdaddress1parts"></xs:group>
<xs:group ref="householdaddress1"></xs:group>
</xs:choice>
</xs:schema>

我已经尝试了其他一些变体,但我猜即使在阅读了一段时间的文档之后我也完全偏离了轨道(或者它可能是完全显而易见的)。这是我第一次涉足 XSD,我相信它会显示出来。对此的任何帮助表示赞赏。

最佳答案

此 XML 文档:

<?xml version="1.0" encoding="utf-8"?>
<Data>
<AddressStreetNumber>123</AddressStreetNumber>
<AddressStreetName>Main St</AddressStreetName>
<AddressUnitNumber>10-B</AddressUnitNumber>
<AddressUnitType>Apt</AddressUnitType>
</Data>

而这个 XML 文档:
<?xml version="1.0" encoding="utf-8"?>
<Data>
<AddressLine1>123 Main St Apt 10-B</AddressLine1>
</Data>

对这个 XSD 有效:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Data">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="AddressStreetNumber"/>
<xs:element name="AddressStreetName"/>
<xs:element name="AddressUnitNumber"/>
<xs:element name="AddressUnitType"/>
</xs:sequence>
<xs:element name="AddressLine1"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>

关于xml - 协助在多个元素之间进行 XML XSD 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20110096/

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