【问题标题】:How to get the parent node element of a current node variable?如何获取当前节点变量的父节点元素?
【发布时间】:2012-02-14 23:40:50
【问题描述】:

下面是我的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"/>

希望问题很清楚。

也许我想做的事情是不可能的?

谢谢,

【问题讨论】:

    标签: xml xslt xpath parent


    【解决方案1】:

    您将轴放置在错误的位置。

    您的表达式选择的是上下文节点的父节点,而不是 $currentPageBranchVariable。由于您从 / 的匹配项中调用了模板,因此没有父级可以从中选择 @FullName。

    您需要使用跟随该变量的父轴从$currentPageBranchVariable 中选择父轴,而不是之前。

    这两种方法都可以。

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

    【讨论】:

      【解决方案2】:

      $currentPageBranchVariable 是第二个模板的变量 其中包含一个Item 节点。

      如何从那里获取其父元素?

      只需使用:

      $currentPageBranchVariable/..
      

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

      【讨论】:

        猜你喜欢
        • 2011-10-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-21
        • 1970-01-01
        • 2021-02-28
        相关资源
        最近更新 更多