如何指定 XSD 和 xs:choice 中的两个元素,其中两个元素也有效?
How to specify two elements in XSD with xs:choice, where both elements are also valid?
<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 架构文件,但我不知道如何指定
两个元素,其中两个元素都出现,或者其中之一。我尝试了上面的代码片段,但它不起作用,因为似乎不允许使用多个元素名称。
怎么办?
感谢您的帮助。
您的内容模型是什么:是 (A | B | AB)
,还是 (A | B | AB | BA)
?
第一种情况需要写成
(A B? | B)
第二种情况需要写成
(A B? | B A?)
其中“|”代表选择和“?”表示可选性(连接表示顺序)。
或者您可以使用 xs:all。
这是为了满足 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 架构文件,但我不知道如何指定 两个元素,其中两个元素都出现,或者其中之一。我尝试了上面的代码片段,但它不起作用,因为似乎不允许使用多个元素名称。
怎么办?
感谢您的帮助。
您的内容模型是什么:是 (A | B | AB)
,还是 (A | B | AB | BA)
?
第一种情况需要写成
(A B? | B)
第二种情况需要写成
(A B? | B A?)
其中“|”代表选择和“?”表示可选性(连接表示顺序)。
或者您可以使用 xs:all。
这是为了满足 XSD 的无前瞻性明确要求:当有选择时,您必须始终能够在输入中没有任何前瞻性的情况下决定采用哪个分支。