我有一个模板被调用(不夸张)大约100个参数左右。我需要多次调用此模板,因为我需要更改父节点 - 有时它不存在,有时会有几个节点,并且有几个值可以采用。
例如当前设置的示例片段:
<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>
我也明白应该可以使用隧道(也许) - 我现在正在检查这种可能性。
答案 0 :(得分:0)
似乎我搞砸了我通过参数设置节点的原始实现。可以将值保留为空,在这种情况下,不会创建我最初查找的节点。通过使用必要的最大可能节点数然后根据需要填充我只能模板一次:
<script>$(function(){ ReadyDashboard.init(); });</script>