如何在 XSLT 中获取标签名称?

How to get tag name in XSLT?

我做了一个简单的例子xslt。我想在 h2 中显示标签名称。如何使用xslt显示标签名称?

这是我的代码:Link

我用过这个

<!--h1><xsl:value-of select="abc/p/name(.)"/></h1-->

它给我一个错误。为什么?

预期输出:

"P"(abc 标签内的第一个标签)

首先:添加一个<xsl:template match="text()" />以避免不必要的输出。

然后我会更改第一个模板以匹配您 abc 因为这是有趣的 parent 节点。如果你想要节点的任何 child,请使用 abc/*。然后模板将匹配 abs/pabc/catalog。但是你只想要第一个child,对吧?所以使用abc/*[1]。这只会匹配 abc/p。现在您可以执行 name(.)local-name().

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="abc/*[1]">
    <html>
      <body>
       <h1><xsl:value-of select="local-name()"/></h1>
      </body>
    </html>
  </xsl:template>

  <xsl:template match="text()" />

</xsl:stylesheet>

你的XML-File

<abc>
    <p test='ravi'>test123</p>
    <catalog>
        <cd>
            <title>Empire Burlesque</title>
            <artist>Bob Dylan</artist>
            <country>USA</country>
            <company>Columbia</company>
            <price>10.90</price>
            <year>1985</year>
        </cd>
    </catalog>
</abc>

读这个:

您的尝试:

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

只要您的处理器支持 XSLT 2.0,就可以使用。

在 XSLT 1.0 中,您需要做:

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

这当然也适用于 XSLT 2.0。