<html>
<head>


<title>&lt;xsl:attribute&gt;</title>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<div id="Description">
<table cellpadding="0" cellspacing="0" border="0" width="100%" class="main">
<tr>
<td valign="top" class="NAME">&lt;xsl:attribute&gt;</td>
<td valign="top" class="COMPATIBILITY">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
</tr>
<tr>
<td valign="top" colspan="2" class="description">
Permet de cr&eacute;er un attribut dans le document de sortie. <span class="LITERAL">&lt;xsl:attribute&gt;</span> a pour avantage de permettre de cr&eacute;er la valeur d'attribut &agrave; partir de parties du document de sortie, de texte cod&eacute; en dur, de valeurs renvoy&eacute;es par les fonctions et de tout autre valeur accessible depuis la feuille de style.</td></tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Cat&eacute;gorie</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>Instruction</p>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Attributs obligatoires</td>
</tr>
<tr>
<td colspan="2" class="description">
<dl>
<dt>
name
</dt>
<dd>
L'attribut <span class="LITERAL">name</span> d&eacute;finit le nom de l'attribut cr&eacute;&eacute; par l'&eacute;l&eacute;ment <span class="LITERAL">&lt; xsl:attribute &gt;</span>. (peu importe la mani&egrave;re de le formuler, aborder la question des attributs de l'&eacute;l&eacute;ment <span class="LITERAL">&lt; xsl:attribute &gt;</span> est pour le moins d&eacute;routant, me direz-vous)
<P></p>
</dl>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Attributs facultatifs</td>
</tr>
<tr>
<td colspan="2" class="description">
<dl>
<dt>
namespace
</dt>
<dd>
L'attribut <span class="LITERAL">namespace</span> d&eacute;finit l'URI d'espace de noms &agrave; utiliser pour cet attribut dans le document de sortie. Le pr&eacute;fixe d'espace de noms utilis&eacute; ne d&eacute;pend pas de votre ressort&nbsp;; le seul &eacute;l&eacute;ment que vous sp&eacute;cifiez avec l'attribut <span class="LITERAL">namespace</span> est l'URI de l'espace de noms.
<P></p>
</dl>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Contenu</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>Un mod&egrave;le XSLT. En d'autres termes, vous pouvez cr&eacute;er les contenus d'un attribut avec les &eacute;l&eacute;ments <span class="LITERAL">&lt;xsl:choose&gt;</span>, <span class="LITERAL">&lt;xsl:text&gt;</span> et <span class="LITERAL">&lt;xsl:value-of&gt;</span>. </p>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Appara&icirc;t dans</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>
<span class="LITERAL">&lt;xsl:attribute&gt;</span> appara&icirc;t dans un mod&egrave;le.</p>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">D&eacute;fini dans</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>XSLT section 7.1.3, Cr&eacute;ation d'attributs avec <span class="LITERAL">xsl:attribute</span>.</p>
</td>
</tr>
<tr>
<td colspan="2" class="CLEARSEPARATION">&nbsp;</td>
</tr>
<tr>
<td colspan="2" class="TITLE">Exemple</td>
</tr>
<tr>
<td colspan="2" class="description">
<p>Dans cet exemple, il est question de cr&eacute;er une table HTML &agrave; partir du document XML suivant&nbsp;:</p>
<span class="PROGRAMLISTING"><pre>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;list xml:lang=&quot;en&quot;&gt;
  &lt;title&gt;Albums I've bought recently:&lt;/title&gt;
  &lt;listitem&gt;The Sacred Art of Dub&lt;/listitem&gt;
  &lt;listitem&gt;Only the Poor Man Feel It&lt;/listitem&gt;
  &lt;listitem&gt;Excitable Boy&lt;/listitem&gt;
  &lt;listitem xml:lang=&quot;sw&quot;&gt;Aki Special&lt;/listitem&gt;
  &lt;listitem xml:lang=&quot;en-gb&quot;&gt;Combat Rock&lt;/listitem&gt;
  &lt;listitem xml:lang=&quot;zu&quot;&gt;Talking Timbuktu&lt;/listitem&gt;
  &lt;listitem xml:lang=&quot;jz&quot;&gt;The Birth of the Cool&lt;/listitem&gt;
&lt;/list&gt;</pre></span>
<p>On cr&eacute;e une table contenant chaque &eacute;l&eacute;ment <span class="LITERAL">&lt;listitem&gt;</span> dans une ligne s&eacute;par&eacute;e de la colonne de droite de la table, ainsi qu'une cellule simple o&ugrave; <span class="LITERAL">rowspan</span> &eacute;quivaut au nombre d'&eacute;l&eacute;ments <span class="LITERAL">&lt;listitem&gt;</span> figurant dans le document XML dans la colonne de gauche. Il n'est pas possible de coder en dur une valeur pour l'attribut <span class="LITERAL">rowspan</span> car le nombre d'&eacute;l&eacute;ments <span class="LITERAL">&lt;listitem&gt;</span> peut changer. Cette feuille de style utilise <span class="LITERAL">&lt;xsl:attribute&gt;</span> pour obtenir le r&eacute;sultat escompt&eacute;&nbsp;:</p>
<span class="PROGRAMLISTING"><pre>
&lt;?xml version=&quot;1.0&quot;?&gt;
&lt;xsl:stylesheet version=&quot;1.0&quot; xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot;&gt;

  &lt;xsl:output method=&quot;html&quot;/&gt;

  &lt;xsl:template match=&quot;/&quot;&gt;
    &lt;html&gt;
      &lt;head&gt;
        &lt;title&gt;&lt;xsl:value-of select=&quot;list/title&quot;/&gt;&lt;/title&gt;
      &lt;/head&gt;
      &lt;body&gt;
        &lt;xsl:apply-templates select=&quot;list&quot;/&gt;
      &lt;/body&gt;
    &lt;/html&gt;
  &lt;/xsl:template&gt;

  &lt;xsl:template match=&quot;list&quot;&gt;
    &lt;table border=&quot;1&quot; width=&quot;75%&quot;&gt;
      &lt;tr&gt;
        &lt;td bgcolor=&quot;lightslategray&quot; width=&quot;100&quot; align=&quot;right&quot;&gt;
          &lt;xsl:attribute name=&quot;rowspan&quot;&gt;
            &lt;xsl:value-of select=&quot;count(listitem)&quot;/&gt;
          &lt;/xsl:attribute&gt;
          &lt;p style=&quot;font-size: 125%&quot;&gt;
            &lt;xsl:value-of select=&quot;title&quot;/&gt;
          &lt;/p&gt;
        &lt;/td&gt;
        &lt;td&gt;
          &lt;xsl:value-of select=&quot;listitem[1]&quot;/&gt;
        &lt;/td&gt;
      &lt;/tr&gt;
      &lt;xsl:for-each select=&quot;listitem&quot;&gt;
        &lt;xsl:if test=&quot;position() &gt; 1&quot;&gt;
          &lt;tr&gt;
            &lt;td&gt;
              &lt;xsl:value-of select=&quot;.&quot;/&gt;
            &lt;/td&gt;
          &lt;/tr&gt;
        &lt;/xsl:if&gt;
      &lt;/xsl:for-each&gt;
    &lt;/table&gt;
  &lt;/xsl:template&gt;

&lt;/xsl:stylesheet&gt;</pre></span>
<p>Le document XML g&eacute;n&eacute;r&eacute; est le suivant&nbsp;:</p>
<span class="PROGRAMLISTING"><pre>
&lt;html&gt;
&lt;head&gt;
&lt;META http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=UTF-8&quot;&gt;
&lt;title&gt;Albums I've bought recently:&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;table width=&quot;75%&quot; border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;td align=&quot;right&quot; width=&quot;100&quot; rowspan=&quot;7&quot; bgcolor=&quot;lightslategray&quot;&gt;
&lt;p style=&quot;font-size: 125%&quot;&gt;Albums I've bought recently:&lt;/p&gt;
&lt;/td&gt;&lt;td&gt;The Sacred Art of Dub&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Only the Poor Man Feel It&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Excitable Boy&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aki Special&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Combat Rock&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Talking Timbuktu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;The Birth of the Cool&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></span>
<p>Plusieurs attributs sont cod&eacute;s en dur sur l'&eacute;l&eacute;ment <span class="LITERAL">&lt;td&gt;</span>&nbsp;; ces attributs sont associ&eacute;s &agrave; l'attribut cr&eacute;&eacute; avec <span class="LITERAL">&lt;xsl:attribute&gt;</span>. Vous pouvez avoir autant d'&eacute;l&eacute;ments <span class="LITERAL">&lt;xsl:attribute&gt;</span> que souhait&eacute;, mais ils doivent tous appara&icirc;tre ensemble comme le premier &eacute;l&eacute;ment de l'&eacute;l&eacute;ment auquel vous avez ajout&eacute; les attributs. <link linkend="xslt-appa-a3">La Figure A-3</link> montre l'apparence du document HTML g&eacute;n&eacute;r&eacute;.</p>
<figure label="A-3" id="xslt-appa-a3">
        <p class="TITLE">Document comportant des attributs g&eacute;n&eacute;r&eacute;s</p>
        <graphic depth="231" width="405" fileref="figs/xslt.aa03.gif"/></figure>
<p>Dans cet exemple, on aurait pu utiliser un mod&egrave;le de valeur d'attribut. Pour g&eacute;n&eacute;rer la valeur de l'attribut <span class="LITERAL">rowspan</span>, proc&eacute;dez comme suit&nbsp;:</p>
<span class="PROGRAMLISTING"><pre>
&lt;td bgcolor=&quot;lightslategray&quot; rowspan=&quot;{count(listitem)}&quot;
  width=&quot;100&quot; align=&quot;right&quot;&gt;</pre></span>
<p>L'expression entre les accolades (<span class="LITERAL">{}</span>) est &eacute;valu&eacute;e et remplac&eacute;e par la valeur qui lui est associ&eacute;e, quelle qu'elle soit. Dans ce cas, <span class="LITERAL">count(listitem)</span> renvoie le nombre <span class="LITERAL">7</span>, qui devient la valeur de l'attribut <span class="LITERAL">rowspan</span>.</p>
</td>
</tr>
</table>
</div>
</body>
</html>
