Условные элементы гнезда в XSLT

2 Curt [2014-07-01 17:51:00]

У меня есть шаблон 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, способ условно вложенных элементов?

html xslt dry


1 ответ


2 michael.hor257k [2014-07-01 18:01:00]

Вы можете вызвать шаблон в переменной и поместить результат переменной внутри выбора.