我做了一个简单的例子xslt
。我想在h2
中显示标签名称。如何使用xslt显示标签名称?如何在XSLT中获取标签名称?
这里是我的代码:Link
我用这个
<!--h1><xsl:value-of select="abc/p/name(.)"/></h1-->
它给了我一个错误。为什么?
预期输出:
“P”(第一ABC标签内标签)
我做了一个简单的例子xslt
。我想在h2
中显示标签名称。如何使用xslt显示标签名称?如何在XSLT中获取标签名称?
这里是我的代码:Link
我用这个
<!--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,当然啦。
好的谢谢...! – user944513
能否请你告诉我为什么通话功能不起作用https://plnkr.co/edit/TN1BN5Yao5Z63RDcBGlN?p=preview – user944513
我建议你发布一个单独的问题。提示:'xsl:call-template'必须在模板中匹配输入内容。 –
首先:添加<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的文件
<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>
这个'
为什么我得到不需要的错误?没有这行''
这个模板匹配一切之前无法比拟的。这是交换机中的一种“默认”。 – Marcus
请将您的代码发布在问题本身中,而不是在外部链接中。 –