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