获取未知XML节点的节点名称

时间:2012-02-14 21:19:56

标签: xslt-1.0

我有一个带有可变子节点的XML样式表,如下所示:

<fooz>
 <foo>
  <bar id="11">
 </foo>
 <foo>
  <baz id="22">
 </foo>
 <foo>
  <biz id="33">
 </foo>
</fooz>

所以我知道我可以使用

毫无问题地获取id
<xsl:value-of select="foo/*/@id"/>

但是,在获取节点名称如“bar”,“baz”或“biz”时,我有点失落。我尝试了这样的东西没有任何快乐的结果:

<xsl:value-of select="foo/node()"/>

有一种简单的方法吗?

1 个答案:

答案 0 :(得分:3)

我已经尝试使用xml-example的第一个xsl语句,但是我无法用它来检索所有id-attributes,只检索第一个。 为了得到所有,我需要使用for-each语句。

要获取节点的名称,您可以使用:

<xsl:value-of select="local-name()"/>

<xsl:value-of select="name()"/>

为了获得foo元素下的所有名称,我想出了以下内容:

<xsl:for-each select="/fooz/foo/*">
  <tr>
    <td><xsl:value-of select="local-name()"/></td>
    <td><xsl:value-of select="@id" /></td>
  </tr>
</xsl:for-each>