我试图指定一个大致这样的模式:
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="baz" />
<xs:choice>
<xs:element name="foo" minOccurs="1" />
<xs:element name="bar" minOccurs="1"/>
</xs:choice>
<xs:element name="bam" />
</xs:sequence>
</xs:complexType>
</xs:element>
非常简单,我们在<choice>
元素之前和之后都有一个包含一些必需元素的序列。我想指定以下行为,但是在验证此架构的实例时:
- 如果选择的内容是
<foo>
元素,则验证器应根据foo的架构验证<foo>
的子元素 - 如果选择的内容是
<bar>
元素,则验证者应忽略<bar>
的孩子,并继续验证序列的其余部分(因此,在此示例中,检测到有一个<bar>
元素,它只会检查序列中的下一个<bam>
元素,而忽略<bar>
和</bar>
之间的所有内容) - 显然,验证者应强制使用
<choice>
标签-此位置可以有一个<foo>
或一个<bar>
,但不能两个都
这样做的原因是,我试图从自己的自定义应用程序中验证XML文件。我可以访问<foo>
的.xsd文件,但不能访问<bar>
的.xsd文件,因此我正在尝试验证我可以验证的所有内容,而忽略了我可以执行的操作” t。
我是否可以在架构中添加一些内容,告诉验证者使用<choice>
标签,但随后只关心验证所选元素之一?