=> Главная База Знаний Xslt Шаблон: значение по умолчанию


Шаблон: значение по умолчанию

Шаблон: значение по умолчанию

Как я говорил ранее, в случае задания параметру значения при объявлении, оно может быть перекрыто, если вы зададите другое значение в элементе

<xsl:with-param>
. Но если другого значения не указывать, исходное значение выступит в роли значения по умолчанию.

Следующий пример видоизменяет рассмотренный ранее пример «COLORS». Шаблон имеет параметр

COLOR
, но я могу вызвать шаблон, не устанавливая
COLOR
в какое-либо определенное значение:

<xsl:template match="PLANET">

 <xsl:if test="NAME='Mercury'">

  <xsl:call-template name="COLORS">

   <xsl:with-param name="COLOR" select="'RED'"/>

  </xsl:call-template>

 </xsl:if>

 <xsl:if test="NAME='Venus'">

  <xsl:call-template name="COLORS">

   <xsl:with-param name="COLOR" select="'GREEN'"/>

  </xsl:call-template>

 </xsl:if>

 <xsl:if test="NAME='Earth'">

  <xsl:call-template name="COLORS">

  </xsl:call-template>

 </xsl:if>

</xsl:template>

В этом случае параметр

COLOR
принимает значение по умолчанию«
blue
» (голубой), заданное в элементе
<xsl:param>
в шаблоне «COLORS»:

<xsl:template match="PLANET">

 <xsl:if test="NAME='Mercury'">

  <xsl:call-template name="COLORS">

   <xsl:with-param name="COLOR" select="'RED'"/>

  </xsl:call-template>

 </xsl:if>

 <xsl:if test="NAME='Venus'">

  <xsl:call-template name="COLORS">

   <xsl:with-param name="COLOR" select="'GREEN'"/>

  </xsl:call-template>

 </xsl:if>

 <xsl:if test="NAME='Earth'">

  <xsl:call-template name="COLORS">

  </xsl:call-template>

 </xsl:if>

</xsl:template>


<xsl:template name="COLORS">

 <xsl:param name="COLOR" select="'blue'"/>

 <TR>

  <TD>

   <FONT COLOR="{$COLOR}"><xsl:value-of select="NAME"/></FONT>

  </TD>

  <TD>

   <FONT COLOR="{$COLOR}"><xsl:apply-templates select="MASS"/></FONT>

  </TD>

  <TD>

   <FONT COLOR="{$COLOR}"><xsl:apply-templates select="RADIUS"/></FONT>

  </TD>

  <TD>

   <FONT COLOR="{$COLOR}"><xsl:apply-templates select="DAY"/></FONT>

  </TD>

 </TR>

</xsl:template>