限制<;中的元素计数数;全部>;XSD模式
我想做的是,声明一个名为“data”的父元素,它有10个子元素,其中一个元素是有条件的 我的XSD是:限制<;中的元素计数数;全部>;XSD模式,xsd,xsd-validation,xsd-1.1,Xsd,Xsd Validation,Xsd 1.1,我想做的是,声明一个名为“data”的父元素,它有10个子元素,其中一个元素是有条件的 我的XSD是: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" attribute
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">
<xs:element name="data" >
<xs:complexType>
<xs:sequence>
<xs:element name="sub_data" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:all >
<xs:element ref="A"/>
<xs:element ref="B" minOccurs="0" maxOccurs="1"/>
<xs:element ref="C"/>
<xs:element ref="D"/>
<xs:element ref="E"/>
<xs:element ref="F"/>
<xs:element ref="G"/>
<xs:element ref="H"/>
<xs:element ref="I"/>
<xs:element ref="J"/>
<xs:element ref="K"/>
<xs:element ref="L"/>
<xs:element ref="M"/>
<xs:element ref="N"/>
<xs:element ref="element_group"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="status"/>
</xs:complexType>
</xs:element>
<xs:element name="O" type="xs:string" substitutionGroup="element_group">
<xs:element name="P" type="xs:string" substitutionGroup="element_group">
<xs:element name="Q" type="xs:string" substitutionGroup="element_group">
</xs:schema>
要求是:
的一部分,这意味着从
到
的元素计数正好是四
到
的任意一个,但最后的计数只有四个,请帮助我。
目前,我无法在
中设置maxoccurrents
,设置maxoccurrents后不会编译xsd。处理此问题的最简单方法可能是使用xsd 1.1并在父级上使用断言来指定必须恰好(或最多)有四个子级。您还需要使所有组中的每个子组都是可选的,因为其中十三个不会出现
最好的方法可能是重新设计XML以更好地使用模式语言,而不是与之对抗。但是,很难给出建议,因为您的示例非常抽象,不清楚您为什么要强加您提到的要求。感谢您的支持,我通过添加parent