Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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
基于条件的XSLT调用模板_Xslt - Fatal编程技术网

基于条件的XSLT调用模板

基于条件的XSLT调用模板,xslt,Xslt,我的实时XSLT文件有问题。基于此,我在这里提出我的问题。我有3个xslt文件,如1.xsl和master.xsl。此master.xsl被导入到1.xsl中 在master.xsl上,我使用以下代码 <xsl:call-template name="content"> <xsl:with-param name="request" select="$request"/> <xsl:call-template> 当没有参数时,现在显示的是错误 XTSE0680

我的实时XSLT文件有问题。基于此,我在这里提出我的问题。我有3个xslt文件,如1.xsl和master.xsl。此master.xsl被导入到1.xsl中

在master.xsl上,我使用以下代码

<xsl:call-template name="content">
<xsl:with-param name="request" select="$request"/>
<xsl:call-template>
当没有参数时,现在显示的是错误

XTSE0680:参数请求未在被调用的模板中声明


因此,在这种情况下,请给我一些想法来修改
master.xsl

上的编码。错误消息的原因已在对的回答中指出。必须修改模板才能声明参数。或者您需要更改
master.xsl
中的代码,以便只传递参数,例如

<xsl:choose>
   <xsl:when test="$request">
     <xsl:call-template name="content">
       <xsl:with-param name="request" select="$request"/>
     <xsl:call-template>
   </xsl:when>
   <xsl:otherwise>
     <xsl:call-template name="content"/>
   </xsl:otherwise>
</xsl:choose>


只有在非空序列的情况下才会传入
$request
。当然,如果您的代码包含在模板声明参数的样式表中,并且变量
$request
不是空的,那么您将继续遇到错误。无法在运行时检查模板是否需要参数。

错误消息的原因已在对的回答中指出。必须修改模板才能声明参数。或者您需要更改
master.xsl
中的代码,以便只传递参数,例如

<xsl:choose>
   <xsl:when test="$request">
     <xsl:call-template name="content">
       <xsl:with-param name="request" select="$request"/>
     <xsl:call-template>
   </xsl:when>
   <xsl:otherwise>
     <xsl:call-template name="content"/>
   </xsl:otherwise>
</xsl:choose>


只有在非空序列的情况下才会传入
$request
。当然,如果您的代码包含在模板声明参数的样式表中,并且变量
$request
不是空的,那么您将继续遇到错误。无法在运行时检查模板是否需要参数。

可能重复@markdark,看起来相同,但这是不同的。我用同样的代码问了另一个问题。有什么想法吗?请问“as”是什么意思?在as=“node()”中,它是一个要与一组xml标记一起传递的参数。如果xsl:choose元素不存在“Content”参数,则可以传递伪元素。可能与@markdark相同,但这是不同的。我用同样的代码问了另一个问题。有什么想法吗?请问“as”是什么意思?在as=“node()”中,它是一个要与一组xml标记一起传递的参数。如果xsl:choose element不存在“Content”参数,则可以传递伪元素。a/缺失以关闭第一个a/缺失以关闭第一个
<xsl:choose>
   <xsl:when test="$request">
     <xsl:call-template name="content">
       <xsl:with-param name="request" select="$request"/>
     <xsl:call-template>
   </xsl:when>
   <xsl:otherwise>
     <xsl:call-template name="content"/>
   </xsl:otherwise>
</xsl:choose>