gpt4 book ai didi

xsd - 如何在 XML 模式中创建可重用的 "US State"类型?

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

我有一个包含多个地址的 XML 模式:

<xs:element name="personal_address" maxOccurs="1">
<!-- address fields go here -->
</xs:element>
<xs:element name="business_address" maxOccurs="1">
<!-- address fields go here -->
</xs:element>

在每个地址元素中,我包括一个“美国州”枚举:
<xs:simpleType name="state">
<xs:restriction base="xs:string">
<xs:enumeration value="AL" />
<xs:enumeration value="AK" />
<xs:enumeration value="AS" />
....
<xs:enumeration value="WY" />
</xs:restriction>
</xs:simpleType>

我如何编写一次“美国州”枚举并在我的每个地址元素中重新使用它?如果这是一个 n00b 问题,我提前道歉——我以前从未写过 XSD。

我最初的尝试如下:
<xs:element name="business_address" maxOccurs="1">
<!-- address fields go here -->
<xs:element name="business_address_state" type="state" maxOccurs="1"></xs:element>
</xs:element>

最佳答案

我认为你在正确的轨道上。我认为它更多地与 XML 命名空间有关。请尝试以下操作:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/foo"
xmlns:tns="http://www.example.org/foo"
elementFormDefault="qualified">
<xs:element name="business_address">
<xs:complexType>
<xs:sequence>
<xs:element name="business_address_state"
type="tns:state" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="state">
<xs:restriction base="xs:string">
<xs:enumeration value="AL" />
<xs:enumeration value="AK" />
<xs:enumeration value="AS" />
<xs:enumeration value="WY" />
</xs:restriction>
</xs:simpleType>
</xs:schema>

注意类型是 tns:state 不只是 状态

然后这就是你将如何使用它:
<?xml version="1.0" encoding="UTF-8"?>
<business_address xmlns="http://www.example.org/foo"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/foo foo.xsd ">
<business_address_state>AL</business_address_state>
</business_address>

请注意,此 XML 使用与 XSD 的 targetNamespace 相同的默认命名空间

关于xsd - 如何在 XML 模式中创建可重用的 "US State"类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/227434/

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