如何使用XSD 1.0来确保序列中只有一个元素具有子元素?

时间:2016-07-04 10:29:16

标签: xml xsd xsd-validation xsd-1.0

我必须验证可能采用以下任何一种形式的XML

<myshape>
        <dimension/>
        <mycircle>
            <radius>2</radius>
        </mycircle>
</myshape>

<myshape>
        <dimension>
            <height>5</height>
        </dimension>
        <mycircle/>
</myshape>

也就是说,只有一个元素应包含该值,而其他元素则不应包含该值。

我已经尝试了xs:choice,但问题是,我在xml中有两个元素,但只有一个元素应该包含子元素。我该如何验证?

任何帮助都将不胜感激。

PS:这是遗留代码中的问题,因此我无法切换到XSD1.1

1 个答案:

答案 0 :(得分:2)

您不能在XSD 1.0中表示您的约束(元素的内容模型不能基于另一个元素的值。)如果您不能使用XSD 1.1的断言,那么您必须XSD带外强制执行你的约束。