【发布时间】:2017-01-27 20:34:51
【问题描述】:
我有一个这样的 XML sn-p:
<AAA>
<Field name="a"/>
<Field name="b"/>
<Field name="x"/>
<User id="x" id2="f"/>
<User id="y"/>
</AAA>
<AAA>
<Field name="r"/>
<Field name="z"/>
</AAA>
我需要这样的规则,如果用户标签存在,它应该检查 id 和 id2 的属性值是否存在于名称属性下的一个字段。
所以在第一个 AAA 标记中,它将验证并给出 2 个错误,因为 "f" 不作为字段名称存在, 也不存在>"y"。
AAA 标记并不总是有用户标记,用户标记也不总是同时具有 id 和 id2。
我一直在搞乱一些 XPath 表达式,但无济于事。
【问题讨论】:
-
您将 Schematron 与 XPath 2.0 还是 1.0 一起使用?在 XPath 2.0 中,您可以轻松编写
some $user in User satisfies not($user/(@id, @id2) = Field/@name。 -
那还不够。
-
请显示完整的输入 XML 文档。谢谢!此外,“那并没有完全做到”不是一个非常精确的错误消息。究竟是什么不起作用?
标签: xml xslt xpath xml-validation schematron