0
我有一个正在被调用(不是夸大)大约100个参数左右的模板。我需要多次调用这个模板,因为我需要修改父节点 - 有时它不存在,有时候有几个节点,并且有几个值可以被采用。重复调用xsl模板时避免多次传递参数
例如当前设置的一个例子片段:
<xsl:choose>
<xsl:when test="$test='1'">
<body1>
<body3>
<xsl:call-template name="template1">
<xsl:with-param name="param1" select="$previouslydefined1" />
.
.
.
<xsl:with-param name="param100" select="$previouslydefined100" />
</xsl:call-template>
<body3>
</body1>
</when>
<xsl:when test="$test='2'">
<body2>
<xsl:call-template name="template1">
<xsl:with-param name="param1" select="$previouslydefined1" />
.
.
.
<xsl:with-param name="param100" select="$previouslydefined100" />
</xsl:call-template>
</body2>
</when>
<xsl:otherwise>
<xsl:call-template name="template1">
<xsl:with-param name="param1" select="$previouslydefined1" />
.
.
.
<xsl:with-param name="param100" select="$previouslydefined100" />
</xsl:call-template>
</otherwise>
</xsl:choose>
我觉得必须有这样做的(可能是几个),而不用重复输入了参数大块的一个更好的办法,但我画空白。
我有两种方法,我知道不工作,但可能会有一个修改后的实现。
选择的节点周围的语句单独(失败 - 糟糕的语法):
<xsl:choose>
<xsl:when test="$test='1'">
<body1>
</when>
<xsl:when test="$test='2'">
<body2>
</when>
<xsl:otherwise/>
<xsl:call-template name="template1">
<xsl:with-param name="param1" select="$previouslydefined1" />
.
.
.
<xsl:with-param name="param1" select="$previouslydefined100" />
</xsl:call-template>
<xsl:choose>
<xsl:when test="$test='1'">
</body1>
</when>
<xsl:when test="$test='2'">
</body2>
</when>
<xsl:otherwise/>
</xsl:choose>
使用的值设置节点(失败 - 值可以为空在这种情况下,标签不应该存在):
<xsl:element name="{$node}">
<xsl:element name="{$node2}">
<xsl:call-template name="template1">
<xsl:with-param name="param1" select="$previouslydefined1" />
.
.
.
<xsl:with-param name="param1" select="$previouslydefined100" />
</xsl:call-template>
</xsl:element>
</xsl:element>
我也明白,它应该有可能使用隧道(也许) - 我现在检查这种可能性。