gpt4 book ai didi

java - 针对 xsd 的 xml 元素验证 - 如何定义无序元素?

转载 作者:行者123 更新时间:2023-12-01 04:40:56 25 4
gpt4 key购买 nike

现在我正在验证 XML,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<all>
<allElem>
<a>12345</a>
<b>2</b>
<c>3</c>
<d>
<d1>4</d1>
<d2>5</d2>
<d3>6</d3>
</d>
<d>
<d1>7</d1>
<d2>8</d2>
<d3>9</d3>
</d>
</allElem>
</all>

我编写了一个简单的 XSD,如下所示:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="all">
<xs:complexType>
<xs:sequence>
<xs:element name="allElem" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="a" type="xs:string"/>
<xs:element name="b" type="xs:string"/>
<xs:element name="c" type="xs:string"/>
<xs:element name="d" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="d1" type="xs:string"/>
<xs:element name="d2" type="xs:string"/>
<xs:element name="d3" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>

</xs:schema>

我的问题是:我正在使用xs:sequence,但我不希望我的xml元素被排序,我不能使用xs:all,因为它只允许元素出现一次 max,但我的 xml 元素“d”应该能够出现多次。 xsd 中是否有解决方案可以定义无序元素出现一次或出现多次?换句话说,我想知道是否有这样一个xsd标签可以定义可以多次出现的无序元素。

最佳答案

在 XSD 1.0 中:

  • 您可以使用 xs:all 代替 xs:sequence,但每个元素只能出现(0 或 1)次。

  • 您可以将 xs:choice 与 minOccurs=0 maxOccurs=unbounded 一起使用,但每个元素可以出现任意次数

在 XSD 1.1 中:

  • 您可以使用 xs:all 并指定每个元素的最小/最大基数(这就是您所要求的)

XSD 1.1 目前可在 Xerces(测试版)和 Saxon(当前版本 Saxon-EE 9.5)中使用。

关于java - 针对 xsd 的 xml 元素验证 - 如何定义无序元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16557828/

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