2012-01-20 117 views
4

是我的XSLT:如何獲取當前節點變量的父節點元素?下面

<xsl:template match="/"> 
      <xsl:call-template name="generateLinks"> 
     <xsl:with-param name="currentPageBranchVariable" select="//Item[@CurrentPageBranch='true']"></xsl:with-param> 
     </xsl:call-template> 

    </xsl:template> 

和:

<xsl:template name="generateLinks"> 
    <xsl:param name="currentPageBranchVariable"></xsl:param> 

    <xsl:value-of select="$currentPageBranchVariable/@FullName"/> 

    // how to get the parent node of $currentPageBranchVariable? 

    </xsl:template> 

可以看出,在$ currentPageBranchVariable是其中包含的項目節點的第二個模板的變量。

怎麼可能從那裏得到它的父元素?

我試過以下,但沒有奏效:

<xsl:value-of select="../$currentPageBranchVariable/@FullName"/> 
<xsl:value-of select="parent::node()/$currentPageBranchVariable/@FullName"/> 
<xsl:value-of select="parent($currentPageBranchVariable)/@FullName"/> 

希望這個問題是清楚的。

也許我想要做的事是不可能的?

謝謝,

回答

5

$currentPageBranchVariable的是其含有Item節點的第二模板 的變量。

怎麼可能從那裏得到它的父元素?

只需使用

$currentPageBranchVariable/.. 

這個選擇對父母的所有節點(每一個)(在這種情況下只有一個)包含在$currentPageBranchVariable

2

您正在把軸放在錯誤的位置。

您的表達式選擇上下文節點的父節點,而不是$currentPageBranchVariable。由於您從/的匹配中調用模板,因此沒有父級可以從中選擇@FullName

您需要從$currentPageBranchVariable中選擇父級,方法是使用該變量之後的父軸,而不是之前。

其中任何一個都可以。

<xsl:value-of select="$currentPageBranchVariable/../@FullName" /> 
    <xsl:value-of select="$currentPageBranchVariable/parent::*/@FullName" /> 
相關問題