Zwei Elemente seien abschließend kurz vorgestellt,
die beide den Rahmen der Dokumentverarbeitung
überschreiten. message kann unter anderem
Fehlermeldungen liefern, und output regelt,
welcher Art die Ausgabe sein soll. Über den Wert yes
des Attributs terminate kann man dafür sorgen,
dass die XSLT-Engine nach dem Ausgeben einer
Nachricht die Verarbeitung abbricht (kein Default). Unter
Verwendung von Parametern und Variablen lässt sich mit
diesem Element beispielsweise eine mehrsprachige Ausgabe
realisieren.
<!-- XML --> <messages> <message lang="de" name="gruss">Hallo zusammen</message> <message lang="en" name="gruss">Hi there</message> <!-- ... --> </messages> <!-- Parameter und Template --> <xsl:param name="lang" select="de"/> <xsl:template match="greetings"> <xsl:message> <xsl:value-of select="//message[@name='gruss' and @lang=$lang]"/> </xsl:message> <xsl:template>
Schließlich das Top-Level-Element xsl:output: Mit ihm legen Stylesheet-Autoren fest, wie sie die Ausgabe haben wollen. Hier folgen die Attribute:
Attributname | Wert |
---|---|
method | xml, html, textoder ein nicht näher bezeichneter QName |
version | Version des Ausgabeformats (XML= 1.0) |
encoding | UTF-8, ... |
omit-xml-declaration | yesoder no |
standalone | yesoder no |
doctype-public | Öffentlicher Bezeichner der DTD |
doctype-system | Systembezeichner der DTD |
cdata-section-elements | QNames |
indent | Einrücken: yesoder no |
media-type | Zeichenkette |
Je nach gewählter Methode sind unterschiedliche
Attribute interessant. Bei einem XML-Dokument
sollte die version derzeit den Wert 1.0
haben (Default); im Falle von HTML ist der
vorgegebene Wert 4.0
. Was den Zeichensatz angeht,
fordert die Spezifikation mindestens die Unterstützung von
UTF-8 und
UTF-16. Implementierungen müssen also
ISOlatin-1 nicht unterstützen.
indent sorgt für Einrückungen im resultierenden Dokument, ist aber laut Spezifikation nicht geeignet für Dokumente, deren Elementtypen gemischten Inhalt (mixed content) enthalten. Sinnvoller ist vielleicht cdata-section-elements, mit dem man diejenigen Elemente benennt, die nicht zu analysierende Zeichen wie < enthalten.
<!-- XML: HTML als Ausgabe --> <xsl:output method="html" encoding="iso-8859-1" doctype-public="-//W3C//DTD HTML 4.0 Transitional//EN" cdata-section-elements="pre listing " indent="yes"/>
Ist als Methode html
gewählt, soll die
XSLT-Engine beispielsweise leere Element in die
dort übliche Form bringen: <br> ohne den
das leere Element (in XML) schließenden
Schrägstrich. Auch die Attributminimalisierung wird hier
vorgenommen.
<!-- XML --> <br/> <hr noshade="noshade"/> <!-- HTML-Ergebnis --> <br> <hr noshade>
Bei beiden Methoden kann man veranlassen, dass Text
unmaskiert ausgegeben wird: etwa das Kleinerzeichen statt
<. Wer das will, kann den Elementen
xsl:value-of und xsl:text das Attribut
disable-output-escaping mit dem Wert yes
mitgeben, sollte aber bedenken, dass das Ergebnis dann nicht
unbedingt wohlgeformtes XML ist. Für die
Methode text
ist dieses Attribut nicht erforderlich,
weil sie alles unmaskiert ausgibt. Sie eignet sich vor allem
für Formate, die völlig anders organisiert sind als die
beiden anderen.