2015-11-01 163 views
2

我有HTML这样的:如何在Xpath中将两个节点组合成一个组?

<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"],可以吗?

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

+0

您得到你所描述的要求。有什么问题 ? –

+0

使用// div [@ class =“a”或@ class =“b”]我得到了四个组,但我想得到两个组,每个组包含class a,class b,像这样,group 1:“10 11“,第2组:”20 21“ – Kixoms

+0

仅使用XPath,还是XSLT选项? –

回答

1

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

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

我不认为使用XPath 1.0的解决方案将有可能在这里。

1

XPath 1.0只有四种数据类型:节点集,字符串,数字和布尔值。您所需的结果不是这些类型之一的实例,因此,XPath 1.0无法将其返回。然而,XPath 2.0允许@LukasEder指出的字符串序列,它可以使用2.0