gpt4 book ai didi

xsd - 多个元素的xsd选择

转载 作者:行者123 更新时间:2023-12-03 12:34:13 24 4
gpt4 key购买 nike

我希望我的Xml文件如下所示

<root>
<name>a</name>
<age>23</age>
</root>

or

<root>
<empno>b<empno>
<designation>ase</designation>
</root>

是否可以使用“选择”指示符为上述内容创建XML模式?类似以下内容。
    <xsd:element name="root">
<xsd:complexType>
<xsd:choice>

<xsd:element name="name"/>
<xsd:element name="age" />

or

<xsd:element name="empno"/>
<xsd:element name="designation" />

<xsd:choice>

</xsd:complexType>
<xsd:element>

有可能这样做吗?

最佳答案

是的,您快要到了..只是缺少sequence ..因为它是字段的集合,所以您必须按顺序将它们包装起来。

这些序列标签将在<Choice>标签下。现在将验证这两个标签集(序列)中的一个。

<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root" type="root"/>
<xs:complexType name="root">
<xs:choice>
<xs:sequence>
<xs:element name="empno" type="xs:string" />
<xs:element name="designation" type="xs:string" />
</xs:sequence>
<xs:sequence>
<xs:element name="name" type="xs:string" />
<xs:element name="age" type="xs:unsignedByte" />
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:schema>

-------------------------------------------------- ---------------------------------------

我想在这里再添加一个建议:

我观察到您使用嵌套声明..像这样:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="trunk">
<xs:complexType>
<xs:sequence>
<xs:element name="branch1" type="xs:string"/>
<xs:element name="branch2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="other" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

始终喜欢使用自定义类型!像这样:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root" type="root"/>

<xs:complexType name="root">
<xs:sequence>
<xs:element name="trunk" type="trunk"/>
<xs:element name="other" type="xs:string" />
</xs:sequence>
</xs:complexType>

<xs:complexType name="trunk">
<xs:sequence>
<xs:element name="branch1" type="xs:string"/>
<xs:element name="branch2" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>

这样可以提高可读性,并且可以重复使用complexType / simpleType ..

希望能帮助到你..

关于xsd - 多个元素的xsd选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15089730/

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