我将参数传递给xsl模板,但它没有在那里显示它的值:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<information>
<person>
<name>John</name>
</person>
<person>
<name>Joseph</name>
</person>
<person>
<name>Ajay</name>
</person>
</information>
XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:call-template name="show_name">
<xsl:with-param name="element" select=" 'hie' "/>
</xsl:call-template>
</body>
</html>
</xsl:template>
<xsl:template name="show_name" match="/">
<xsl:param name="element" />
<xsl:for-each select="information/person">
<p>Name: <xsl:value-of select="$element" /></p>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
输出:
Name:
Name:
Name:
我做错了什么?
答案 0 :(得分:1)
您有两个与文档节点"/"
匹配的模板。当两个具有相等优先级的模板匹配相同的东西时,这被认为是XSLT中的错误。可能发生的事情是您的特定处理器实际上并没有抛出错误,但总是选择第二个模板以匹配“/”,因此第一个模板未被使用。
无论如何,你的第二个模板只需要作为命名模板运行,所以不要这样做
<xsl:template name="show_name" match="/">
这样做
<xsl:template name="show_name">