XSD使标签必需的值



我想创建一个XSD,当tag1的val为"x"时需要tag2,这基本上是使标签"required"在特定值的情况下。这可能吗?

<T>
<Level template = "a">
<N>a</N>
</Level>
<Level template = "b">
<N>b</N>
<P>c</P>
</Level>
</T>

在那个XML示例中,我想创建2个级别,其中一个具有名为"a"的模板,另一个具有模板" & "。但是,我希望XSD文件禁止创建模板" "没有标记P(这意味着上面的例子是有效的)。使用:

<T>
<Level template = "b">
<N>b</N>
</Level>
</T>

将无效,因为模板名是"b",但是我们没有"P"标签。

在我的例子中,模板的名称应该是具体的-但如果我可以用几个选项来做到这一点,我会很高兴听到。

这不能在XSD 1.0中完成,它需要XSD 1.1。

XSD 1.1在Altova, Saxon和Xerces模式处理器中得到支持,但在libxml或Microsoft中不支持。

要在XSD 1.1中实现这一点,在内容模型中将元素p定义为可选的,并添加断言:
<xs:assert test="if (@template = 'b') then exists(child::P) else true()"/>

相关内容

  • 没有找到相关文章

最新更新