假設我現在有這樣的代碼:如何選擇XSLT中父元素之後的第一個元素?
<p>
<greeting>
<a name="hello">Hello!</a>
</greeting>
</p>
<ul>
<p>This paragraph needs to be selected</p>
</ul>
基本上,而在第一部分中的<a>
元件上時,我需要選擇以下<ul>
元素的所有孩子。有沒有辦法在XSLT中做到這一點?
假設我現在有這樣的代碼:如何選擇XSLT中父元素之後的第一個元素?
<p>
<greeting>
<a name="hello">Hello!</a>
</greeting>
</p>
<ul>
<p>This paragraph needs to be selected</p>
</ul>
基本上,而在第一部分中的<a>
元件上時,我需要選擇以下<ul>
元素的所有孩子。有沒有辦法在XSLT中做到這一點?
假設你被放置在一個元素,那麼以下兩種表現形式將工作
<xsl:value-of select="../../following-sibling::ul[1]/p" />
<xsl:value-of select="ancestor::p[1]/following-sibling::ul[1]/p" />
ŧ他首先假設a在這種情況下是'大孩子',而第二個將在任何級別上與a一起使用,但假設您想要檢查的相關「祖先」始終是p 。
謝謝你的答案,看起來像它會工作(只是讓我先測試它)。我很搗亂「跟隨兄弟姐妹」,但顯然做錯了。 –
理想情況下,您需要知道<p>
和<ul>
的父項。假設元素是<x>
,你會選擇使用祖先軸,則路徑追加到你想要的後裔:
<xsl:copy-of select="ancestor::x/ul/*">
或者,如果這是變量,你可以使用通配符:
<xsl:copy-of select="ancestor::*[3]/ul/*">
嚴格地說,你的XML格式不正確,因爲它缺少一個根元素。我們可以假設你的示例只是一個片段,實際的XML格式良好(如果不是,使用XSLT將會很麻煩!) –
@TimC,這是正確的,它只是一個示例。 –