<xsl:output> | |
Définit les caractéristiques du document de sortie. | |
Catégorie | |
Elément de niveau supérieur |
|
Attributs obligatoires | |
Aucun. |
|
Attributs facultatifs | |
|
|
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". |