gpt4 book ai didi

xml - XSD : Check order of child elements based on attribute

转载 作者:行者123 更新时间:2023-12-02 22:17:25 24 4
gpt4 key购买 nike

我正在尝试检查 xml 中子元素的顺序,

我的xml是

<main>
<col name="name1">test1</col>
<col name="name2">test2</col>
<col name="name3">test3</col>
<col name="name4">test4</col>
<col name="num1">true</col>
</main>

而且我需要验证子元素是否以正确的顺序显示。我的文件中的子元素都具有相同的名称但不同的属性。

<xs:element minOccurs="0" maxOccurs="unbounded" name="col">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type ="OrderCheck" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>

理想情况下我想做

<xs:complexType name="OrderCheck">
<xs:sequence>
<xs:element name="name1" type="xs:string"/>
<xs:element name="name2" type="xs:string"/>
<xs:element name="name3" type="xs:string"/>
<xs:element name="name4" type="xs:string"/>
<xs:element name="num1" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>

为了能够使用 xs:sequence 我需要定义一个 xs:complexType 但我不能在“属性”类型下定义一个复杂类型,我只能定义一个简单类型。但是我不能使用 xs :sequence 下的简单类型。我该如何解决这个问题?

最佳答案

如果您可以使用 XSD 1.1(在 Xerces beta 和 Saxon-EE 中实现),那么您可以使用断言来做到这一点。

在这种情况下有时有用的另一种技术是将验证过程实现为两阶段管道,包括转换和验证步骤。转换通常会转换

<col name="name1">test1</col>

<name1>test1</name1>

然后您就有了一个易于接受 XSD 1.0 验证的结构。

关于xml - XSD : Check order of child elements based on attribute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14230482/

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