2012-01-20 84 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" /> 
相关问题