如何在Xpath中将两个节点组合成一个组?

时间:2015-11-01 13:57:10

标签: html xml xpath

我有这样的HTML:

<div>
    <div class="a">10</div>
    <div class="b">11</div>
    <div class="a">20</div>
    <div class="b">21</div>

</div>

有时我会使用//div[@class="a" or @class="b"]来获得四个群组:[10, 11, 20, 21]

但是这次我想得到这样的东西,两组:["10 11", "20 21"],我可以吗?

我的意思是如何将两个节点(a类,b类)组合成一个组?

2 个答案:

答案 0 :(得分:2)

这将是一个有效的XPath 2.0解决方案(running example):

//div[@class="a"]/concat(
    text(), 
    ' ', 
    string-join((following-sibling::div[@class="b"]/text())[1], '')
)

我不认为这里可以使用XPath 1.0的解决方案。

答案 1 :(得分:1)

XPath 1.0只有四种数据类型:node-set,string,number和boolean。您所需的结果不是这些类型之一的实例,因此没有XPath 1.0可以返回它。但是,XPath 2.0允许字符串序列,以便@LukasEder指出,它可以用2.0完成