我在Java中使用XSLT变形金刚。我确定问题出在我输入XSLT语法的方式上。
基本上,我必须查看XML节点之一中的属性“ id”是否等效于值,XSL应该处理模板。我需要将此测试值作为xsl:param传递。当我测试一个静态值时,它很酷:
<ul class="levelOneNav">
<xsl:for-each select="level1[@id='sub-page-1']">
<xsl:call-template name="level1"/>
</xsl:for-each>
<div class="clear"></div>
</ul>
测试部分在上面的第二行中。 AFAIK放在字符串内的参数中,格式为
<xsl:for-each select="level1[@id='$ContentID']">
,其中$ContentID
是声明为<xsl:param name="ContentID"/>
的xsl:param这是我输入的代码
<ul class="levelOneNav">
<xsl:for-each select="level1[@id='$ContentID']">
<xsl:call-template name="level1"/>
</xsl:for-each>
<div class="clear"></div>
</ul>
但这不起作用。我也尝试使用
<xsl:for-each select="level1[@id='{$ContentID}']">
而且也失败了。
任何建议,不胜感激。如果您认为我应该学习一些知识,请给我链接。谢谢你的时间 ...
最佳答案
不,那是“ AFAIK”是您输入错误的地方。 XSLT属性中的某些字符串值确实可以接受"{$param}"
语法(请注意花括号),但是在您的情况下,您要执行的操作要简单得多:@id=$ContentID
编辑:请注意,'{$ param}'适用于XSLT属性,请参见示例:
<xsl:element name="{$namespace}:{$elementName}">
<xsl:attribute name="{$attrName}"><xsl:value-of select="$value"/></xsl:attribute>
</xsl:element>