<xsl:output>  
Définit les caractéristiques du document de sortie.
 
Catégorie

Elément de niveau supérieur

 
Attributs obligatoires

Aucun.

 
Attributs facultatifs
method
Possède généralement l'une des trois valeurs suivantes : xml, html ou text. Cette valeur indique le type de document généré. Un processeur XSLT peut ajouter d'autres valeurs à cette liste ; la manière dont ces valeurs affectent le document généré est déterminée par le processeur XSLT.

version
Définit la valeur de l'attribut version de la déclaration XML ou HTML du document de sortie. Cet attribut n'est utilisé que si method= " html " ou method= " xml ".

encoding
Définit la valeur de l'attribut encoding de la déclaration XML du document de sortie.

omit-xml-declaration
Définit si la déclaration XML est omise dans le document de sortie. Les valeurs admises sont yes et no. Cet attribut n'est utilisé que si method= " xml ".

standalone
Définit la valeur de l'attribut standalone de la déclaration XML du document de sortie. Les valeurs valides sont yes et no. Cet attribut n'est utilisé que si method= " xml ".

doctype-public
Définit la valeur de l'attribut PUBLIC de la déclaration DOCTYPE du document de sortie. Cet attribut définit l'identificateur public de la DTD du document de sortie. Il n'est utilisé que si method= " html " ou method= " xml ".

doctype-system
Définit la valeur de l'attribut SYSTEM de la déclaration DOCTYPE du document de sortie. Il définit l'identificateur système de la DTD du document de sortie. Cet attribut n'est utilisé que si method= " html " ou method= " xml ".

cdata-section-elements
Répertorie les éléments qui doivent être écrits sous forme de sections CDATA dans le document de sortie. Toutes les restrictions et conventions d'exception des sections CDATA sont gérées par le processeur XSLT. Si vous devez répertorier plusieurs éléments, séparez leurs noms par un ou plusieurs espaces blancs. Cet attribut n'est utilisé que si method= " xml ".

indent
Indique si les balises du document de sortie doivent être mises en retrait. Les valeurs admises sont yes et no. Cet attribut n'est utilisé que si method= " xml " ou method= " html ", et que le processeur XSLT n'a pas besoin de l'honorer.

media-type
Définit le type MIME du document de sortie.

 
Contenu

Aucun. <xsl:output> est un élément vide.

 
Apparaît dans

L'élément <xsl:output> est un élément de niveau supérieur qui ne peut apparaître que sous forme d'enfant de l'élément <xsl:stylesheet>.

 
Défini dans

XSLT section 16, Sortie.

 
Exemple

Pour illustrer les trois méthodes de sortie définies dans la spécification XSLT, trois feuilles de style ont été créées, chacune utilisant l'une de ces trois méthodes. Le document XML suivant est utilisé dans les trois exemples :

<?xml version="1.0"?>
<list>
  <title>A few of my favorite albums</title>
  <listitem>A Love Supreme</listitem>
  <listitem>Beat Crazy</listitem>
  <listitem>Here Come the Warm Jets</listitem>
  <listitem>Kind of Blue</listitem>
  <listitem>London Calling</listitem>
  <listitem>Remain in Light</listitem>
  <listitem>The Joshua Tree</listitem>
  <listitem>The Indestructible Beat of Soweto</listitem>
</list>

Examinons maintenant les trois feuilles de style et les résultats générés par chacune d'elles. Tout d'abord, la feuille de style method="xml" :

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output 
    method="xml" 
    doctype-public="-//W3C/DTD XHTML 1.0//EN"
    doctype-system="file:///d:/xhtml.dtd"
    encoding="ISO-8859-1"
    indent="no"/>

  <xsl:template match="/">
    <html>
      <head>
        <title><xsl:value-of select="/list/title"/></title>
      </head>
      <body>
        <h1><xsl:value-of select="/list/title"/></h1>
        <p>
          <xsl:for-each select="/list/listitem">
            <xsl:number format="1. "/>
            <xsl:value-of select="."/>
            <br/>
          </xsl:for-each>
        </p>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

Cette feuille de style génère les résultats suivants :

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0//EN" "file:///d:/xhtml.dtd"> 
<html><head><title>A few of my favorite albums</title> 
</head><body><h1>A few of my favorite albums</h1> 
<p>1. A Love Supreme<br/>2. Beat Crazy<br/>3. Here Come the  
Warm Jets<br/>4. Kind of Blue<br/>5. London Calling<br/>6. 
Remain in Light<br/>7. The Joshua Tree<br/>8. The Indestructible  
Beat of Soweto<br/></p></body></html>

(des sauts de ligne ont été rajoutés à cette liste ; la sortie originale avait mis tous les éléments, de <html> à </html> sur une seule et même ligne).

Le document de sortie dispose de l'élément encoding spécifié dans la feuille de style, et la déclaration DOCTYPE inclut les identificateurs PUBLIC et SYSTEM demandés également. Même avec les sauts de ligne ajoutés, il est clair que ce document n'a pas été formaté à l'aide d'espace blanc supplémentaire ou de tout autre moyen. Le document de sortie contient également des éléments <br/> vides ; ces éléments seront gérés différemment si method="html" est indiquée. Voici donc la feuille de style method="html" :

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output 
    method="html" 
    encoding="ISO-8859-1"
    doctype-public="-//W3C/DTD HTML 1.0 Transitional//EN"/>

  <xsl:template match="/">
    <html>
      <head>
        <title><xsl:value-of select="/list/title"/></title>
      </head>
      <body>
        <h1><xsl:value-of select="/list/title"/></h1>
        <p>
          <xsl:for-each select="/list/listitem">
            <xsl:number format="1. "/>
            <xsl:value-of select="."/>
            <br/>
          </xsl:for-each>
        </p>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

Le document HTML généré par cette feuille de style est le suivant :

<!DOCTYPE HTML PUBLIC "-//W3C/DTD HTML 1.0 Transitional//EN">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>A few of my favorite albums</title>
</head>
<body>
<h1>A few of my favorite albums</h1>
<p>1. A Love Supreme<br>2. Beat Crazy<br>3. Here Come 
the Warm Jets<br>4. Kind of Blue<br>5. London Calling<br>6. 
Remain in Light<br>7. The Joshua Tree<br>8. The Indestructible 
Beat of Soweto<br>
</p>
</body>
</html>

(comme précédemment, des sauts de ligne ont été rajoutés pour améliorer la lisibilité de la liste). Le processeur XSLT a automatiquement inséré un élément <META> dans l'élément <head> du document HTML. Les éléments <br> qui étaient vides dans la précédente feuille de style correspondent à présent à d'anciennes balises <br>. Même si ce style de sortie XSLT génère un document XML non valide (ou XHTML), ce document fonctionnera avec les navigateurs HTML existants.

La dernière feuille de style utilise method="text" :

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:output method="text"/>

  <xsl:template match="/">
    <html>
      <head>
        <title><xsl:value-of select="/list/title"/></title>
      </head>
      <body>
        <h1><xsl:value-of select="/list/title"/></h1>
        <p>
          <xsl:for-each select="/list/listitem">
            <xsl:number format="1. "/>
            <xsl:value-of select="."/>
            <br/>
          </xsl:for-each>
        </p>
      </body>
    </html>
  </xsl:template>

</xsl:stylesheet>

Les résultats de cette feuille de style sont les suivants :

A few of my favorite albumsA few of my favorite albums1. A Love Supreme2. Beat 
Crazy3. Here Come the Warm Jets4. Kind of Blue5. London Calling6. Remain in 
Light7. The Joshua Tree8. The Indestructible Beat of Soweto

(comme précédemment, des sauts de ligne ont été insérés de manière à ce que le document tienne sur la page). Ces résultats n'ont aucune valeur. Pourquoi les éléments HTML soigneusement codés n'ont-ils pas été générés dans le document texte ? L'explication tient au fait que la méthode de sortie text génère uniquement les nœuds de texte dans l'arborescence de résultat. Même si on demande que des éléments HTML soient également générés, ils sont ignorés car la méthode spécifiée est method="text".