当前元素文本中双大写文本的 XPath 不是子元素

XPath for double caps text in current element text not child

这件事看似简单,实则复杂。

我的XML如下:

<authors>
<au>
<fnm>XXY</fnm> MArio</au>
<au>
<fnm>Xxy</fnm> MArio</au>
<au>
<fnm>XXy</fnm> Mario</au>
</authors>

我的条件是

  1. 需要在 fnm 标签
  2. 中找到带有双大写字母但不包含的 <au> 标签

基于以上 XML 文件前两个作者标签 au 应该可以找到,但不能找到第三个 au

我试过XPath代码

//au[text()][matches(.,'[A-Z][A-Z]')] 

但它不起作用。

我想你想要 //au[text()[matches(., '[A-Z]{2}')]].

可能是你想要的 (+1),但万一你真的

  1. Need to find tag with double caps but not with in fnm tag

然后使用这个 XPath:

//*[not(self::fnm) and text()[matches(., '[A-Z]{2}')]]

...编辑您的问题后,我看到一个隐藏的 <au> 标签:

  1. Need to find <au> tag with double caps but not with in fnm tag

我为您解决了这个问题。 (您必须使用 `<au>` 来转义标记并使其可见。)所以,显然您确实想要 Martin 发布的内容。