跳过选择标签中一个标签的XML验证

我试图指定一个大致这样的模式:

    <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>标签,但随后只关心验证所选元素之一?

hf2baobei 回答:跳过选择标签中一个标签的XML验证

如果您为bar提供xs:anyType类型,则可以包含任何内容-有效地是不验证内容。

本文链接:https://www.f2er.com/2318926.html

大家都在问