根据元素值改变 XSD 中的类型?

2024-05-03

我有以下两个 XML 文档:

<struct>
<type>a</type>
<p1 xsi:nil="true"/>
<p2 xsi:nil="true"/>
</struct>

<struct>
<type>b</type>
<p1 xsi:nil="true"/>
<p2 xsi:nil="true"/>
</struct>

我希望构建一个模式来验证如果元素类型的值为“a”,那么它是子元素(又名p1 & p2) 应该为零或为空。 而当元素类型是其他类型时,例如“b”,则p1 or p2元素可以包含任何内容,也可以不包含任何内容。


这是“共现约束”的典型示例(一个元素的类型取决于另一个元素的值)。这无法使用 XSD 1.0 完成,但可以使用 XSD 1.1 通过断言来完成

<xs:assert test="if (type eq 'a') then nilled(p1) else true()"/> 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据元素值改变 XSD 中的类型? 的相关文章

随机推荐