Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XSLT参数不工作_Java_Xml_Xslt_Transformation - Fatal编程技术网

Java XSLT参数不工作

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

我在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>       
但它不起作用。我也尝试过使用
它也失败了


任何建议都将不胜感激。如果你觉得我应该学点什么,请给我链接。谢谢你抽出时间……

不,你错在“阿飞”这个词上。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>