具有多个条件的较小XPath

时间:2013-10-22 17:04:14

标签: xml xpath

我正在使用XPath处理XML文档,其中特定元素的大小写可能因文档而异(请不要问;我不控制文档生成)。

为了处理这个问题,我的一个XPath查询如下所示:

//group[group='Foo']/subGroup[sub='Bar' or Sub='Bar'] | //group[group='Foo']/SubGroup[sub='Bar' or Sub='Bar']

请注意,subGroup元素可以subGroupSubGroup出现,sub元素可以显示为sub或{{1} }。

有没有办法缩短这个XPath?

我有多个与此类似但有效复制或展开Sub部分的查询(例如sub[a='b' and (sub='Bar' or Sub='Bar')]subGroup差异以及{{1即使SubGroup部分不同,大多数查询都会出现{}和sub个差异。

1 个答案:

答案 0 :(得分:0)

唉,它不那么长但肯定不会那么丑陋

//group[group='Foo']/*[self::subGroup | self::SubGroup][sub='Bar' or Sub='Bar']

其他变体将依赖于translate()name(),例如his comment中的Marvin Smit概述。