gpt4 book ai didi

java - 在 XSD 中定义一个元素,它是一个 ENUM 并且具有一个属性

转载 作者:太空宇宙 更新时间:2023-11-04 13:13:04 25 4
gpt4 key购买 nike

我想要以下 xml 的 XSD:

<root>
<tag>
<child1>value1_1</child1>
<child2 att="att1">value2_1</child2>
</tag>
</root>

使用以下 XSD

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root" type="rootMeta"/>
<xs:element name="tag" type="tagMeta"/>

<xs:complexType name="rootMeta">
<xs:sequence>
<xs:element ref="tag" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="tagMeta">
<xs:sequence>
<xs:element name="child1" type="enum1"/>
<xs:element name="child2" type="enum2"/>
</xs:sequence>
</xs:complexType>`

<xs:simpleType name="enum1">
<xs:restriction base="xs:string">
<xs:enumeration value="value1_1"/>
<xs:enumeration value="value1_2"/>
</xs:restriction>
</xs:simpleType>

<!-- And here the problem comes -->

<xs:complexType name="enum2">
<xs:simpleContent>
<xs:restriction base="xs:string">
<xs:enumeration value="value2_1"/>
<xs:enumeration value="value2_2"/>
</xs:restriction>
</xs:simpleContent>
<xs:attribute name="att" type="attMeta" use="required"/>
</xs:complexType>

<xs:simpleType name="attMeta">
<xs:restriction base="xs:string">
<xs:enumeration value="att1"/>
<xs:enumeration value="att2"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

定义错误,无法进行验证,谁能解释一下我该如何定义enum2以将枚举作为值和属性?

最佳答案

实现您想要的一种方法可能是定义一个 simpleType,您可以稍后扩展它以添加属性:

<xs:complexType name="enum2">
<xs:simpleContent>
<xs:extension base="enum2_text_values">
<xs:attribute name="att" type="attMeta" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>

它依赖于已经提到的enum2_text_values simpleType,您可以如下定义:

<xs:simpleType name="enum2_text_values">
<xs:restriction base="xs:string">
<xs:enumeration value="value2_1"/>
<xs:enumeration value="value2_2"/>
</xs:restriction>
</xs:simpleType>

关于java - 在 XSD 中定义一个元素,它是一个 ENUM 并且具有一个属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33782334/

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