Xml XSD中的无序元素包含强制元素和无界元素?
我的XSD中有以下元素:Xml XSD中的无序元素包含强制元素和无界元素?,xml,xsd,Xml,Xsd,我的XSD中有以下元素: 您可以看到,文档必须始终具有发票,并且可以选择具有单个报表和零个或多个附加值 问题是这些元素可能有不同的外观顺序,所以我不能再使用序列了。我试图使用all,但问题是附加元素,因为它有maxOccurs=“unbounded” 我怎样才能拥有一个无序的元素列表,其中一个元素总是必需的,而另一个元素的出现次数是无限的?三条建议。要么: 强加命令。几乎总是认为需要允许任何 在实践中,元素的排序是不必要的 使用XSD 1.1,其中XSD:all支持maxOccurs=“un
您可以看到,文档必须始终具有发票,并且可以选择具有单个报表和零个或多个附加值
问题是这些元素可能有不同的外观顺序,所以我不能再使用序列了。我试图使用all
,但问题是附加元素,因为它有maxOccurs=“unbounded”
我怎样才能拥有一个无序的元素列表,其中一个元素总是必需的,而另一个元素的出现次数是无限的?三条建议。要么:
强加命令。几乎总是认为需要允许任何
在实践中,元素的排序是不必要的
使用XSD 1.1,其中XSD:all
支持maxOccurs=“unbounded”
在您希望允许的元素周围使用包装器
maxOccurs=“unbounded”
。请参阅下面XSD中的附加列表
,了解工作示例
使用包装器元素的XSD解决了无限XSD:all限制
我想使用包装器,但目前无法修改xml结构。不幸的是,在这种情况下,顺序不可能总是一样的。我想保留序列
,但我不能。那么我假设您不能强制订购?然后转到XSD 1.1,其中XSD:all
支持maxOccurs=“unbounded”
。如何切换到1.1?检查验证解析器是否支持XSD 1.1,或者是否能够切换到支持XSD 1.1的解析器。我正在使用Notepad++的XML工具插件。我不知道验证解析器能做什么。你可以想象我是一个大XSD noob:(
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="documents">
<xs:complexType>
<xs:all>
<xs:element name="invoice" minOccurs="1" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="report" minOccurs="0" maxOccurs="1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="additionalList" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="additional" minOccurs="0" maxOccurs="unbounded">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>