mailto: payer@hdm-stuttgart.de
Zitierweise / cite as:
Payer, Margarete <1942 - > ; Payer, Alois <1944 - >: Inhaltliche Strukturierung von Ressourcen : eine Einführung in XML. -- 13. XSLT -- XSL Transformations. -- Fassung vom 2002-10-29. -- URL: http://www.payer.de/xml/xml13.htm. -- [Stichwort].
Erstmals publiziert:
Überarbeitungen:
Anlass: Lehrveranstaltung an der HdM Stuttgart, SS 2002
Unterrichtsmaterialien (gemäß § 46 (1) UrhG)
©opyright: Dieser Text steht der Allgemeinheit zur Verfügung. Eine Verwertung in Publikationen, die über übliche Zitate hinausgeht, bedarf der ausdrücklichen Genehmigung der Herausgeberin.
Dieser Teil ist ein Kapitel von:
Payer, Margarete <1942 - > ; Payer, Alois <1944 - >: Inhaltliche Strukturierung von Ressourcen : eine Einführung in XML. -- 0. Übersicht. -- URL: http://www.payer.de/xml/xml00.htm
Dieser Text ist Teil der Abteilung Informationswesen, Bibliothekswesen, Dokumentationswesen von Tüpfli's Global Village Library.
Zum Zeitpunkt der Abfassung dieses Kapitels gelten:
XSL Transformations (XSLT). -- Version 1.0. -- W3C Recommendation 16 November 1999. -- URL: http://www.w3.org/TR/xslt. -- Zugriff am 2002-05-28]
Im Entwurfstadium befindet sich Version 2.0 von XSLT:
Deutsche Übersetzung:
Da XML eine strikte Trennung zwischen inhaltsbezogenem Markup und Darstellungen dieses Markup in verschiedenen Medien (Bildschirm, Druck, Audio, Video, Braille) befürwortet, braucht es eine normierte Sprache zur Umwandlung von xml-Ressourcen in darstellbaren Code -- d.h. eine Stylesheet-Language. Dafür wurde XSL -- Extensible Stylesheet Language entwickelt. Bald zeigte sich, dass eine Trennung in zwei verschiedene Sprachen sinnvoll ist:
Da es für die Umwandlung von xml-Ressourcen formal keinen Unterschied macht, ob das umgewandelte Produkt in einem der Darstellung dienenden Code (html, xhtml, pdf, LATEX u.ä.) codiert sind oder nicht, dient XSLT zwei Aufgaben:
Die Umwandlung kann prinzipiell an drei verschiedenen Orten geschehen:
Abb.: Die drei Orte, an denen die Umwandlung einer xml-Ressource stattfinden
kann
Zur Einführung in das Verständnis von XSLT diene folgendes einfaches Beispiel:
Wir nehmen an, dass als mögliches Unterelement einer Monographie ein Glossar vorgesehen sei. Der Einfachheit halber definieren wir dieses Unterelement hier mit einer selbständigen DTD (glossar.dtd):
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Glossar (Eintragung+)>
<!ELEMENT Eintragung (Begriff, Definition)>
<!ELEMENT Begriff (#PCDATA)>
<!ELEMENT Definition (#PCDATA)>
Das Folgende ist ein nach dieser DTD gebildetes XML-Mini-Dokument (glossar.xml):.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Glossar SYSTEM "glossar.dtd">
<Glossar>
<Eintragung> <Begriff>CSS</Begriff> <Definition>Cascadung Stylesheet</Definition> </Eintragung>
<Eintragung> <Begriff>.DSSSL</Begriff> <Definition>Document Style Semantics and Specification Language</Definition> </Eintragung>
<Eintragung> <Begriff..>JDK</Begriff> <Definition>Java Developer Kit</Definition> </Eintragung>
<Eintragung> <Begriff>SVG</Begriff> <Definition>Scalable Vector Graphics</Definition> </Eintragung>
</Glossar>
Das nach obiger DTD gebildete Glossar wollen wir in Form einer Tabelle in Folgender Form ausgeben:
Glossar
Begriff | Definition |
---|---|
Begriff1 | Definition1 |
Begriff2 | Definition2 |
usw. | usw. |
Das mit XSLT gebildete Stylesheet erhalten wir einfach, indem wir den HTML-Code dieser Vorlage nehmen, die entsprechenden XSL-Spezifikationen voransetzen und die oben kursiv wiedergegebenen Bestandteile aus der XML-Ressource durch entsprechenden XSLT-Code kennzichnen. Die XSLT-Spezifikationen und Codierungen werden im Folgenden durch Fettschrift wiedergegeben:
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML-Processing Instruction, obligatorisch. XSLT ist in XML geschrieben, deshalb können XSLT-Stylesheets auch mit jedem XML-Editor ediert werden -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Namespace-Declaration für XSLT, obligatorisch -->
<xsl:template match="/">
<!-- Ausgabe-Vorlage (template) für die gesamte Ressource (/ = Root-Element (die Angaben erfolgen gemäß XPath), obligatorisch -->
<!-- Es folgt das HTML-Schema für die Ausgabe als Tabelle -->
<html>
<head>
<title>Glossar</title>
</head>
<body>
<p align="center"><b>Glossar</b></p><table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
<tr>
<th width="30%">Begriff</th>
<th width="70%">Definition</th>
</tr><xsl:apply-templates/>
<!-- Der Umwandlungsprozessor wird angewiesen, an dieser Stelle die unten angegebenen Vorlagen anzuwenden -->
</table>
</body>
</html>
</xsl:template>
<xsl:template match="Eintragung">
<!-- Ausgabe-Vorlage (template) für das Element "Eintragung" -->
<tr>
<td width="30%"><b><xsl:value-of select="Begriff"/></b></td>
<!-- Dieser XSL-Ausdruck bedeutet, dass an dieser Stelle der jeweilige Text zwischen den XML-Tags <Begriff> </Begriff> einzusetzen ist. Da XML keine offenen Tags zulässt, ist dieses Tag mit / geschlossen -->
<td width="70%"><xsl:value-of select="Definition"/></td>
<!-- Dieser XSL-Ausdruck bedeutet, dass an dieser Stelle der jeweilige Text zwischen den XML-Tags <Definition> </Definition> einzusetzen ist. Da XML keine offenen Tags zulässt, ist dieses Tag mit / geschlossen -->
</tr>
</xsl:template>
</xsl:stylesheet>
<!-- Schließung der noch offenen Tags -->
Wendet man dieses XSLT-Stylesheet auf die Datei glossar.xml an, erhält man folgendes Ergebnis:
Glossar
Begriff | Definition |
---|---|
CSS | Cascadung Stylesheet |
DSSSL | Document Style Semantics and Specification Language |
JDK | Java Developer Kit |
SVG | Scalable Vector Graphics |
Wenn Sie Unter dem Menüpunkt "Ansicht" des Browsers die Option "Quelltext" auswählen, können Sie den automatisch generierten HTML-Code sehen.
Dieses Beispiel zeigt ein XSLT-Stylesheet besteht aus Templates (Vorlagen). Ein XSLT-Template ist eine in der Codierung der Zielressource geschriebene Vorlage, in der die Einfügungen usw. aus der XML-Vorlage durch Ausdrücke der XSLT bezeichnet werden. Die Umwandlung wird auch vom MS InternetExplorer (ich benutze Version 6.0) automatisch vorgenommen, wenn das xml-Dokument im Kopf vor <Glossar> folgende Processing Instruction enthält (natürlich mit dem jeweils entsprechenden Pfad):
<?xml-stylesheet type="text/xsl" href="glossar.xsl"?>
Sie können das mit ausprobieren indem sie auf folgenden Link klicken:
http://www.payer.de/xml/glossar.xml
Die Grundstruktur eines XSLT-Stylesheet ist (die Kommentarzeilen <!-- --> dienen der Erläuterung und gehören nicht zur Struktur):
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML-Processing Instruction, obligatorisch. XSLT ist in XML geschrieben, deshalb können XSLT-Stylesheets auch mit jedem XML-Editor ediert werden -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- Namespace-Declaration für XSLT, obligatorisch. Kann noch weitere Namespace-Declarations für im Stylesheet verwendete andere Namspaces enthalten. Gleichbedeutend mit <xsl:stylesheet > ist <xsl:transform > -->
<xsl:output method="html" encoding="UTF-8" indent="yes"></xsl:output>
<!-- gibt das Zielformat der Transformation an (xml, html, text). Default-Einstellung ist heute meist xhtml. Oft optional -->
<xsl:template match="XPath des Elements">
<!-- dieses Element enthält die entsprechende Vorlage. Wiederholbar -->
</xsl:template>
</xsl:stylesheet>
Ein XML-Dokument kann mit einem Stylesheet verbunden werden durch entsprechende Verarbeitungsparameter im Transformationsprozessor nach dem Muster
Befehl XML-Dokument-Name Stylesheet-Name Ausgabedokument-Name
Z.B. für den Xalan XSLT Processor:
java org.apache.xalan.xslt.Process -in glossar.xml -xsl glossar.xsl -out glossar.html
Man kann auch in das XML-Dokument eine oder mehrere Processing Instructions <?xml-stylesheet ?> einfügen. Fügt man mehrere solche Processing Instructions ein, so kann man dem Nutzer eine Wahl anbieten.
z.B.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Glossar SYSTEM "C:\Programme\Altova\XML Spy Suite\Examples\glossar.dtd">
<?xml-stylesheet type="text/xsl" href="C:\Programme\Altova\XML Spy Suite\Examples\glossartabelle.xsl" title="Tabelle" alternate="no"?>
<?xml-stylesheet type="text/xsl" href="C:\Programme\Altova\XML Spy Suite\Examples\glossarliste.xsl" title="Liste" alternate="yes"?><!-- die Attribute title und alternate sind optional. Bei mehreren möglichen Stylesheets sollte man jedem einen title geben. alternate="no" heißt, dass es das Stylesheet erster Wahl ist (Default), alternate="yes" heißt dass es ein alternatives Stylesheet ist, das gewählt werden kann -->
Die Einbindung einer solchen Processing Instruction in das XML-Dokument ist umstritten, da sie etwas der strikten Trennung zwischen XML-Dokument und Transformation in einen der Darstellung dienenden Code widerspricht.
Als Top-level elements werden in XSLT Elemente bezeichnet, die unmittelbare Kinder des Grundelements <xsl:stylesheet> [gleichbedeutend: <xsl:transform>] sind.
Top-level Elemente können sein:
Instructions sind XSLT-Elemente, die nicht Children des Grundelements <xsl:stylesheet> sein können. Hauptsächlich stehen sie innerhalb eines Template.
xsl:stylesheet und xsl:transform sind Synonyme
Funktion:
Grundelement (root element)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung id id Identifier für diesses Stylesheet extension-element-prefixes tokens exclude-result-prefixes tokens version x "1.0" Version von XSLT, zur Zeit 1.0 xmlns: x xmlns:xsl="http://www.w3.org/1999/XSL/Transform" Bezugssystem für Namen (Namespace) aus XSLT:
Child-Elemente:
Die Reihenfolge der Child-Elemente von <xsl:stylesheet> bzw. <xsl:transform> ist mit Ausnahme von <xsl:import> (siehe unten!) nicht signifikant.
Beispiel:
Funktion:
Fügt den Inhalt eines externen XSLT-Stylsheets in das Stylesheet ein. Im Unterschied zu <xsl:import/> ohne Prioritätsregelung, d.h. das eingefügte Style-Sheet darf nichts enthalten, was im Widerspruch zum einfügenden Stylesheet steht.
Top-level Element (muss Child-Element von <xsl:stylesheet> sein, kann aber -- im Unterschied zu <xsl:import> an beliebiger Stelle stehen)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung href x URI/URL Lokalisierung des zu importierenden Stylesheet
Leeres Element:
<xsl:include href = "..." />
Beispiel:
Funktion:
Fügt den Inhalt eines externen XSLT-Stylsheets in das Stylesheet ein. Im Unterschied zu <xsl:iinclude/> mit Prioritätsregelung, d.h. das eingefügte Style-Sheet darf auch Bestimmungen enthalten, die im Widerspruch zum einfügenden Stylesheet stehen. Die unten angeführten Prioritätsregeln regeln die Stylesheet-Kaskade (in einer Kaskade hat die jeweils untere Stufe bezüglich der Gestaltung des Endprodukts Priorität vor allen darüber stehenden Stufen).
Top-level Element (muss Child-Element von <xsl:stylesheet> sein)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung href x URI/URL Lokalisierung des zu importierenden Stylesheet
Leeres Element: <xsl:import href="..."/>
Reihenfolge:
Die <xsl:import>-Elemente müssen am Anfang vor allen anderen Child-Elemente des <xsl:style-sheet>-Elements stehen. Wenn <xsl:import>-Elemente in mit <xsl:include> importierten Stylesheets stehen, werden sie vom Tranformations-Programm an den Anfang des importierenden Stylesheets nach evtl. dort stehende <xsl:import>-Elemente gestellt. Dies ist wichtig für die Stylesheet-Kaskade!
Im Unterschied zu <xsl:include> beinhaltet <xsl:import> Prioritäten: im Konfliktfall hat das Grund-Stylesheet Präferenz vor dem importierten Stylesheet, und jedes importierte Style-Sheet hat Präferenz gegenüber den in der Abfolge weiter unter stehenden importierten Stylesheets. Einhalten importierte Stylesheets wider <xsl:import>, dann wird die Reihenfolge kompliziert -- weswegen man solche Import-Bäume am besten vermeidet.
Beispiel:
Funktion:
Template Rule: Vorlage (template) und Regeln für die Ausgabe (Output). Besagt: "Gebe alles aus, was innerhalb der Template Rule -- z.B. in HTML-Codierung -- steht und führe alle Anweisungen (Instructions) mit xsl-Namespace aus."
Top-level Element (muss Child-Element von <xsl:stylesheet> sein)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung Beispiel match (x) XPath-Ausdruck Elemente, auf die <xsl::template> angewandt werden soll. Ist obligatorisch, wenn kein name-Attribut verwendet wird name (x) (Namespace:)Name Name dieses template, damit dieses mit <xsl:call-template name="..." /> gezielt aufgerufen werden kann. Ist obligatorisch, wenn kein match-Attribut verwendet wird priority Ziffer (z.B. 0.5 | 0 | -0.25 | -0.5) damit kann man die Priorität zwischen verschiedenen <xsl:template> festlegen, für den Fall, dass sie sich widersprechende Anweisungen enthalten: Kaskade. mode (Namespace:)Name Name des <xsl:template> für einen bestimmten Zweck (z.B. "Inhaltsverzeichnis", "Druck", "Bildschirm", "Index"). Kann mit <xsl:apply-template mode="..." /> gezielt aufgerufen werden kann
Inhalt:
Beispiel:
Funktion:
Anwendung der Vorlagen (templates) auf die XML-Ressorce bis sie abgearbeitet ist (Schleife). Wenn z.B. ein Glossar 500 Einträge enthält werden die Templates nacheinander auf alle 500 angewandt, sodass der Output auch 500 Einträge enthält.
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung select node-set-expression Einschränkung der Anwendung auf bestimmte durch einen XPath-Ausdruck bezeichnete Elemente; falls nicht bestimmt, werden die Templates auf alle Descendants des aktuellen Knoten angewandt mode (Namespace:)Name Name des <xsl:template> für einen bestimmten Zweck (z.B. "Inhaltsverzeichnis", "Druck", "Bildschirm", "Index"). Kann mit <xsl:apply-template mode="..." /> gezielt aufgerufen werden kann.
Inhalt::
Beispiel:
Funktion:
Aufruf von Template-Regeln, die mit <xsl:import/> importiert wurden und die an der betreffenden Stelle durch Regeln mit höherer Priorität in der Stylesheet-Kaskade aufgehoben würden. D.h. eine Kaskadenstufe mit geringerer Priorität bekommt dadurch Priorität.
Instruction (innerhalb eines Template)
Attribute:
keine Attribute
Leeres Element:
<xsl:apply-imports />
Beispiel:
Funktion:
gezielter Aufruf eines -- durch einen Namen bezeichneten -- einzelnen Template. Mit dieser Instruction kann man modulare Stylesheets aufbauen.
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name x (Namespace:)Name Name des template <xsl:template name="...">
Inhalt::
Beispiel:
Funktion:
Ermittelt den Inhalt von durch einen XPath-Ausdruck Gekennzeichnetem und gibt diesen Inhalt als String aus.
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung select x XPath-Ausdruck XPath für die ausgewählten Elemente, Attribute u. del. disable-output-escaping "yes" | "no" definiert, ob Sonderzeichen als Code ausgegeben werden oder als Sonderzeichen (z.B. > als >. Wenn auf "yes" gesetzt, wird > als > ausgegeben).
Leeres Element:
<xsl:value-of select=" ..."/>
Beispiel:
Funktion:
Erzeugt ein Element im Output
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name x { (Namespace:)Name } Name des zu erzeugenden Elements namespace { URI } URI des Namespace use-attribute-sets (Namespace:)Names Ein oder mehrere <xsl:attribute-set>, die dieses Element nutzen soll
Inhalt:
Beispiel:
Funktion:
Erzeugt ein Attribut im Output. Erlaubt es, den Attributwert aus verschiedensten Quellen zu erzeugen.
Instruction (innerhalb eines Template oder innerhalb des Top-level Elements <xsl:attribute-set> ... </xsl:attribute-set>)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name x { (Namespace:)Name } namespace { uri-reference }
Inhalt:
Beispiel:
Funktion:
generiert einen Kommentar im Output (z.B. Copyright-Vermerk in XML-Dokument)
Instruction (innerhalb eines Template)
Attribute:
keine Attribute
Inhalt:
Beispiel:
<xsl:comment>© Für dieses XML-Dokument gilt Copyleft gemäß http:// ...</xsl:comment>
erzeugt den Output:
<!-- © Für dieses XML-Dokument gilt Copyleft gemäß http:// ... -->
Funktion:
Erzeugt im Output eine Processing Instruction
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name x { ncname } Name dieser Processing Instruction
Inhalt:
Beispiel:
Funktion:
Fügt in den Output Text ein
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung disable-output-escaping "yes" | "no" definiert, ob Sonderzeichen als Code ausgegeben werden oder als Sonderzeichen (z.B. > als >. Wenn auf "yes" gesetzt, wird > als > ausgegeben).
Inhalt:
Beispiel:
Funktion:
ordnet einer Variablen einen festen Wert zu
Top-level Element (Child von <xsl:stylesheet>, dann gilt die Variable universell) oder Instruction (innerhalb eines Template, dann gilt die Variable nur innerhalb der entsprechenden Elemente)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name x (Namespace:)Name Name der Variable select XPath-Ausdruck Ort des Werts der Variable. Wenn verwendet, dann ist <xsl:variable> ein leeres Element
Inhalt::
Beispiel:
Funktion:
Definiert Namen und Wert eines Parameter, der von einem Template verwendet werden soll. Der Wert des Parameter kann durch einen XPath-Ausdruck im Attribut select
Top-level Element (Child-Element von <xsl:stylesheet>, dann gilt der Parameter für das ganze Stylesheet) oder Instruction (innerhalb von <xsl:template>, dann gilt der Parameter nur innerhalb des betreffenden <xsl:template>)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name x (Namespace:)Name Name des Parameter select XPath-Ausdruck XPath des Wertes des Parameter
Inhalt::
Beispiel:
Funktion:
Definiert Parameter, der übergeben werden soll
Steht immer innerhalb von <xsl:apply-templates> oder <xsl:call-template>
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name x (Namespace:)Name Name dieses Parameters select XPath-Ausdruck XPath des Parameterwerts
Inhalt:
Vorlage (template), wenn Attribut select nicht verwendet wird
Leeres Element, wenn Attibut select verwendet wird: <xsl:with-param name="..." select="..."/>
Beispiel:
Funktion:
Kopiert das aktuelle Element in den Output. Die Children des Elements sowie seine Attribute werden nicht kopiert.
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung use-attribute-sets (Namespace:)Names Liste von einem oder mehreren attribute-sets, die angewendet werden sollen
Inhalt::
Beispiel:
Funktion:
Kopiert das mit select ausgewählte in den Output.
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung select XPath-Ausdruck XPath des zu Kopierenden
Leeres Element:
<xsl:copy-of select =" ..."/>
Beispiel:
Funktion:
Anwendung der Vorlagen (templates) auf die XML-Ressorce bis sie abgearbeitet ist (Schleife). Wenn z.B. ein Glossar 500 Einträge enthält werden die Templates nacheinander auf alle 500 angewandt, sodass der Output auch 500 Einträge enthält.
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung select node-set-expression Einschränkung der Anwendung auf bestimmte durch einen XPath-Ausdruck bezeichnete Elemente; falls nicht bestimmt, werden die Templates auf alle Descendants des aktuellen Knoten angewandt mode (Namespace:)Name Name des <xsl:template> für einen bestimmten Zweck (z.B. "Inhaltsverzeichnis", "Druck", "Bildschirm", "Index"). Kann mit <xsl:apply-template mode="..." /> gezielt aufgerufen werden kann.
Inhalt::
Beispiel:
Funktion:
Iterations-(Wiederholungs)-Operator. Bildet Verarbeitungsschleife: das Template wird auf das durch select Ausgewählte sooft angewandt bis alle Einträge abgearbeitet sind
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung select x XPath-Ausdruck XPath dessen, auf das die Oparation angewandt werden soll
Inhalt::
Beispiel:
Funktion:
Macht die Anwendung des eingeschlossenen Template von der Erfüllung einer Bedingung abhängig.
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung test x Boolescher Ausdruck Bedingung (wahr|falsch)
Inhalt::
Beispiel:
<xsl:choose>
Funktion:
Leitet Wahlbedingung ein: mehrere Bedingungen (wenn Bedingung1 erfüllt ist, dann Operation1; wenn Bedingung2, dann Operation2 ) bzw. Wenn-Andernfalls-Bedingung ein.
Instruction (innerhalb eines Template)
Attribute:
keine Attribute
Inhalt::
<xsl:when>
Funktion:
Wahlbedingung innerhalb von <xsl:chosse>
Muss immer Child-Element von <xsl:choose> sein. <xsl:choose> muss minestens ein <xsl:when> enthalten.
Attribute:
Attribut obligatorisch Attributwerte Bedeutung test x Bollescher Ausdruck Bedingung (wahr|falsch)
Inhalt:
Vorlage (template)
<xsl:otherwise>
Funktion:
Was zu tun ist, wenn keine der durch <xsl:when> bestimmten Wahlbedingungen zutrifft
Muss immer Child-Element von <xsl:choose> sein. <xsl:choose> kann ein <xsl:otherwise> enthalten, dieses muss dann nach allen <xsl:when> stehen
Attribute:
keine Attribute
Inhalt:
Vorlage (template)
Beispiel:
Funktion:
Definiert den Sortierschlüssel.
Ist Child von <xsl:apply-templates> oder <xsl:for-each>. Wenn mehrere <xsl:sort/> verwendet werden, dann definiert das erste den ersten Sortierschlüssel, das zeite den zweiten usw.
Attribute:
Attribut obligatorisch Attributwerte Bedeutung select XPath-Ausdruck XPath des zu Sortierenden lang Sprachcode nach RFC1766 (http://www.ietf.org/rfc/rfc1766.txt) Sprache, nach der sortiert werden soll (ewichtig z.B. für Sortierung von Umlazuten) data-type "text" | "number" | andere Zahlen können als Text (1, 10, 102, 2) oder als Zahlen (1, 2, 10, 102) sortiert werden order "ascending" | "descending" aufsteigende (1, 2, 3) oder absteigende (3, 2, 1) Sortierung case-order "upper-first" | "lower-first" Reihenfolge von Großbuchstaben (upper) und Kleinbuchstaben (lower)
Leeres Element:
<xsl:sort />
Beispiel:
Funktion:
Nummeriert oder zählt.
Instruction
Attribute:
Attribut obligatorisch Attributwerte Bedeutung count XPath-Ausdruck XPath dessen, was nummeriert oder gezählt werden soll level "single" | "multiple" | "any" Tiefe der Ebenen, auf denen gezählt bzw. nummeriert werden soll from XPath-Ausdruck Ab wo gezählt bzw. nummeriert werden soll value number-expression Ausdruck der in Ziffer umgewandelt werden soll (z.B.: value="7" format="i:" gibt die römische Ziffer vii aus format "1"|"01"|"a"|"A"|"i"|"I"|"anything else" Ziffernart der Ausgabe: "1" 0 1, 2, 3; "01"= 01, 02, 03;"a" = a, b, c; "A" = A, B, C; "i" = römische Ziffern in Kleinbuchstaben; "I" = römische Ziffern in Großbuchstaben; "anything else" = hängt vom Prozessor ab. lang Sprachcode Sprache, deren Alphabet genutzt werden soll (lateinisch, kyrillisch, chinesisch, bengalisch ...) letter-value "alphabetic" | "traditional" z.B. haben in römischen Ziffern die Buchstaben keinen alphabetischen Wert grouping-separator Zeichen Zeichen, mit dem Ziffern gruppiert werden (Punkt, Komma, Spatium) grouping-size Zahl Wieviele Ziffern zu einer Gruppe zusammengefasst werden sollen, z.B. drei: 100.222.324
Leeres Element:
<xsl:number />
Beispiel:
Funktion:
Bestimmt gewisse Eigenschaften der Ausgabe (Output)
Top-level Element (muss Child-Element von <xsl:stylesheet> sein)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung method "xml" | "html" | "text" | anderes Art der auszugebenden Ressource version Versionsnummer Version von XML bzw. HTML, nach der ausgegeben werden soll encoding string Wert des Attributes encoding im der XML-DEclaration des Outrput, z.B. "UTF-8" omit-xml-declaration "yes" | "no" dem XML-Output wird xml-declaration vorangestellt bzw. nicht standalone "yes" | "no" Wert des Attributes standalone in der XML-Declaration doctype-public string Wert des Attributes PUBLIC in der DOCTYPE_DEclaration (XML oder HTML): Identifier der DTD des Output (z.B. für XHTML: "-//W3C/DTD XHTML 1.0//EN") doctype-system string Wert des Attributes SYSTEM in der DOCTYPE_DEclaration (XML oder HTML): Identifier der DTD des Output (z.B. "C:\Programme\Altova\XML Spy Suite\Examples\glossar.dtd") cdata-section-elements (Namespace:)Names Name der Elemente, in denen CDATA stehen sollen, d.h. in denen kein Markup identifiziert werden soll (d.h. in denen < > </ > &..; u.ä. keine Markup-Bedeutung haben (gilt nur für XML-Output) indent "yes" | "no" gibt an, ob die Tags im Output gemäß der Baumstruktur eingerückt werden sollen, um die Struktur übersichtlicher zu machen media-type MIME-Bezeichnung MIME des Output
Leeres Element:
<xsl:output />
Beispiel:
Funktion:
Definiert eine Gruppe von Attributen für die Output-Ressource
Top-level Element (muss Child-Element von <xsl:stylesheet> sein)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name x (Namespace:)Name Name des attribute set use-attribute-sets (Namespace:)Names Namen anderer attribute sets, die von diesem attribute set verwendet werden sollen
Inhalt:
<xsl:attribute>* (optionell kein [falls nur andere attribute sets aufgerufen werden] bis mehrere)
Beispiel:
Funktion:
Definiert das Format für Dezimalzahlen
Top-level Element (Child-Element von <xsl:stylesheet>, optionell von keinmal bis mehrmal)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name (Namespace:)Name Name des Dezimalformats, falls es nur für Teile des Output verwendet werden soll decimal-separator "."|"," Punkt oder Komma vor Dezimalstellen grouping-separator "."|","|" " Punkt, Komma oder Spatium zur Gruppierung von Ziffern (z.B. 100.000) infinity "Infinity"|∞| ... Zeichen oder Ausdruck für unendlich minus-sign "-"|"minus" .... Zeichen oder Ausdruck für Minus NaN string Was ausgegeben werden soll, wenn der Wert, der verarbeitet werden sollte, keine Zahl ist percent char Zeichen oder Ausdruck für Prozent (z.B. "%", "p.c" per-mille char Zeichen oder Ausdruck für Promille zero-digit char digit char pattern-separator char
Leeres Element:
<xsl:decimal-format/>
Beispiel:
Funktion:
Definiert Index
Top-level Element
Attribute:
Attribut obligatorisch Attributwerte Bedeutung name x (Namespace:)Name Name des Index match x XPath-Ausdruck Zu Indizierendes use x XPath-Ausdruck Eigenschaft des zu Indizierenden, um im Index darauf zuzugreifen
Leeres Element:
<xsl:key name="..." match="..." use="..."/>
Beispiel:
Funktion:
Alias für Namespace. Sehr selten benutzt (nur manchmall, wenn aus einem Stylesheet ein anderes Stylesheet generiert wird).
Top-level Element
Attribute:
Attribut obligatorisch Attributwerte Bedeutung stylesheet-prefix x prefix | "#default" Namespace im Stylesheet result-prefix x prefix | "#default" Alias
Leeres Element:
<xsl:namespace-alias stylesheet-prefix = "..." result-prefix = "..." />
Beispiel:
Funktion:
im Output werden in den ausgewählten Elementen mehrfache Spatien (whitespace) erhalten
Top-level Element
Attribute:
Attribut obligatorisch Attributwerte Bedeutung elements x Elementnamen Elemente, in denen Spatien erhalten bleiben sollen
Leeres Element:
<xsl:preserve-space elements ="..."/>
Beispiel:
Funktion:
im Output werden in den ausgewählten Elementen mehrfache Spatien (whitespace) bis auf eines gelöscht
Top-level Element
Attribute:
Attribut obligatorisch Attributwerte Bedeutung elements x Elementnamen Elemente, in denen überflüssige Spatien gelöscht werden sollen
Leeres Element:
<xsl:strip-space elements="..."/>
Beispiel:
Funktion:
Gibt an, was getan werden muss, wenn ein Element nicht gefunden werden kann (weil z.B. die Datenbank momentan nicht zugänglich ist)
Instruction (innerhalb eines Template)
Attribute:
keine Attribute
Inhalt:
Vorlage (template)
Beispiel:
Funktion:
gibt eine Meldung aus (Fehlermeldung beim Debugging von Stylesheets)
Instruction (innerhalb eines Template)
Attribute:
Attribut obligatorisch Attributwerte Bedeutung terminate "yes" | "no" soll der Transformation-Prozessor gestoppt werden
Inhalt:
Vorlage (template)
Beispiel:
Yahoo und Google Categories
Zu Kapitel 14: XSL-FO -- XSL - Formatting Objects