XSD限制元素列表中属性值的正确语法是什么?
问题描述:
什么是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>
答
据我知道这是不可能的。你可以使atr
唯一,但...
答
我认为你不能这样做。最接近的是xsd:key:
<xsd:key name="idKey">
<xsd:selector xpath="elem"/>
<xsd:field xpath="@atr"/>
</xsd:key>
但它不完全是你想要的。
XML模式通常具有非常有限的方法来定义值依赖约束。看看Schematron。