2013-10-14 132 views
0

假設我現在有這樣的代碼:如何選擇XSLT中父元素之後的第一個元素?

<p> 
    <greeting> 
     <a name="hello">Hello!</a> 
    </greeting> 
</p> 
<ul> 
    <p>This paragraph needs to be selected</p> 
</ul> 

基本上,而在第一部分中的<a>元件上時,我需要選擇以下<ul>元素的所有孩子。有沒有辦法在XSLT中做到這一點?

+0

嚴格地說,你的XML格式不正確,因爲它缺少一個根元素。我們可以假設你的示例只是一個片段,實際的XML格式良好(如果不是,使用XSLT將會很麻煩!) –

+0

@TimC,這是正確的,它只是一個示例。 –

回答

1

假設你被放置在一個元素,那麼以下兩種表現形式將工作

<xsl:value-of select="../../following-sibling::ul[1]/p" /> 

<xsl:value-of select="ancestor::p[1]/following-sibling::ul[1]/p" /> 

ŧ他首先假設a在這種情況下是'大孩子',而第二個將在任何級別上與a一起使用,但假設您想要檢查的相關「祖先」始終是p

+0

謝謝你的答案,看起來像它會工作(只是讓我先測試它)。我很搗亂「跟隨兄弟姐妹」,但顯然做錯了。 –

0

理想情況下,您需要知道<p><ul>的父項。假設元素是<x>,你會選擇使用祖先軸,則路徑追加到你想要的後裔:

<xsl:copy-of select="ancestor::x/ul/*"> 

或者,如果這是變量,你可以使用通配符:

<xsl:copy-of select="ancestor::*[3]/ul/*"> 
相關問題