Xsd XML模式结合了选择和全部
我想进行如下验证:Xsd XML模式结合了选择和全部,xsd,Xsd,我想进行如下验证: <A> <B> or <C> <D> </A> 或 在中,第一个元素应该是B和C中的一个。第二个元素是D。同时,第一个元素B或C和第二个元素不按顺序排列。它可能会变得越来越糟糕。有人知道怎么做吗?要匹配您的示例,请尝试: <?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/20
<A>
<B> or <C>
<D>
</A>
或
在中,第一个元素应该是B和C中的一个。第二个元素是D。同时,第一个元素B或C和第二个元素不按顺序排列。它可能会变得越来越糟糕。有人知道怎么做吗?要匹配您的示例,请尝试:
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="A">
<xs:complexType>
<xs:sequence>
<xs:choice>
<xs:element name="B" type="xs:string"/>
<xs:element name="C" type="xs:string"/>
</xs:choice>
<xs:element name="D" type="xs:string" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我得到了最佳实践。应如下所示:
<xs:element name="A">
<xs:complexType>
<xs:all>
<xs:element ref="Choice" minOccurs="1" maxOccurs="1"/>
<xs:element ref="D" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="D" type="xs:string"/>
<xs:element name="Choice" abstract="true"/>
<xs:element name="B" substitutionGroup="Choice">
</xs:element>
<xs:element name="C" substitutionGroup="Choice">
</xs:element>
您能为您描述的第二部分添加有效的xml吗,因为我不遵循它->“同时,第一个元素B或C和第二个元素不按顺序排列。它可以变成和。”以下工作:,,,在您的回答中,它是按顺序排列的。我不希望这两个元素按顺序排列。有效案例如下所示:@程晨编辑了答案,涵盖了你们提到的所有有效案例。我得到了最佳实践,并刚刚发布了它。谢谢你的回答。@MichałSzkudlarek你能帮我投票表决我的问题或回答吗?。。我正在努力获得我的前15名声誉。。太难了!
<xs:element name="A">
<xs:complexType>
<xs:all>
<xs:element ref="Choice" minOccurs="1" maxOccurs="1"/>
<xs:element ref="D" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
</xs:element>
<xs:element name="D" type="xs:string"/>
<xs:element name="Choice" abstract="true"/>
<xs:element name="B" substitutionGroup="Choice">
</xs:element>
<xs:element name="C" substitutionGroup="Choice">
</xs:element>