1

我的实时 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

4

1 回答 1

1

错误消息的原因已在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不为空的样式表中,您将继续遇到错误。无法在运行时检查模板是否需要参数。

于 2013-10-03T14:29:14.757 回答