如果类型等于类型或从类型派生,如何检入xPath

时间:2011-11-30 09:11:38

标签: xml xpath xsd schematron

我在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>

但它不起作用。

1 个答案:

答案 0 :(得分:4)

这样做没有公开的XPath 2.0功能。事实上,XPath 2.0类型不是一流的值;无法从仅在运行时知道的名称中查找类型,或者询问类型的属性。您需要使用扩展:Xerces和Saxon都有用于查询模式组件的API,您可以构建调用这些扩展函数的Java扩展函数。