在XSLT中有条件地嵌套元素

时间:2014-07-01 14:51:23

标签: html xslt dry

我有一个XSLT模板,有条件地需要在anchor元素中嵌套。

例如:

<xsl:choose>
   <xsl:when test="$foo = 1">
     <a href="/bar">
       <xsl:call-template name="Baz">
          <xsl:with-param name="ParamA" select="$A" />
          <xsl:with-param name="ParamB" select="$B" />
          <xsl:with-param name="ParamC" select="$C" />
          <xsl:with-param name="ParamD" select="$D" />
          <xsl:with-param name="ParamE" select="$E" />
          <xsl:with-param name="ParamF" select="$F" />
       </xsl:call-template>
     </a>
   </xsl:when>
   <xsl:otherwise>
      <xsl:call-template name="Baz">
          <xsl:with-param name="ParamA" select="$A" />
          <xsl:with-param name="ParamB" select="$B" />
          <xsl:with-param name="ParamC" select="$C" />
          <xsl:with-param name="ParamD" select="$D" />
          <xsl:with-param name="ParamE" select="$E" />
          <xsl:with-param name="ParamF" select="$F" />
       </xsl:call-template>
   </xsl:otherwise>
</xsl:choose>

正如您所看到的,call-template周围有很多重复的代码和传递的参数。

是否有一种更整洁,DRYer的条件嵌套元素?

1 个答案:

答案 0 :(得分:2)

您可以在变量中调用模板,并将变量的结果放在choose中。