xml - 如果类型等于类型或从类型派生,如何检查 xPath

标签 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>

但它不起作用。

最佳答案

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

关于xml - 如果类型等于类型或从类型派生,如何检查 xPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8323452/

相关文章:

xml - 使用 VBA 在 XML 文件中动态搜索数据

xml - Swift - 无法将类型 'AEWebServices.Type' 的值分配给类型 'NSXMLParserDelegate?' 的值

xslt - XPath 引用

xsd - plone.app.theming 包括来自外部站点的内容

java - 如何使用 xsd 限制 xml 文件中的 ENTITY 标记

java - 避免使用 web.xml 硬编码 WSDL 位置

linq - 是否有与 Linq to XML 等效的 XPath?

ruby - XPath 获取两个元素之间的兄弟元素

java - 来自 xsd 的 JAXB 类(其中包含其他 xsd 导入)时出错

c# - 使用 Linq 获取 CDATA XML 部分