以下是我的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是包含Item节点的第二个模板的变量。
如何才能从那里获取其父元素?
我尝试了以下但没有奏效:
<xsl:value-of select="../$currentPageBranchVariable/@FullName"/>
<xsl:value-of select="parent::node()/$currentPageBranchVariable/@FullName"/>
<xsl:value-of select="parent($currentPageBranchVariable)/@FullName"/>
希望问题很明确。
也许我想做的事情是不可能的?
谢谢,
答案 0 :(得分:5)
$currentPageBranchVariable
是第二个模板的变量 其中包含Item
节点。如何才能从那里获取其父元素?
只需使用:
$currentPageBranchVariable/..
这将选择$currentPageBranchVariable
中包含的所有节点(在这种情况下只有一个)的父组(每组一个)。
答案 1 :(得分:2)
你把轴放在了错误的位置。
您的表达式选择了上下文节点的父节点,而不是$currentPageBranchVariable
。由于您通过/
上的匹配调用了模板,因此没有父级可以从中选择@FullName
。
您需要通过使用该变量之后的父轴来选择$currentPageBranchVariable
中的父级,而不是之前。
其中任何一个都可以。
<xsl:value-of select="$currentPageBranchVariable/../@FullName" />
<xsl:value-of select="$currentPageBranchVariable/parent::*/@FullName" />