如何使用xs:choice在XSD中指定两个元素,其中两个元素也有效?

时间:2015-08-20 09:47:24

标签: xml xsd

<xs:complexType name="test">
<xs:choice  >
  <xs:element ref="mstns:element1" ></xs:element>
  <xs:element ref="mstns:element2" ></xs:element>
  <xs:sequence>        
    <xs:element ref="mstns:element1"  minOccurs="1" maxOccurs="1"></xs:element>
    <xs:element ref="mstns:element2" minOccurs="1" maxOccurs="1" ></xs:element>
  </xs:sequence>
</xs:choice>

您好,

我目前正在尝试编写XSD架构文件,但我不知道如何指定 两个元素出现在两个元素中,或者其中之一。我尝试了上面的代码片段,但它不起作用,因为它似乎不允许多个元素名称。

怎么办?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您的内容模型是:(A | B | AB),还是(A | B | AB | BA)

在第一种情况下,您需要将其写为

(A B? | B)

在第二种情况下,您需要将其写为

(A B? | B A?)

其中“|”代表选择和“?”表示可选性(和连接表示序列)。

或者你可以使用xs:all。

这需要满足XSD对明确性的要求而不需要前瞻:当有选择时,你必须始终能够决定在输入中没有任何前瞻的情况下采用哪个分支。