如何在XSLT中获取标签名称



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

这是我的代码:链接

我使用了此

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

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

预期输出:

" P" (ABC标签中的第一个标签)

您的尝试:

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

将有效,只要您的处理器支持XSLT 2.0。

在XSLT 1.0中,您需要做:

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

当然也可以在XSLT 2.0中使用。

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

然后,我将更改第一个模板以匹配您的abc,因为这是有趣的父节点。如果您想要节点的任何孩子,请使用abc/*。然后,模板将匹配abs/pabc/catalog。但是你只想要第一个孩子,对吗?因此,请使用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>

阅读以下内容:https://stackoverflow.com/a/585290/5413817

相关内容

  • 没有找到相关文章

最新更新