我做了一个简单的 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/p
和abc/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