如何获取当前节点变量的父节点元素?

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是第二个模板的一个变量,其中包含了一个Item节点。

那么从这里如何获取它的父元素呢?

我尝试了以下代码,但无效:

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

希望问题已经清楚。也许我尝试做的事情是不可能的?谢谢。
2个回答

5

$currentPageBranchVariable/..

This will return the parent element of the Item node in the second template.

$currentPageBranchVariable/..

这将选择$currentPageBranchVariable中包含的所有节点(在本例中只有一个)的每个父级集合。


2
您将轴放在了错误的位置。
您的表达式选择的是上下文节点的父节点,而不是$currentPageBranchVariable。由于您从/匹配调用模板,因此没有父节点可从中选择@FullName
您需要使用后面的父轴从$currentPageBranchVariable中选择父节点,而不是之前的轴。
以下两种方法都可以。
    <xsl:value-of select="$currentPageBranchVariable/../@FullName" />
    <xsl:value-of select="$currentPageBranchVariable/parent::*/@FullName" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接