XSD验证元素至少具有指定的属性之一

问题描述 投票:0回答:1

使用XSD架构验证1.0,我要验证元素至少指定了一个属性。

例如,像这样的简单元素:

<foo a="1" b="2" c="3" />

我想确认至少指定了属性bc。但请注意,也可以同时指定两者-它们并不互斥。

我尝试使用以下方式的键:

    <xs:key name="AttributeSpecified">
        <xs:selector xpath="." />
        <xs:field xpath="@b|@c" />
    </xs:key>

但是在同时指定了两个属性时会失败(因为返回了多个结果)。

可以完成吗?

validation xsd xsd-validation
1个回答
0
投票

这在XSD 1.0中是不可能的。在XSD 1.1中,可能是可能的。

我是XML Schema的粉丝,但是我不会选择这种类型的验证。您也许可以使用XSD1.1使其工作,但是如果您的要求变得更加复杂,最终可能会遇到一些可怕的约束。另一方面,XPath表达式可以优雅地表达您可以想到的任何约束,并且您无需弯曲语言即可使其发挥作用。

© www.soinside.com 2019 - 2024. All rights reserved.