XSL-Übersicht / xsl:output

xsl:output

xsl:output

➪ Für xsl:output, unter XSLT 2.0 auch für xsl:result-document, gibt es eine Reihe von Attributen, die den Prozessor anweisen, den Ausgabestrom zu modifizieren.

Siehe auch: und .

method

Für method stehen im Allgemeinen die Alternativen xml, xhtml, html und text zur Verfügung. Schauen Sie sich die folgende XSL-Logik an, die ich mit den jeweiligen method-Einstellungen aufrufe:


<erg>
  <xsl:for-each select="/Orte/Ort[1]/Mensch[id &gt; 4]">    
    <hr/>
      <xsl:value-of select="vorname" />
    <br/>
  </xsl:for-each>
</erg>

method="xml": Die Elemente werden wie deklariert ausgegeben.


<erg><hr/>Stefan<br/><hr/>Heini<br/></erg>

method="xhtml": Die Elemente werden wie deklariert ausgegeben, jedoch mit Start- und Ende-Tag.


<erg><hr></hr>Stefan<br></br><hr></hr>Heini<br></br></erg>

method="html": Hier werden HTML-typische Elemente wie <hr/> oder <br/> verkürzt dargestellt, damit geht die Wohlgeformtheit des XML-Dokuments verloren.


<erg><hr>Stefan<br><hr>Heini<br></erg>

method="text": Die Ausgabe erfolgt völlig ohne Elemente.


StefanHeini

Für die weiteren Beispiele verwende ich method="xml" sowie die folgende XSL-Anweisung:


<erg>
  <xsl:for-each select="/Orte/Ort[1]/Mensch[id &gt; 4]">
    <wert>
      <xsl:value-of select="vorname" />
    </wert>
  </xsl:for-each>
</erg>

indent

Das indent-Attribut gibt an, ob die Ergebnisse mit Einrückungen versehen werden sollen. indent='yes' ergibt dieses ...


<erg>
   <wert>Stefan</wert>
   <wert>Heini</wert>
</erg>

..., indent='no'" (Standardwert bei method="xml") dagegen dieses Ergebnis:


<erg><wert>Stefan</wert><wert>Heini</wert></erg>

cdata-section-elements

cdata-section-elements gibt die Liste aller Elemente an (durch Leerzeichen getrennt), deren Textinhalte in CDATA-Kommentaren dargestellt werden sollen.


<xsl:output method="xml" indent="yes" 
     cdata-section-elements="erg wert" />

Der zusätzliche Einsatz einer entsprechenden XSL-Logik


<erg>
  <xsl:value-of select="reverse(('Hund', 'beisst', 'Mann'))"/>
</erg>

hat dann folgendes Ergebnis:


<ROOT>
   <erg><![CDATA[Mann beisst Hund]]></erg>
   <erg>
      <wert><![CDATA[Stefan]]></wert>
      <wert><![CDATA[Heini]]></wert>
   </erg>
</ROOT>

encoding

Die Default-Einstellung von encoding ist "UTF-8". Ist ein anderer Output gewünscht, so kann das einfach mitgegeben werden.


encoding="iso-8859-1"

Im XML-Prolog erscheint dann das Encoding:


<?xml version="1.0" encoding="iso-8859-1"?>

omit-xml-declaration

Das Attribut omit-xml-declaration bezieht sich auf den XML-Prolog. Ist omit-xml-declaration="yes", so wird kein XML-Prolog geschrieben.


<xsl:output 
     method="xml" 
     indent="yes" 
     encoding="iso-8859-1" 
     omit-xml-declaration="yes"/>

name

Das name-Attribut definiert den Namen eines xsl:output. Es kann also durchaus mehrere xsl:output-Deklarationen geben.


<xsl:output method="xml" 
            indent="yes" 
            encoding="iso-8859-1" 
            name="myoutput1" />
<xsl:output method="text" 
            encoding="utf-8" 
            name="myoutput2" />

Die jeweilige Bezeichnung kann in verwendet werden.


<xsl:result-document 
     format="myoutput3" 
     href="file:///C:/wg/text.xml">
     <!-- INHALT -->
</xsl:result-document>

Selbstverständlich muss das unter format aufgerufene xsl:output auch existieren, sonst erfolgt hier eine Fehlermeldung:


Fatal Error! 
Requested output format myoutput3 has not been defined

version

Mit version wird im Prolog die XML-Version definiert; hier stehen "1.0" und "1.1" zur Verfügung.


version="1.1"

Andere Einträge werden ungnädig angemeckert, auch dann, wenn omit-xml-declaration="yes" gesetzt wurde.


Fatal Error! XML version must be 1.0 or 1.1

use-character-maps

In use-character-maps können die Namen von Übersetzungstabellen eingegeben werden, die im weiteren Codeverlauf deklariert werden müssen. Sind es mehrere, dann lautet der Aufruf einfach use-character-maps='charmap1 charmap2'.


<xsl:output method="xml" use-character-maps="charmap1" />  
<xsl:character-map name="charmap1">
  <xsl:output-character string="&#00196;" character="Ä"/>
  <xsl:output-character string="&#00228;" character="ä"/>
  <xsl:output-character string="&#00214;" character="Ö"/>
  <xsl:output-character string="&#00246;" character="ö"/>
  <xsl:output-character string="&#00220;" character="Ü"/>
  <xsl:output-character string="&#00252;" character="ü"/>
  <xsl:output-character string="&#00223;" character="ß"/>
  <xsl:output-character string="&#00181;" character="µ"/>
</xsl:character-map>

wg / 5. April 2018



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf.




xsl:param



Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/output.html