我在 Schematron 中使用 xPath。我能够检查类型是否等于目标类型。例如“xsd:string eq xsd:string”。
<sch:rule context="uis:variable/uis:dependency/uis:length">
<sch:assert test="**../../@type eq 'xsd:string'**">
Text
</sch:assert>
</sch:rule>
如何检查用户定义的类型是否派生自 xsd:string?我试过:
<sch:rule context="uis:variable/uis:dependency/uis:length">
<sch:assert test="**../../@type instance of attribute (*,xsd:string)**">
Text
</sch:assert>
</sch:rule>
但它不起作用。
最佳答案
没有公开的 XPath 2.0 功能来执行此操作。事实上,XPath 2.0 类型不是一流的值;无法从仅在运行时已知的名称中找到类型,或询问该类型的属性。您将需要使用扩展:Xerces 和 Saxon 都有用于查询模式组件的 API,您可以构建调用这些的 Java 扩展函数。
关于xml - 如果类型等于类型或从类型派生,如何检查 xPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323452/