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

时间:2018-09-05 13:15:42

标签: xml xslt xpath xslt-2.0

如何选择元素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”

3 个答案:

答案 0 :(得分:1)

此XPath,

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

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


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

此XPath 2.0表达式

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

将满足更新的要求。

答案 1 :(得分: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和更高版本。

答案 2 :(得分:-1)

使用此Xpath:

data %>% 
  group_by(Class) %>% 
  mutate(run=row_number()) %>% 
  melt(id.vars = c("Class", "run")) %>% 
  mutate(run=as.factor(run)) %>% 
  ggplot(aes(variable, value, colour=run, group=run)) + 
  geom_point() + geom_line() + facet_wrap(~Class)
相关问题