2013-04-26 76 views
1

給出了下面的XML片段相同元素的XML元素:選擇immeditely以下使用XPath

<?xml version="1.0" encoding="UTF-8"?> 
<RootNode> 
    <PR1>PR1</PR1> 
    <ROL>one</ROL>* 
    <ROL>two</ROL>* 
    <DG1>DG1</DG1> 
    <ROL>three</ROL> 
    <ZBK>ZBK</ZBK> 
    <ROL>four</ROL> 
</RootNode> 

是否有可能選擇的是正確的PR1元素後面(標有星號的那些兩個ROL元素)與XPath表達式,但不是其他ROL元素?我試過

//PR1/following-sibling::ROL 

但是,這也會得到其他ROL段。有沒有辦法阻止XPath在第一次非匹配命中後尋找元素?或者,也許有另一種方法沒有跟隨兄弟姐妹?

回答

2

我想答案會更喜歡這樣的:

<xsl:value-of select="//PR1[1]/following-sibling::ROL[ 
    generate-id(preceding-sibling::*[name() != 'ROL'][1])= generate-id(//PR1[1]) 
    ]" /> 

找到以下同胞第一PR1的ROL其中
先行兄弟(這是不是一個ROL)是一樣的第一PR1。

+0

確實有效,它確實很聰明。謝謝 :) – Viciouss 2013-04-26 12:43:48