在XSL中获取父节点属性

时间:2012-02-28 16:16:24

标签: xslt parent nodes

在我的XML中,我有以下内容:

<a>
  <b>
    <c something="false">
      <d>
        <e>
          <f>someResult</f>
        </e>
      </d>
    </c>
  </b>
</a>

现在在循环中的XSL中,我可以执行以下操作:

<xsl:value-of select="f"></xsl:value-of>

但是如何在c中获取属性?

我尝试过以下

<xsl:value-of select="////@something"></xsl:value-of>

除了尝试父母,似乎没有任何工作。你能得到像这样的父节点吗?

另外,我不能这样做:

<xsl:value-of select="/a/b/c/@something"></xsl:value-of>

因为可以有多个c。

2 个答案:

答案 0 :(得分:37)

要向上移动树,每个级别使用“..”,在本例中可能是

select="../../../@something"

您还可以按名称(约)

选择祖先节点
select="ancestor::c[1]/@something"  

有关更多示例,请参阅http://www.stackoverflow.com/questions/3672992

答案 1 :(得分:11)

使用

ancestor::c[1]/@something

这将选择第一个(从当前节点向上)祖先名为something的名为c的属性。