0

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

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

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

请注意,该subGroup元素可以作为subGroupor出现SubGroup,并且该sub元素可以作为subor出现Sub

有什么方法可以缩短这个 XPath?

我有多个与此类似的查询,但有效地复制或扩展了该sub部分(例如[a='b' and (sub='Bar' or Sub='Bar')]。即使部分不同,大多数查询中也存在差异和subGroup差异。SubGroupsubSub//group[group='Foo']

4

1 回答 1

0

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

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

其他变体将依赖于translate()and name(),就像 Marvin Smit 在他的评论中概述的那样。

于 2013-10-22T17:22:15.273 回答