【问题标题】:How to use XSD 1.0 to ensure that only one element in sequence has child?如何使用 XSD 1.0 确保序列中只有一个元素有子元素?
【发布时间】:2026-01-11 23:30:01
【问题描述】:

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

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

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

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

我试过xs:choice,但问题是,我会在 xml 中同时拥有这两个元素,但只有一个应该包含子元素。如何验证?

任何帮助将不胜感激。

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

【问题讨论】:

    标签: xml xsd xsd-validation xsd-1.0


    【解决方案1】:

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

    【讨论】: