我正在尝试在XSD XML Schema中做一些特定的事情。我想将元素设置为use="required"
,只有当另一个元素的属性有特定值时才会这样。
示例:
<udi att1="all">
<name att2="dsd"/>
<phone att3="dsd"/>
</udi>
仅当phone
值为att1
时,我才需要all
元素。
我被告知XPath可以为此工作 - 或者有更好的方法吗?
答案 0 :(得分:8)
XML不是关系型的,而是层级的。模式旨在强制执行嵌套规则,而不是兄弟之间的规则。这不是你可以用XSD做的事情。
但是,在解析或创建符合格式的文档时,可以执行此操作。在这种情况下,当您解析XML文档时,您会强制执行约束,就像您在问题中所述的那样。
答案 1 :(得分:0)
对于后人:可以实现这一要求:
(a)使用XSD 1.1中的新功能(断言,条件类型赋值)
(b)使用Schematron与XSD一起进行验证。