English | >> Français << | Deutsch | Magyar | 中文 | Polski ZVON > Tutorials > XSLT Tutorial
>> Page 34 << | Précédent | Suivant | Contenu | Index des éléments

Vous pouvez passer des paramètres à un modèle avec l'élément xsl:with-param. Si le modèle comporte un élément xsl:param dont le nom est identique à l'attribut name de l'élément xsl:with-param, sa valeur est utilisée. Feuille de style XSLT 1 montre un exemple type. Si vous voulez passer une variable, vous devez la définir avec l'élément xsl:param. La Feuille de style XSLT 2 présente une approche incorrecte.

Feuille de style XSLT 1

Source XML
<source>

<number>1</number>
<number>3</number>
<number>4</number>
<number>17</number>
<number>8</number>

</source>

Sortie
<TABLE>
  <TR>
     <TH>1 (odd)</TH>
  </TR>
  <TR>
     <TH>3 (odd)</TH>
  </TR>
  <TR>
     <TH>4 (even)</TH>
  </TR>
  <TR>
     <TH>17 (odd)</TH>
  </TR>
  <TR>
     <TH>8 (even)</TH>
  </TR>
</TABLE>

Vue HTML
1 (odd)
3 (odd)
4 (even)
17 (odd)
8 (even)
Feuille de style XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <TABLE>
          <xsl:for-each select="//number">
               <TR>
                    <TH>
                         <xsl:choose>
                              <xsl:when test="text() mod 2">
                                   <xsl:apply-templates select=".">
                                        <xsl:with-param name="type">odd</xsl:with-param>
                                   </xsl:apply-templates>
                              </xsl:when>
                              <xsl:otherwise>
                                   <xsl:apply-templates select="."/>
                              </xsl:otherwise>
                         </xsl:choose>
                    </TH>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>

<xsl:template match="number">
     <xsl:param name="type">even</xsl:param>
     <xsl:value-of select="."/>
     <xsl:text> (</xsl:text>
     <xsl:value-of select="$type"/>
     <xsl:text>)</xsl:text>
</xsl:template>


</xsl:stylesheet>


Feuille de style XSLT 2

Source XML
<source>

<number>1</number>
<number>3</number>
<number>4</number>
<number>17</number>
<number>8</number>

</source>

Sortie
<TABLE>
  <TR>
     <TH>1 (even)</TH>
  </TR>
  <TR>
     <TH>3 (even)</TH>
  </TR>
  <TR>
     <TH>4 (even)</TH>
  </TR>
  <TR>
     <TH>17 (even)</TH>
  </TR>
  <TR>
     <TH>8 (even)</TH>
  </TR>
</TABLE>

Vue HTML
1 (even)
3 (even)
4 (even)
17 (even)
8 (even)
Feuille de style XSLT
<xsl:stylesheet version = '1.0'
     xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

<xsl:template match="/">
     <TABLE>
          <xsl:for-each select="//number">
               <TR>
                    <TH>
                         <xsl:choose>
                              <xsl:when test="text() mod 2">
                                   <xsl:apply-templates select=".">
                                        <xsl:with-param name="type">odd</xsl:with-param>
                                   </xsl:apply-templates>
                              </xsl:when>
                              <xsl:otherwise>
                                   <xsl:apply-templates select="."/>
                              </xsl:otherwise>
                         </xsl:choose>
                    </TH>
               </TR>
          </xsl:for-each>
     </TABLE>
</xsl:template>

<xsl:template match="number">
     <xsl:variable name="type">even</xsl:variable>
     <xsl:value-of select="."/>
     <xsl:text> (</xsl:text>
     <xsl:value-of select="$type"/>
     <xsl:text>)</xsl:text>
</xsl:template>


</xsl:stylesheet>