【问题标题】:Getting the node name of an unknown XML node获取未知 XML 节点的节点名称
【发布时间】:2012-03-06 06:15:06
【问题描述】:

我有一个带有可变子节点的 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()"/>

有没有简单的方法可以做到这一点?

【问题讨论】:

    标签: xslt-1.0


    【解决方案1】:

    我已经用你的 xml-example 尝试了第一个 xsl 语句,但我无法用它检索所有 id 属性,只有第一个。 为了一次性获取所有内容,我需要使用 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>
    

    【讨论】:

    • 谢谢!这就是我最终要做的……制作一个 for-each 循环。
    • 其实不包括一个节点怎么办?除了显示 biz 的本地名称之外的所有内容?
    • 如果您知道要排除所有名为“biz”的元素,我会使用 if 语句。对于固定位置,您可以使用函数“position()”另见:@987654321 @
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多