在 xsd 模式中是否有办法要求一个元素在某处有另一个元素作为后代?
例如,元素父元素需要后代 desc。这是有效的:
<parent>
<a>
<b>
<desc></desc>
</b>
</a>
</parent>
是这样的:
<parent>
<c>
<desc></desc>
</c>
</parent>
但这不是:
<a>
<parent>
<b/>
</parent>
</a>
parent 的潜在子元素很多且复杂,因此很难枚举每种可能的有效配置。
诸如键/选择器架构元素之类的东西似乎可以工作,我可以在其中提供定义 desc 元素的有效位置的 xpath 表达式,但我发现的所有示例都旨在匹配属性的值.
最佳答案
不,(几乎)所有 XML 模式验证都是浅层的,在规范中称为“本地”。以下摘录强调类型验证是“本地”验证。
Element Validated by Type If an element information item is ·valid· with respect to a ·type definition· as per Element Locally Valid (Type) (§3.3.4), [it is marked as] ·validated·.
唯一的异常(exception)是身份约束,例如唯一性和键引用,它们在 XML 文档中具有广泛的范围,但用途很窄。
关于xsd - 要求一个元素有另一个元素作为后代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432075/