select 并使用正则表达式计算嵌套元素

select and count nested elements with regex expression

我有一个这样的 XML 文件:

<apps>
    <mobile-app>
    </mobile-app>
    <mobile-app>
    </mobile-app>
    <web-app>
    </web-app>
    <xpto>
    </xpto>
</apps>

我想数一数里面有多少 *-apps,比如 count(//apps/"<(.*)-app>")

已经尝试在这里搜索但是很难,因为很多问题都有与某些编程语言的功能相关的 xpath 表达式,这是我想在这里避免的。

在 XPath 2.0 或更高版本中,您可以使用 count(apps/*[matches(local-name(), '-app$')]) 通过正则表达式匹配来解决此问题。但是,检查名称的末尾是 -app 就足以使用 ends-with(local-name(), '-app').