Java XSLT参数不工作
我在Java中使用XSLT转换器。我确信问题在于我输入XSLT语法的方式 基本上,我必须查看XML的一个节点中的属性“id”是否等同于一个值,XSL应该处理一个模板。我需要以xsl:param的形式通过这个测试值。当我在静态值上测试它时,它工作得很酷:Java XSLT参数不工作,java,xml,xslt,transformation,Java,Xml,Xslt,Transformation,我在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
<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>
但它不起作用。我也尝试过使用
它也失败了
任何建议都将不胜感激。如果你觉得我应该学点什么,请给我链接。谢谢你抽出时间……不,你错在“阿飞”这个词上。XSLT属性中的一些字符串值当然接受
“{$param}”
语法(请注意大括号),但在您的情况下,您所追求的要简单得多:@id=$ContentID
编辑:请注意,{$param}适用于XSLT属性,请参见示例:
<xsl:element name="{$namespace}:{$elementName}">
<xsl:attribute name="{$attrName}"><xsl:value-of select="$value"/></xsl:attribute>
</xsl:element>
试试看
谢谢你,在得到你的答案后,我试着做了
和
,但都不起作用。如果我还是做错了,你能给我一个正确的代码片段吗?谢谢,谢谢。Weblogic在某种程度上没有从缓存中重建.class文件,因此产生了问题,在我删除了这些类并重新部署+重新启动之后,这就起作用了感谢您的回复。如果我可以通过xsl:param来代替代码片段第二行中的“sub-page-1”,那么这就行了。我试过'{$ContentID}
和{$ContentID}
,也试过$ContentID
,但都不管用谢谢。另一个答案奏效了。WebLogic在某种程度上甚至在我重新启动之后也没有从jsp重新创建类文件,这就是为什么更改的值没有反映出来
<xsl:element name="{$namespace}:{$elementName}">
<xsl:attribute name="{$attrName}"><xsl:value-of select="$value"/></xsl:attribute>
</xsl:element>
<ul class="levelOneNav">
<xsl:variable name="contentID" select="'sub-page-1'" />
<xsl:for-each select="level1[@id=$ContentID]">
<xsl:call-template name="level1"/>
</xsl:for-each>
<div class="clear"></div>
</ul>
<ul class="levelOneNav">
<xsl:variable name="contentID" select="'sub-page-1'" />
<xsl:for-each select="level1[@id=$ContentID]">
<xsl:call-template name="level1" >
<xsl:with-param name="foo" select="$ContenID" />
</xsl:call-template>
</xsl:for-each>
<div class="clear"></div>
</ul>