<xsl:output> |
Diese Anweisung definiert die Eigenschaften des Ausgabedokuments.
Kategorie
Element der obersten Ebene
Obligatorische Attribute
Keine
Optionale Attribute
method Besitzt typischerweise einen der folgenden drei Werte: xml , html oder text . Dieser Wert bezeichnet die Art des zu erzeugenden Dokuments. Ein XSLT-Prozessor kann diese Liste um weitere Werte ergänzen, wie sie sich auf das entstehende Dokument auswirken, bestimmt der XSLT-Prozessor. version Definiert den Wert des version -Attributs der XML- oder HTML-Deklaration im Ausgabedokument. Dieses Attribut wird nur verwendet, wenn die Ausgabemethode method= " html " oder method= " xml " ist. encoding Definiert den Wert des encoding -Attributs der XML-Deklaration im Ausgabedokument. omit-xml-declaration Dieses Attribut bestimmt, ob die XML-Deklaration im Ausgabedokument ausgelassen wird. Zulässige Werte sind yes und no . Dieses Attribut wird nur verwendet, wenn die Ausgabemethode method= " xml " ist. standalone Definiert den Wert des standalone -Attributs der XML-Deklaration im Ausgabedokument. Zulässige Werte sind yes und no . Dieses Attribut wird nur verwendet, wenn die Ausgabemethode method= " xml " ist. doctype-public Definiert den Wert des PUBLIC -Attributs der DOCTYPE -Deklaration im Ausgabedokument. Dieses Attribut definiert den öffentlichen Bezeichner der DTD des Ausgabedokuments. Dieses Attribut wird nur verwendet, wenn die Ausgabemethode method= " html " oder method= " xml " ist. doctype-system Definiert den Wert des SYSTEM -Attributs der DOCTYPE -Deklaration im Ausgabedokument. Es definiert den Systembezeichner der DTD des Ausgabedokuments. Dieses Attribut wird nur verwendet, wenn die Ausgabemethode method= " html " oder method= " xml " ist. cdata-section-elements Eine Auflistung der Elemente, die als CDATA -Abschnitte ins Ausgabedokument geschrieben werden sollen. Alle Einschränkungen und Konventionen für die Behandlung von Zeichenreferenzen in CDATA -Abschnitten werden vom XSLT-Prozessor geregelt. Wenn Sie mehrere Elemente auflisten müssen, trennen Sie die einzelnen Namen durch eines oder mehrere Leerraumzeichen. Dieses Attribut wird nur verwendet, wenn die Ausgabemethode method= " xml " ist. indent Dieses Attribut legt fest, ob die Tags im Ausgabedokument eingerückt werden sollen. Zulässige Werte sind yes und no . Dieses Attribut wird nur verwendet, wenn die Ausgabemethode method= " xml " oder method= " html " ist und der XSLT-Prozessor dies nicht berücksichtigen muss. media-type Diese Anweisung definiert den MIME-Typ des Ausgabedokuments.
Inhalt
Keiner. <xsl:output> ist ein leeres Element.
Übergeordnete Elemente
<xsl:output> ist ein Element der obersten Ebene und kann nur dem Element <xsl:stylesheet> untergeordnet werden.
Definition
XSLT-Abschnitt 16, Ausgabe
Beispiel
Um die drei in der XSLT-Spezifikation definierten Ausgabemethoden zu veranschaulichen, werden drei Stylesheets erstellt, von denen jedes eine der drei Methoden verwendet. Das nachfolgende XML-Dokument wird in allen drei Beispielen verwendet:
    <?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>
Es sollen nun die drei Stylesheets und die jeweils erzeugten Ergebnisse betrachtet werden. Zunächst das Stylesheet 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>
Dieses Stylesheet erzeugt das folgende Ergebnis:
    <?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>
(Dieses Listing enthält Zeilenumbrüche, die in der ursprünglichen Ausgabe nicht vorkamen. Dort wurde alles zwischen <html> und </html> in einer einzigen Zeile angezeigt.) Das Ausgabedokument besitzt die im Stylesheet angegebene Kodierung (encoding) und die DOCTYPE-Deklaration umfasst die angeforderten Bezeichner PUBLIC und SYSTEM. Selbst mit den eingefügten Zeilenumbrüchen ist es offensichtlich, dass das Dokument nicht mit zusätzlichen Leeräumen formatiert worden ist. Auch gibt es leere <br/>-Elemente im Ausgabedokument. Diese werden unterschiedlich behandelt, wenn als Ausgabemethode method="html" angegeben wird. Wo wir gerade dabei sind, hier das Stylesheet mit 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>
Und hier das von diesem Stylesheet erzeugte HTML-Dokument:
    <!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>
(Wie weiter oben wurden auch hier Zeilenumbrüche eingefügt, um das Listing lesbar zu machen.) Beachten Sie, dass der XSLT-Prozessor in den <head> des HTML-Dokuments automatisch ein <META>-Element eingefügt hat. Die <br>-Elemente, die im vorigen Stylesheet leer waren, sind nun alt hergebrachte <br>-Tags. Selbst wenn diese Art der XSLT-Ausgabe kein Ergebnisdokument erzeugt, das gemäß der XML- (bzw. XHTML-)Regeln gültig ist, funktioniert es doch mit den existierenden HTML-Browsern. Das letzte Stylesheet verwendet die Ausgabemethode 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>
Hier die Ergebnisse, wie sie von diesem Stylesheet erzeugt werden:
    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
(Wie zuvor wurden auch hier Zeilenumbrüche eingefügt, damit das Dokument auf die Seite passt.) Diese Ergebnisse sind im Grunde genommen wertlos. Weshalb wurden die so sorgfältig kodierten HTML-Elemente im Text nicht ausgegeben? Der Grund dafür ist, dass die Ausgabemethode text nur Textknoten in den Ergebnisbaum einfügt. Zwar wurde angefordert, dass verschiedene HTML-Elemente zu erzeugen sind, doch wird dies mit method="text" ignoriert.