<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".