Мне интересно, знаете ли, что можно ввести два шаблона param
? и если да, то как? Например, как этот:Имея два «парама» в одном шаблоне
<xsl:template name="formatDate">
<xsl:param name="timeParam"/>
<xsl:param name="withYear"/>
<xsl:variable name="dateParam" select="substring-before($timeParam,'T')"/>
<xsl:variable name="year" select="substring($dateParam,1,4)"/>
<xsl:variable name="month" select="substring($dateParam,6,2)"/>
<xsl:variable name="day" select="substring($dateParam,9,2)"/>
<xsl:if test="string-length($day) = 1">
<xsl:value-of select="'0'"/>
</xsl:if>
<xsl:value-of select="$day"/>
<xsl:value-of select="'.'"/>
<xsl:if test="string-length($month) = 1">
<xsl:value-of select="'0'"/>
</xsl:if>
<xsl:value-of select="$month"/>
<xsl:if test="string-length($withYear) = 1">
<xsl:value-of select="'.'"/>
<xsl:value-of select="'0'"/>
<xsl:with-param name="withYear" select="$year" />
</xsl:if>
</xsl:template>
и призванию:
<xsl:call-template name="formatDate">
<xsl:with-param name="timeParam" select="attribute::time"/>
<xsl:with-param name="withYear" select="1"/>
</xsl:call-template>
<xsl:call-template name="formatDate">
<xsl:with-param name="timeParam" select="attribute::time"/>
</xsl:call-template>
Как вы видите, в каком положении я нужен параметр года и в других нет.
Ps. Причина использования двух параметров заключается в том, что я не хочу дублировать код.
@PhilRoss, но это не помогает мне больше. Мне нужно передать 'select' часть !! – Saber
Ваш вопрос непонятен. Шаблон может иметь столько параметров, сколько вам нужно. Если вы не передадите параметр при вызове шаблона, будет использоваться значение по умолчанию (определенное в шаблоне). –