我的实时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>
同样明智的,在1.xsl上,
<xsl:template name="content">
<xsl:param name="request" as="node()"/>
....
</xsl:template>
在这种情况下,在文件1.xsl上,有时候,对于模板“内容”,parameter
请求,不会传递。它将在一段时间内通过。
所以,在某些情况下,上面的模板将是(没有参数'request')
<xsl:template name="content">
....
</xsl:template>
当没有参数时,这显示现在的错误
XTSE0680: Parameter request is not declared in the called template
所以,在这种情况下,请给我一些想法来修改master.xsl
答案 0 :(得分:0)
XSLT calling template with xsl:with-param on different template的答案中指出了错误消息的原因。您必须修改模板以声明参数。或者您需要更改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
不为空,那么您将继续遇到错误。无法在运行时检查模板是否需要参数。