XSD在元素列表中限制属性值的正确语法是什么?

时间:2010-03-31 08:59:25

标签: xml xsd

XSD架构定义以下限制的正确语法是什么:

在元素列表中,我们必须指定该属性可以包含“c”值的无限次数,但值“b” - 零或仅一次。

例如,正确的xml如下所示:

<root>
<elem atr="c">111</elem>
<elem atr="c">222</elem>
<elem atr="b">333</elem>
<elem atr="c">444</elem>
<elem atr="c">555</elem>
</root>

不正确的是:

<root>
<elem atr="c">111</elem>
<elem atr="c">222</elem>
<elem atr="b">333</elem>
<elem atr="c">444</elem>
<elem atr="b">555</elem>
</root>

2 个答案:

答案 0 :(得分:3)

我认为你做不到。最接近的是xsd:key:

<xsd:key name="idKey">
  <xsd:selector xpath="elem"/>
  <xsd:field xpath="@atr"/>
</xsd:key>

但这并不是你想要的。

XML Schema通常使用非常有限的方法来定义依赖于值的约束。看看Schematron。

答案 1 :(得分:0)

据我所知,这是不可能的。您可以atr使其独一无二......