2015-11-01 161 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