Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml XSD:基于属性检查子元素的顺序_Xml_Xsd - Fatal编程技术网

Xml XSD:基于属性检查子元素的顺序

Xml XSD:基于属性检查子元素的顺序,xml,xsd,Xml,Xsd,我试图检查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> </m

我试图检查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>

测试1
测试2
测试3
测试4
真的
我需要验证子元素是否以正确的顺序显示。我的文件中的子元素都有相同的名称,但属性不同

<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,但是我不能在“attribute”类型下定义一个complexType,我只能定义一个简单类型。但是我不能在simpleType下使用xs:sequence。如何修复此问题?

不幸的是,XSD 1.0无法实现您想要的操作。使用
sequence
可以指定不同类型的所需顺序,但不能指定具有不同数据的相同类型


我相信这是可以用的

不幸的是,XSD 1.0不可能实现您想要的功能。使用
sequence
可以指定不同类型的所需顺序,但不能指定具有不同数据的相同类型

我相信这是可以用的

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

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

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

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

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

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

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

test1
然后您就有了一个易于接受XSD1.0验证的结构