我在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>

10-08 14:16