我在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>
但它不起作用。
答案 0 :(得分:4)
这样做没有公开的XPath 2.0功能。事实上,XPath 2.0类型不是一流的值;无法从仅在运行时知道的名称中查找类型,或者询问类型的属性。您需要使用扩展:Xerces和Saxon都有用于查询模式组件的API,您可以构建调用这些扩展函数的Java扩展函数。