【发布时间】:2017-04-05 21:32:38
【问题描述】:
我有一个如下所示的 XML 文档(最小可重现示例):
<root start="baz">
<child name="foo">...</child>
<child name="bar">...</child>
<child name="baz">...</child>
</root>
我希望我的架构强制执行这样一个事实,即根元素上的 start 属性必须引用具有该名称的现有 child 节点。如果没有具有该值的 name 属性的子节点,则验证应该失败。换句话说,上面应该验证,但这应该不:
<root start="baz">
<child name="foo">...</child>
<child name="bar">...</child>
</root>
有什么好的方法可以做到这一点?我真的需要使用带有合适 XPath 表达式的assert,还是有更自然的方式在 XSD 中表达它?谢谢。
PS:假设start 是必需属性,而name 子属性在适当的范围内被标记为唯一。
【问题讨论】: