XPath在元素中查找最后一个文本节点

问题描述 投票:1回答:3

如何选择元素a中的最后一个文本?

元素可以包含子元素。

<a>bla di bla <b>foo bar</b> yes!</a>

应该给我“是的!”和

<a>bla di bla <b>foo bar</b></a>

应该给我“foo bar”和

<a>bla di bla</a>

应该给我“bla die bla”

xml xslt xpath xslt-2.0
3个回答
1
投票

我会使用//a/descendant::text()[last()],它选择三个文本节点

 yes!
foo bar
bla di bla

在样本中

<body>
<a>bla di bla <b>foo bar</b> yes!</a>
<a>bla di bla <b>foo bar</b></a>
<a>bla di bla</a>
</body>

https://xqueryfiddle.liberty-development.net/nbUY4kn上使用XQuery进行在线示例。

建议的路径表达式//a/descendant::text()[last()]适用于XPath 1及更高版本。


1
投票

这个XPath,

(/a//text())[last()]

将选择a的文本节点后代中的最后一个文本节点。


更新:OP已指出文档中可能有多个a元素,并希望为每个a元素选择最后一个文本节点后代。

这个XPath 2.0表达式,

for $a in //a 
  return ($a//text())[last()]

将满足更新的要求。


-1
投票

使用此Xpath:

//*/text()[last()]
© www.soinside.com 2019 - 2024. All rights reserved.