Kategorien
Bilder & Vektorgrafiken bearbeiten Design Inspiration Photoshop Tutorials

Photoshop Seminar – Bildmanipulation

von Dirk Metzmacher

Die Möglichkeiten, die Fotografen in der Dunkelkammer haben, finden sich in Photoshop unter „Bild -> Anpassen“ („Bild -> Einstellungen“). Photoshop bietet aber eine Fülle weiterer Möglichkeiten. Schauen wir uns das genauer an.

Tonwertkorrektur
Falls die Farben in Ihrem Bild zu matt wirken, der Kontrast fehlt oder das Bild einen Farbstich ausweist, lässt sich dies mit dem Befehl „Tonwertkorrektur“ beheben. Sie beeinflussen den Tonwertbereich und die Farbbalance durch Einstellen der Helligkeitsstufen für Tiefen, Mitteltöne und Lichter.

Gradationskurven
Wenn Sie die Form der Kurve unter „Bild -> Anpassen -> Gradationskurven“ ändern, passen sich auch der Kontrast und die Farbe des Bildes an. Beim Biegen der Gradationskurve nach oben wird das Bild heller, beim Biegen nach unten dunkler. Die steileren Abschnitte der Gradationskurve stehen für Bildteile mit mehr Kontrast, während die flacheren Abschnitte Bereiche mit niedrigerem Kontrast repräsentieren.

Farbbalance
Mit dem Befehl „Farbbalance“ wird die Farbmischung in einem Bild geändert und eine allgemeine Farbkorrektur durchgeführt. So können Sie ein Bild mit Grünstich durch Ziehen des Pfeils in die entgegengesetzte Richtung (Magenta) beheben.

Helligkeit/Kontrast
Mit dem Befehl „Helligkeit/Kontrast“ nehmen Sie einfache Korrekturen am Tonwertbereich eines Bildes vor. Hat ein Bild zu wenig Kontrast, kann der Fehler durch dezentes Verschieben des Reglers in den Plusbereich behoben werden.

Screenshot

Farbton/Sättigung
Mit dem Befehl „Farbton/Sättigung“ können Sie den Farbton, die Sättigung und die Helligkeit im Bild anpassen oder gleichzeitig alle Farben im Bild korrigieren. Zum Einfärben eines Bildes aktivieren Sie „Färben“ und stellen die Regler nach Geschmack ein.

Sättigung verringern
Mit dem Befehl „Sättigung verringern“ wird ein Farbbild in ein Schwarz/Weiß-Bild verwandelt. Der Helligkeitswert jedes Pixels wird dabei nicht geändert.

Farbe ersetzen
Mit dem Befehl „Farbe ersetzen“ erstellen Sie eine Maske, mit der Sie bestimmte Farben im Bild auswählen können, um sie dann zu ersetzen. So können Sie Farbton, Sättigung und Helligkeit der ausgewählten Bereiche festlegen oder mit Hilfe des Farbwählers die Ersatzfarbe auswählen.

Selektive Farbkorrektur
Die selektive Farbkorrektur ist eine auch von High-End-Scannern verwendete Technik zum Erhöhen und Verringern der Druckfarbenmenge.

Screenshot

Verlaufsumsetzung
Mit dem Befehl „Verlaufsumsetzung“ werden Farben eines Verlaufs dem entsprechende Graustufenbereich eines Bildes zugeordnet. Wenn zum Beispiel ein zweifarbiger Verlauf festgelegt wird, werden der einen Farbe Tiefen zugeordnet, der anderen Farbe Lichter und den Abstufungen dazwischen Mitteltöne. So können Sie den Charakter des Bildes beeinflussen.

Fotofilter
Der Befehl „Fotofilter“ entspricht den Farbfilter vor dem Kameraobjektiv, mit dem die Farbbalance und die Farbtemperatur des Lichts geändert werden. Bei Verwendung des Befehls „Fotofilter“ können Sie aus verschiedenen Vorgaben wählen – zum Beispiel „Unter Wasser“ oder „Warmfilter“ – mit denen Sie den Farbton Ihres Bildes ändern können. Möchten Sie den Farbton selbst festlegen, können Sie die gewünschte Farbe alternativ im Farbwähler bestimmen.

Tiefen/Lichter
Vor zu hellem Hintergrund sehen Sie vom eigentlichen Motiv nur noch einen Schattenriss. Der Befehl „Tiefen/Lichter“ korrigiert solche Fotos. Fotos, bei denen das Motiv aufgrund zu großer Nähe zum Kamerablitzlicht leicht ausgewaschen wirkt, können so ebenfalls verbessert werden. Außerdem lassen sich zu dunkel geratene Tiefenbereiche in einem ansonsten ordentlich ausgeleuchteten Bild aufhellen. Der Befehl „Tiefen/Lichter“ macht seine Entscheidung, welche Bereiche aufzuhellen bzw. abzudunkeln sind abhängig von unmittelbar benachbarten Pixeln. Dadurch lassen sich die Tiefen und Lichter separat voneinander korrigieren.

Umkehren
Mit dem Befehl „Umkehren“ werden Farben in einem Bild umgekehrt, also in ein Negativ verwandelt.

Screenshot

Tonwertangleichung
Mit dem Befehl „Tonwertangleichung“ wird die Helligkeit der Bildpixel neu verteilt, so dass die Pixel die Helligkeitsstufen gleichmäßiger darstellen. Wenn Sie diesen Befehl verwenden, werden die hellsten und dunkelsten Werte im Bild ermittelt und erneut zugeordnet, so dass der hellste Wert Weiß und der dunkelste Wert Schwarz entspricht. Die Helligkeitswerte werden dann in Photoshop angeglichen, das heisst Zwischenwerte werden gleichmäßig über alle Graustufen verteilt.

Schwellenwert
Mit dem Befehl „Schwellenwert“ werden Graustufen- oder Farbbilder in kontrastreiche Schwarz/Weiß-Bilder umgewandelt. Sie können einen bestimmten Wert als Schwellenwert festlegen. Alle Pixel, die heller als der Schwellenwert sind, werden Weiß, alle dunkleren Pixel Schwarz.

Tontrennung
Mit dem Befehl „Tontrennung“ können Sie die Anzahl der Tonwertstufen oder Helligkeitswerte für jeden Kanal in einem Bild festlegen und dann Pixel dem nächstgelegenen Wert zuordnen. Dieser Befehl ist nützlich zum Erzeugen von Spezialeffekten, etwa großen, flächigen Bereichen in einem Foto.

Variationen
Mit dem Befehl „Variationen“ können Sie Farbbalance, Kontrast und Sättigung eines Bildes anhand von Miniaturansichten mit Alternativen einstellen. Durch einfaches anklicken der Miniatur wird das Bild in die entsprechende Richtung angepasst.

Screenshot

Kategorien
Bilder & Vektorgrafiken bearbeiten Design Inspiration Photoshop Tutorials

Photoshop Skripte

Photoshop spricht jetzt Javascript, Visual Basic und Apple Script. Seit Photoshop CS können Skripte die Funktionalität von Photoshop erhöhen. Den bekannten „Aktionen“ ähnlich, bieten sie erweiterte Möglichkeiten.

Aktionen zeichnen auf. Abläufe werden gespeichert und können später immer wieder genutzt werden. Skripte hingegen können ein Dokument analysieren und „Entscheidungen“ treffen.

Sie können in JavaScript (für beide Plattformen, Mac und Win), Visual Basic (Win) oder AppleScript (Mac) geschrieben werden. Jede Sprache hat Ihre Vorteile. Javascript ist unabhängig vom genutzten System, doch Visual Basic und AppleScript bieten Funktionen die Javascript nicht kennt, zum Beispiel das Starten eines anderen Programms oder die Interaktion mit einem Web-Server.

Installation
Um Photoshop Skripte zu installieren, fügen Sie das Skript in den Vorgaben Ordner von Photoshop ein. Der Pfad dahin könnte zum Beispiel so aussehen: C:\Programme\Adobe\Photoshop CS\Vorgaben\Skripte. Falls Photoshop geöffnet war, schließen Sie das Programm und öffnen es wieder. Unter „Datei -> Skripte“ finden Sie jetzt das installierte Skript.

Beispiel 1
Mit diesem Skript können Sie die Bilder eines Ordners öffnen, den Datei-Typ und die Größe ändern und die Bilder in einen anderen Ordner abspeichern lassen. So werden 10 PSD-Bilder mit 1200×1200 Pixel leicht 10 JPG-Bilder mit 200×200 Pixel.

Speichern Sie bildautomation.js unter C:\Programme\Adobe\Photoshop CS\Vorgaben\Skripte ab. In Photoshop finden Sie das Skript unter „Datei -> Skripte“.

DOWNLOAD BILD AUTOMATION SKRIPT

Screenshot
Skript Fenster

Beispiel 2
Das Skript Edge FX gibt einem geöffneten Bild einen Rahmen. Einige Beispiel-Kanten werden gleich mitgeliefert. Der Rahmen wird der Bildgröße angepasst und kann automatisch das Dokument des Rahmens verkleinern und drehen. Das Skript reagiert also auf die Vorgabe des geöffneten Dokuments.

Installieren Sie die Beispiel-Rahmen in einen „Edge FX“ Ordner unter C:\Programme\Adobe\Photoshop CS\ und Edge FX.js in C:\Programme\Adobe\Photoshop CS\Vorgaben\Skripte.

Und so funktioniert es: Öffnen Sie das Bild, das einen Rahmen bekommen soll. Klicken Sie auf „Datei -> Skripte“ und dann auf Edge FX. Wählen Sie einen Rahmen aus dem „Edge FX“ Ordner (Sie können natürlich auch eigene Rahmen verwenden).

DOWNLOAD EDGE FX SKRIPT

Screenshot
Skript angewendet

Skripte zum ausprobieren finden sich unter anderem bei Adobe.

Kategorien
Bilder & Vektorgrafiken bearbeiten Design Inspiration Photoshop Tutorials

Mit dem Bleistift gezeichnet

Um ein Bild mit dem Bleistift nachzuzeichnen, muss man kein Künstler sein. Wenige, einfache Schritte und Photoshop reichen bereits aus und eine realistische Bleistiftzeichnung entsteht.

Schritt 1:
Öffnen Sie ein Bild mit einem Motiv Ihrer Wahl. Klicken Sie im Menü auf „Bild -> Anpassen -> Sättigung verringern“.

Screenshot
Ausgangsbild in s/w

Schritt 2:
Kopieren Sie die Ebene durch „Ebene -> Neu -> Ebene durch Kopie“ und klicken Sie im Menü auf „Bild -> Anpassen -> Umkehren“.

Screenshot
Kopie umgekehrt

Schritt 3:
Stellen Sie den Ebenenmodus in der Ebenenübersicht von Normal auf Farbig abwedeln um.

Screenshot
Farbig abgewedelt

Schritt 4:
Benutzen Sie den „Filter -> Weichzeichnungsfilter -> Gaußscher Weichzeichner“ mit einem Radius von 1 bis 9. Die Stärke richtet sich nach dem Ursprungsbild. Verschieben Sie den Regler zwischen 1 und 9 hin und her, bis Sie mit dem Ergebnis zufrieden sind.

Screenshot
„gezeichnetes“ Bild

Einen interessanten Effekt erhalten Sie, wenn Sie auf einer eigenen Ebene Teile des Bildes kolorieren. Hier könnten Sie zum Beispiel das Auge des Adlers kolorieren.

Kategorien
Bilder & Vektorgrafiken bearbeiten Design Inspiration Photoshop Tutorials

Ebenentricks für schnelleres Arbeiten

Mit Photoshops Ebenen-Menü lassen sich Bildteile optimal trennen, sowie gezielt ein- und ausblenden. Aber das ist nicht alles. Einige Funktionen lassen sich eben nicht über das Ebenenmenü aufrufen. Tricks, die helfen schneller mit mehreren Ebenen umzugehen.

Sollen mehrere Ebenen zusammengefügt als neue Ebene genutzt werden, ohne dass die ursprünglichen Originalebenen dabei verloren gehen, müssen diese nicht einzeln kopiert werden. Stattdessen erstellt man zuerst eine neue, leere Ebene über die alle anderen Ebenen geschoben werden. Wählen Sie diese neue Ebene aus und verbinden Sie sie mit allem, was zusammengeführt werden soll.

Screenshot
Verknüpfte Ebenen

Ein Druck auf STRG, ALT und E kopiert nun die Inhalte der verbundenen Ebenen in die neue, leere Ebene. Die Ursprungsebenen werden dabei ignoriert und bleiben auch später noch als eigene Ebenen verfügbar. Drückt man stattdessen STRG, SHIFT und E, würden sie auch zusammen kopiert, die Originalebenen aber gelöscht werden.

Sollen mehrere Ebenen eines Dokumentes gmeinsam in die Zwischenablage exportiert werden, müssen diese nicht erst zusammengefügt werden. Um dies zu erreichen werden alle Ebenen ausgewählt und miteinander verbunden, die auch in der Zwischenablage zusammengestellt werden sollen.

Mit den Auswahlwerkzeugen oder STRG und A wird jetzt der zu kopierende Bildteil ausgewählt und mit STRG, SHIFT und C kopiert. Beim Einfügen in ein neues Dokument sind alle verbundenen Ebenen bereits auf einer einzigen Ebene platziert.

Kategorien
Bilder & Vektorgrafiken bearbeiten Design Inspiration Photoshop Tutorials

Photoshop Seminar – Die Werkzeuge

von Dirk Metzmacher

Die ersten Schritte sind immer die schwierigsten. Werfen wir einen Blick darauf, was Photoshop uns an Werkzeugen zu bieten hat.

Die Werkzeuge
Sie sollten Photoshop bereits erfolgreich installiert haben und das Programm geöffnet auf dem Bildschirm sehen. Die vielen Fenster mit tausend Einstellungsmöglichkeiten verwirren anfangs. Das ist normal. Schließen Sie bitte alle Fenster, mit Ausnahme, der Werkzeugpalette.

Screenshot
Die Werkzeuge

Die groben Auswahlwerkzeuge:
Öffnen Sie ein .jpg-Bild aus Ihrer Sammlung. An erster Stelle in der Werkzeug-Palette stehen die Auswahl-Werkzeuge Auswahlrechteck, Auswahlellipse, Einzelne Zeile und Einzelne Spalte.

Sie sehen an der ersten Position nur das Auswahlrechteck? Photoshop bietet so viele Werkzeuge, dass die Entwickler sich einen kleinen Trick ausdenken mussten, um alle unterzubringen.

Klicken Sie mit der rechten Maustaste auf das erste Werkzeug. Sie sehen, hinter manchem Werkzeug verstecken sich andere. Mit den Auswahlwerkzeugen wählen Sie Bereiche eines Bildes aus, um diese getrennt vom Rest zu bearbeiten.

Screenshot
Die (groben) Auswahlwerkzeuge

Screenshot
Bildbereich mit Auswahlrechteck ausgewählt

Das Verschieben-Werkzeug:
Das nächste Werkzeug bringt Bewegung in Photoshop. Wählen Sie zunächst mit dem Auswahlrechteck einen Teil des Bildes aus. Klicken Sie dann auf das nächste Werkzeug in der Palette: Das Verschieben-Werkzeug. Verschieben Sie den ausgewählten Teil des Bildes um ein paar Pixel.

Screenshot
Verschieben-Werkzeug angewendet

Die feinen Auswahlwerkzeuge:
Auswahlwerkzeuge wie das Auswahlrechteck sind für große Flächen gedacht. Um im Detail zu arbeiten, brauchen Sie feinere Werkzeuge. Das Lasso mit seinen beiden Brüdern Polygon-Lasso und Magnetisches-Lasso ist der Spezialist unserer Wahl. Im Beispiel wurde ein Teil des Bildes mit dem Lasso ausgewählt und dann mit dem Verschieben-Werkzeug bewegt.

Screenshot
Lasso-Werkzeug angewendet

Die Lasso-Werkzeuge

Der Zauberstab:
Photoshop ist Magie. Und kein Werkzeug macht dies deutlicher als der Zauberstab. Mit ihm erzeugen Sie Auswahlen von Bereichen mit ähnlichen Farben. Klicken Sie etwa auf den blauen Himmel werden alle blauen Pixel ausgewählt. Einstellungen für dieses und alle anderen Werkzeuge machen Sie in der Options-Leiste für Werkzeuge oben unter dem Menü.

Screenshot
Zauberstab angewendet

Das Freistellungswerkzeug:
Mit diesem Werkzeug können Sie Bilder zurechtschneiden. Wählen Sie einfach den Teil des Bildes aus, den Sie behalten möchten und bestätigen Sie Ihre Wahl mit einem Doppelklick auf das Bild.

Screenshot
Bilder freistellen

Die Slice-Werkzeuge:
Sie können ein Bild in verschiedene Bereiche aufteilen. Diese Bereiche können später zum Beispiel in Rollover-Buttons verwandelt oder verschiedenen Formaten zugeordnet werden (JPG oder GIF).

Screenshot
Bilder teilen

Für jedes Werkzeug können später in der schon erwähnten Optionsleiste eigene Einstellungen vorgenommen werden.

Kategorien
Bilder & Vektorgrafiken bearbeiten Design Inspiration Photoshop Tutorials

Photoshop Seminar – Werkzeuge zum Dritten

von Dirk Metzmacher

Auf so wichtige Standards wie das Text-Werkzeug, kann niemand verzichten. Doch auch spannende Werkzeuge, wie der Wischfinger, kommen nicht zu kurz.

Weich- und Scharfzeichner, Wischfinger:
Öffnen Sie wieder ein .JPG-Bild aus Ihrer Sammlung und probieren Sie die folgenden Werkzeuge aus.

1. Der Weichzeichner verwischt harte Kanten im Bild. Mit Hilfe des Weichzeichners können Sie zum Beispiel einen Hintergrund weich verwischen aber eine Person im Vordergrund scharf stellen.

2. Der Scharfzeichner macht natürlich genau das Gegenteil. Er zeichnet weiche Kanten im Bild wieder scharf.

3. Verwischen Sie Ihre Bilddaten mit dem Wischfinger. Diesen Effekt sollten Sie durch ziehen über das Bild gleich mal ausprobieren.


Weichgezeichnet, scharfgezeichnet und verwischt

Abwedler, Nachbelichter Schwamm:
1. Der Abwedler kann zu dunkle Bildbereiche aufhellen.

2. Sollten die Bildbereiche zu hell sein, schafft der Nachbelichter hier Abhilfe und dunkelt diese Bildbereiche nach.

3. Der Schwamm ändert die Farbsättigung eines Bereiches. So können Sie bestimmte Bereiche von einer Farbe befreien oder deren Sättigung erhöhen.


Aufgehellt, abgedunkelt und Farbe verringert

Textwerkzeuge:
Wenn Sie mit einem Textwerkzeug auf ein Bild klicken, wird das Werkzeug in den Bearbeitungsmodus gesetzt. Sie können jetzt Zeichen eingeben und bearbeiten. Sie müssen Änderungen an der Textebene immer durch einen Klick auf ENTER bestätigen, um gewisse Vorgänge ausführen zu können.


Textwerkzeuge angewendet

Form-Werkzeuge:
Verwenden Sie die Form-Werkzeuge zum Zeichnen von Linien, Rechtecken, abgerundeten Rechtecken und Ellipsen innerhalb eines Bildes. In Photoshop können Sie auch Polygone zeichnen und eigene Form-Bibliotheken erstellen. Diese Formate stehen Ihnen dann immer wieder zur Verfügung und können mit Freunden oder Kollegen getauscht werden.


Ergebnisse der Form-Werkzeuge


Die Form-Werkzeuge

Sonstige Werkzeuge:
Die Anmerkungen-Werkzeuge fügen schriftliche und Audio-Anmerkungen zu Bildern hinzu.

Die Pipette dient dem Aufnehmen von Farbe aus dem Bild.

Mit dem Messwerkzeug messen Sie zum Beispiel Abstände, Positionen und Winkel.

Das Hand-Werkzeug verschiebt ein Bild im Fenster. Ein Doppelklick auf dieses Werkzeug bringt Ihr Bild auf Bildschirmgröße, sofern die Fenster des Programms nicht im Weg stehen.

Das Zoom-Werkzeug vergrößert und verkleinert die Bildansicht. Sollten Sie zu tief in das Bild gezoomt haben, kommen Sie durch einen Doppelklick auf das Zoom-Werkzeug in die Ursprungsansicht zurück.


Sonstiges

Alles einmal ausprobiert, sind Ihnen die wichtigsten Werkzeuge des Programms nun bekannt.

Kategorien
Inspiration Tutorials

XML-Workshop Teil 5: Style Sheets, Elemente und Attribute

von Jan Winkler

Teil 5 unseres Workshops ist der Verwendung mehrerer Style Sheets sowie der Verwendung von Elementen, Attributen und Variablen gewidmet.

Mehrere Style Sheets verwenden
Es gibt zwei Wege, in einem XSLT-Dokument die Angaben eines anderen zu verwenden. Im ersten Fall benutzt man dazu xsl:include. Als Wert des href-Attributes erhält dies die URL der zu verwendenden Datei. Diese wird eingelesen. Die enthaltenen Angaben werden an der Stelle, an der der Aufruf stattfand, in das aktuelle Dokument eingebunden. Im zweiten Fall benutzt man das xsl:import-Element. Auch hier wird das href-Attribut mit der jeweiligen URL definiert. Der Unterschied zu xsl:include besteht darin, dass die Regeln des importierten Style Sheets Vorrang vor denen des eigentlichen Dokuments haben.

Ein Beispiel:

 <?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:import href="trans1.xsl"/>
 <xsl:import href="trans2.xsl"/>
      <xsl:include href="inc1.xsl"/>
 <!-- ... -->

<xsl:import href="inc2.xsl"/>
 <!-- ... -->
 </xsl:stylesheet>

Bitte beachten Sie, dass beide Elemente nur als Top-Level Element verwendbar sind. Außerdem sollten die xsl:import-Elemente vor allen anderen Elementen definiert werden – xsl:include kann danach überall auf Root-Ebene vertreten sein.

Elemente erzeugen
XSLT bietet zum Erzeugen der Resultate vorgefertigte Lösungen (/Elemente). Diese werden angewandt, um eine saubere Syntax des Resultat-Dokuments zu erhalten und um Knoten zu erzeugen, die innerhalb der Quelle schonverwendet wurden. Elemente werden mit xsl:element erzeugt. Dies besitzt die Attribute

  1. name (Name des Elements)
  2. namespace (Namensraum des Elements) sowie
  3. use-attribute-sets (Name der zu verwendenden Attributliste).

Der Name muss definiert werden – der Namespace und die Attributliste stehen frei. Innerhalb des xsl:element-Elements können beliebige Informationen (Text, Markup, Kommentare …) folgen.

Beispiel:

      <xsl:element name="MeinElement"
>
 Das ist mein Element.
 </xsl:element>

erzeugt:

      <MeinElement> Das ist mein Element. </MeinElement>

Attribute erzeugen
So, wie Elemente erzeugt werden können, ist es auch möglich, diesen Attribute zuzuweisen. Dazu verwendet man das xsl:attribute-Element. Es erhält als Wert des name-Attributes den zu verwendenden Namen sowie bei Bedarf ein Namespace-Attribut . Innerhalb des Elements wird der Wert des erzeugten Attributes notiert.

Beispiel:

      <xsl:element name="MeinElement"
>
 <xsl:attribute name="MeinAttribut">MeinWert</xsl:attribute>

<p>
 <xsl:attribute name="align">right</xsl:attribute>

Das ist mein Element.
 </p>
 </xsl:element>

… erzeugt:

      <MeinElement MeinAttribut="MeinWert">

<p align="right">
 Das ist mein Element.
 </p>

</MeinElement>

Bitte beachten Sie, das das Element nur innerhalb eines

  1. xsl:element-
  2. xsl:attribute-set-
  3. definierten Elements

verwendet werden kann. Außerdem sollten Sie darauf achten, dass die Attribut-Definition ohne Zwischentext direkt nach der Element-Definition stehen sollte.

Attributlisten
Mit Attributlisten kann man häufig verwendete Attribute schneller verwenden, indem man sie einem Element über use-attribute-sets zuweist und nicht jedes Mal neu definieren muss. Attributlisten werden durch das Element xsl:attribute-set definiert und beinhalten ausschließlich Attribute (xsl:attribute). Außerdem müssen sie durch das name-Attribut mit einem Namen versehen werden, der dann von Elementen verwendet werden kann.

Ein Quellbeispiel:

      <?xml
version="1.0"?>
 <?xml-stylesheet href="trans.xsl"
type="text/xsl"?>
      <!DOCTYPE A [
 <!ELEMENT
A ( B )*>
 <!ELEMENT B EMPTY>
 ]>
      <A>

<B />
 </A>

Das Style Sheet:

      <xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:attribute-set name="Liste1">
 <xsl:attribute name="align">right</xsl:attribute>

<xsl:attribute name="style">color:red;</xsl:attribute>

</xsl:attribute-set>
 <xsl:attribute-set name="Liste2" use-attribute-sets="Liste1">

<xsl:attribute name="src">meinbild.gif</xsl:attribute>

</xsl:attribute-set>
 <xsl:template match="A">
 <html><body>

<xsl:element name="h3" use-attribute-sets="Liste1">

Attributlisten
 </xsl:element>
 <hr />
 <xsl:apply-templates/>

</body></html>
 </xsl:template>
 <xsl:template match="B">

<xsl:element name="img" use-attribute-sets="Liste2" />

</xsl:template>
 </xsl:stylesheet>

… erzeugt:

      <html>

<body>
 <h3 align="right" style="color:red;">

Attributlisten
 </h3>
 <hr>
 <img align="right"
style="color:red;" src="meinbild.gif">
 </body>

</html>

Resultat der Transformierung
Des Weiteren unterstützt das Element die Verwendung weiterer Attribut-Listen, die als eine durch Leerzeichen getrennte Liste als Wert von use-attribute-sets definiert werden können (siehe Beispiel oben). Bitte beachten Sie, dass es sich hier um ein Top-Level Element handelt.

Verzweigung einer HTML-Datei

Resultat der Transformierung

Sonstiges erzeugen
Neben Elementen und dazugehörigen Attributen können auch Texte, Processing-Instructions oder Kommentare erzeugt werden. Da diese sich in etwa gleich der Erzeugung von Elementen verhalten, soll das folgende Beispiel genügen, um die Verwendung der einzelnen Elemente zu verdeutlichen:

      <xsl:text>
Inhalt </xsl:text>
 <xsl:processing-instruction name="xml-stylesheet">

href="test1.xsl" type="text/xsl"
 </xsl:processing-instruction>

<xsl:comment>
 Dies ist ein Kommentar.
 </xsl:comment>

… erzeugt:

      <?xml-stylesheet href="test1.xsl" type="text/xsl">

<!--
 Dies ist ein Kommentar.
 -->

Computer generierten Text erzeugen
Neben der Möglichkeit, mittels xsl:text statisch Text erzeugen zu können, bietet XSLT die Voraussetzungen, um Text durch den Parser erstellen zu lassen. Dazu wird das xsl:value-of-Element im Zusammenhang mit dessen select-Attribut verwendet. Tritt dieses auf, wird der Wert des durch select beschriebenen Knotens an dieser Stelle eingefügt.

Beispiel:

      <xsl:template
match="Person">
 <xsl:value-of select="@Anrede" />
heisst:
 <xsl:value-of select="@Vorname" />
 <xsl:text>
</xsl:text>
 <xsl:value-of select="@Nachname" />.

</xsl:template>

… erzeugt:

      Er heisst: Max Mustermann.

Bitte beachten Sie, dass innerhalb von Elementen – ob XSL oder Markup – statt dieser Schreibweise auch einfach geschweifte Klammern ({ und }) verwendet werden können. Sie stehen als Synonym für das Element xsl:value-of. Innerhalb der Klammern notieren Sie dann den Wert, den Sie üblicherweise als select-Wert notiert hätten.

Kopieren
Um Elemente des Quellbaums in das Resultat zu übernehmen, kopiert man diese mit Hilfe des Elements xsl:copy. Es kann innerhalb von Templates verwendet werden und veranlasst, dass der aktuelle Knoten bzw. das aktuelle Element in das Resultat kopiert wird. Ein eventueller Namespace wird dabei übernommen – jedoch keine Attribute oder Unterelemente. Außerdem steht wiederum das bereits bekannte Attribut use-attribute-sets zur Verfügung. Beispiel:

      <xsl:template
match="B">
 a
 <xsl:copy> b </xsl:copy>
 c

</xsl:template>

… erzeugt:

      a
 <B> b
</B>
 c

Bitte beachten Sie, dass dieses Element nur auf Element-Knoten angewandt werden darf. Außerdem besteht eine zweite Möglichkeit des Kopierens: xsl:copy-of. Dieses Element kopiert – im Gegensatz zu xsl:copy – den gesamten mit select definierten Knoten inklusive Unterknoten aus dem Quell-Dokument in das Resultat-Dokument.

Nummerierungen erzeugen
Nummerierungen können etwa bei Überschriften, Kapitel-Bezeichnungen oder einfach Listen zur Anwendung kommen. Man definiert sie mit dem Element xsl:number. Es hat folgende Attribute:

  1. level – Beschreibt, ob die Aufzählung nur auf einer (single/Standard), mehreren (multiple) oder allen (any) Zweigen des Quell-Baumes fortgeführt werden soll.
  2. count – Beschreibt einen Pattern (siehe oben), bei dessen Auftreten der Zählwert erhöht werden soll. Standard ist der Pattern des Templates.
  3. from – Beschreibt Patterns, bei deren Auftreten der Zähler beginnen soll (~zurücksetzen). Als Standard gilt jedes Elternelement.
  4. value – Funktion oder XPath-Ausdruck, der die Berechnung des Zählerstandes erlaubt. Standard ist position().
  5. format – String, der das Format der Ausgabe beschreibt (1, a, A, i, I). Alle anderen Zeichen werden als Zusatz angesehen.
  6. lang – Beschreibt eine Sprache, aus deren Alphabet die Zeichen verwendet werden sollen.
  7. letter-value – Beschreibt, ob die alphabetische (alphabetic) oder traditionelle (traditional/Standard) Zählweise verwendet werden soll.
  8. grouping-separator – Trennzeichen für Gruppierungen (wie z.B. bei 1.000.000).
  9. grouping-size – Beschreibt die Größe der Gruppierungen.

Ein Beispiel:

      <xsl:template match="H4">

<xsl:number level="any" from="H1" count="H2"/>

<xsl:text>.</xsl:text>
 <xsl:number level="any" from="H2"
count="H3"/>
 <xsl:text>.</xsl:text>
 <xsl:number
level="any" from="H3" count="H4"/>
 <xsl:text>
</xsl:text>
 <xsl:apply-templates/>
 </xsl:template>

Wiederholungen
Unter Umständen ist es notwendig, bestimmte Abläufe oder Knoten innerhalb eines Templates in einer gewissen Reihenfolge durchlaufen zu lassen. Dazu verwendet man das Element

      xsl:for-each

Quellbeispiel:

      <?xml version="1.0"
?>
 <?xml-stylesheet href="test1.xsl" type="text/xsl"
?>
      <!DOCTYPE A [
 <!ELEMENT A ( B )*>
 <!ELEMENT
B ( C | B )*>
 <!ELEMENT C EMPTY>
 ]>
      <A>

<B><C /><C /><C /></B>
 <B><C /><C
/><C /><C /></B>
 </A>

Style Sheet:

      <xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <table>
 <xsl:for-each
select="A/B">
 <tr>
 <th><xsl:apply-templates
select="."/></th>
 <xsl:for-each select="C">

<td><xsl:apply-templates select="."/></td>
 </xsl:for-each>

</tr>
 </xsl:for-each>
 </table>
 </xsl:template>

<xsl:template match="B">TH</xsl:template>
 <xsl:template
match="C">TD</xsl:template>
 </xsl:stylesheet>

… ergibt:

Verzweigung einer HTML-Datei

Das Resultat der Transformierung

Bedingte Abschnitte
Innerhalb von XSLT gibt es die Möglichkeit, Transformationen nur dann auszuführen, wenn eine bestimte Bedingung erfüllt ist. Dazu wird das Element

      xsl:if
      test
      true

Beispiel:

      <xsl:template match="A">
 <xsl:if
test="position() mod 2 = 0">
 <p>1</p>
 </xsl:if>

<xsl:if test="position() mod 2 = 1">
 <p>2</p>

</xsl:if>
 </xsl:template>

… ergibt:

      12121212...

Eine Auswahl treffen
Wenn die Auswahl durch xsl:if nicht mehr ausreicht bzw. zu umständlich wird, kann dieses Element durch (drei) andere Elemente ersetzt werden: xsl:choose, xsl:when und xsl:otherwise. Ähnlich wie in anderen Programmiersprachen wird so eine Mehrfachauswahl definiert. Die gesamte Auswahl wird von xsl:choose umschlossen. Darin enthalten sind xsl:when und xsl:otherwise. Das Element xsl:when beschreibt mit Hilfe des test-Attributes eine Bedingung. Ist diese erfüllt, wird der Inhalt des Elementes in den Resultat-Baum übernommen – die anderen Bedingungen werden nicht weiter betrachtet, der Parser schreitet mit dem nächsten Knoten nach dem schließenden xsl:choose-Tag fort. Ist die Bedingung nicht erfüllt, schreitet der Parser zum nächsten xsl:when weiter und prüft diese. Wurde auch die letzte Bedingung nicht erfüllt, wird letztlich der Inhalt des xsl:otherwise-Elements übernommen. Beispiel:

      <xsl:template match="C">
 <xsl:choose>
 <xsl:when
test="position() mod 3 = 0"><p>0</p></xsl:when>

<xsl:when test="position() mod 3 = 1"><p>1</p></xsl:when>

<xsl:otherwise><p>2</p></xsl:otherwise>
 </xsl:choose>

</xsl:template>

… ergibt: 120120120120…

Sortieren
Die Reihenfolge von Daten ist besonders bei langen unübersichtlichen Listen sehr wichtig. Das Sortieren der Daten kann mit XSLT bestimmt und beeinflusst werden. Wird das Element

      xsl:sort
      select, data-type,
lang, order
      case-order
  1. select

    – enthält einen Pattern (Standard ist …), der beschreibt, welche Knoten sortiert werden sollen.

  2. lang

    – enthält eine Sprachdefinition (de, en, …) die zur Sortierung verwendet werden soll.

  3. data-type

    – beschreibt, ob die zu sortierenden Knoten wie Strings (text/Standard), Zahlen (number) oder andere Datentypen (Angabe des Datentypes nach XML-Names) sortiert werden sollen.

  4. order

    – beschreibt, ob die Daten aufsteigend (ascending/Standard) oder absteigend (descending) sortiert werden soll.

  5. case-order 

    – beschreibt, ob bei data-type=“text“ die kleinen (upper-first) oder die großen Buchstaben (lower-first) als erstes einsortiert werden sollen. (Also ob a,b,c,A,B,C oder A,B,C,a,b,c)

Als Beispiel wollen wir unser Adressbuch aus dem ersten Kapitel nach Namen sortiert ausgeben lassen. Wir fügen dem Buch allerdings noch einige Personen hinzu:

      <?xml version="1.0" ?>
 <?xml-stylesheet
href="trans.xsl" type="text/xsl"?>
 <Adressbuch>

<Kunde Name="Max Mustermann">
 <Adresse>
 <Strasse>Musterstrasse
14</Strasse>
 <PLZ>12345</PLZ><Ort>Mustehausen</Ort>

</Adresse>
 </Kunde>
 <Kunde Name="August Ausgedacht">

<Adresse>
 <Strasse>Gibts-Nicht-Weg 37</Strasse>
 <PLZ>67890</PLZ><Ort>Augsburg</Ort>

</Adresse>
 </Kunde>
 
      <Kunde Name="Gunter
Gibtsnicht">
 <Adresse>
 <Strasse>Hauptstrasse 001</Strasse>

<PLZ>65381</PLZ><Ort>Berlin</Ort>
 </Adresse>

</Kunde>
 <Kunde Name="Jutta Jefferson">
 <Adresse>

<Strasse>Bahnhofsweg 123</Strasse>
 <PLZ>86413</PLZ><Ort>Hamburg</Ort>

</Adresse>
 </Kunde>
      </Adressbuch>

Als Style Sheet benutzen wir:

      <?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <h1>Kunden</h1>
 <table>

<tr><th>Kunde</th><td>Strasse</td><td>PLZ
Ort</td></tr>
 <xsl:for-each select="Adressbuch/Kunde">

<xsl:sort select="@Name"/>
 <tr>
 <th><xsl:value-of
select="@Name"/></th>
 <td><xsl:value-of select="Adresse/Strasse"
/></td>
 <td>
 <xsl:value-of select="Adresse/PLZ"
/>
 <xsl:text> </xsl:text>
 <xsl:value-of select="Adresse/Ort
"/>
 </td>
 </tr>
 </xsl:for-each>
 </table>

</xsl:template>
 </xsl:stylesheet>
      

      
Verzweigung einer HTML-Datei
Resultat der Transformierung

Bitte beachten Sie, das dieses Element nur innerhalb von

      xsl:apply-templates
      xsl:for-each

Variablen und Parameter
Wenn innerhalb des gesamten Dokumentes ein bestimmter Text immer wieder auftritt oder es Schwierigkeiten mit dem Erstellen von Attributen gibt (weil acb=“def=“““ einen Fehler ergibt), können Variablen zum Einsatz kommen. Diese definiert man mit Hilfe des xsl:variable- oder xsl:param-Elements. Beide funktionieren in etwa gleich: Als Wert des name-Attributes wird der Variablenname definiert und innerhalb des Elements der Wert. Dieser kann aus fast allen beliebigen Dingen bestehen (Text, Markup, …).

Einziger Unterschied der beiden ist, dass der Wert von xsl:param als Standardwert gilt; wenn das Template oder Style Sheet, in dem das xsl:param-Element auftritt, aufgerufen wird, können die Parameter (xsl:param) als Standardwerte verwendet werden (siehe unten). Um die Werte nun wiederum abzurufen, wird xsl:value-of (bzw. { und }) benutzt und diesem ein Dollar-Zeichen ($) sowie der Variablenname übergeben. Beispiel:

      <xsl:variable
name="wert">@Name="Max Mustermann"</xsl:variable>

<xsl:value-of select="Adressbuch/Kunde[$wert]"/>

… gibt den Inhalt des Kunden mit dem Namen „Max Mustermann“ aus.

Bitte beachten Sie die Lebensdauer von Variablen: Eine Variable besteht nur innerhalb eines Templates oder Style Sheets. Wird innerhalb eines untergeordneten Templates ein neuer Wert für die Variable definiert, so überschreibt dies nicht die eigentliche Variable. Ist der Bereich des neuen Wertes zu Ende, tritt der vorherige wieder in Kraft. Bitte beachten Sie ausserdem, dass Variablen (xsl:variable) entweder als Top-Level Element oder innerhalb eines Templates definiert werden können – Parameter (xsl:param) dagegen können nur als Top-Level Elemente gelten.

Um Parameter innerhalb eines Templates verwenden zu können, müssen diese an das jeweilige Template übergeben werden. Dies geschieht mittels des Elements xsl:with-param, welches als Attribut den Namen des Parameters erhält. Wird es aufgerufen, so übergibt es den Wert des Parameters an die gleichnamige Variable.

Behandlung von Whitespaces
Neben der normalen Behandlung von Whitespaces durch XML kann diese für den XSL-Parser nochmals konkret festgeschrieben werden. Dies kann durch zwei Elemente geschehen: xsl:strip-space und xsl:preserve-space. Beide Elemente erhalten dazu das Attribut elements, welches als Wert eine durch Leerzeichen getrennte Liste von Elementnamen enthält. Bei allen Elementen, die so mit dem Element xsl:strip-space ausgezeichnet werden, werden die Whitespaces zusammengefasst (wie in XML beschrieben). Bei allen Elementen, die durch xsl:preserve-space definiert werden, bleiben die Whitespaces erhalten. Grundsätzlich brauchen Elemente nicht extra mit xsl:strip-space definiert werden – sollen jedoch bei Elementen, die sich innerhalb eines mit xsl:preserve-space beschriebenen Elements befinden, die Whitespaces gekürzt werden, sollte dies hier definiert werden.

Beispiel:

      <?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<!-- import/include -->
 <xsl:strip-space elements="Adressbuch
Strasse">
 <xsl:preserve-space elements="Person">

<!-- sonstiges -->
 </xsl:stylesheet>

Bitte beachten Sie, dass beide Top-Level Elemente sind und möglichst vor Templates definiert werden sollten. Außerdem kann anstelle einer Liste der Joker (*) definiert werden. Er besagt, dass alle Elemente einbezogen werden.

Darüber hinaus besteht eine dritte Möglichkeit, um Text so übernehmen zu lassen, wie er notiert wurde. Alle Notierungen innerhalb eines xsl:text-Elements werden auch in das resultierende Dokument übernommen (inklusive aller Whitespaces).

Beispiel:

      <xsl:text>
 Dieser Text
 wird genau so

auch im Resultat
 erscheinen!
 </xsl:text>

XSL-Software
Neben dem Mozilla Browser gibt es einige – meist serverseitige – Tools, mit denen Sie XML-Dateien transformieren können. Dazu gehören unter anderem Cocoon, Xalan oder Sun’s JAXP:

Cocoon (XSLT Server Plugin)
Xalan (Java XSLT Parser)
JAXP (JavaTM API for XML Processing)

Kategorien
Inspiration Tutorials

XML-Workshop Teil 4: Templates in XSL(T)

von Jan Winkler

Im dritten Teil des XML-Workshops haben wir uns mit den Grundlagen von XSLT befasst, mit dem XML-Dokumente, ähnlich CSS, ausgelesen und gestaltet werden. Jetzt ist es Zeit, die Templates einmal näher unter die Lupe zu nehmen, die innerhalb von XSLT verwendet werden.

Mit Templates arbeiten
Innerhalb von XSLT werden Templates verwendet. Ein Template ist eine Vorlage für die Transformation bestimmter Knoten. Diese Knoten können Elemente, Attribute oder auch Text sein. Vorlagen werden durch das xsl:template-Element erstellt und beschrieben. Es besitzt unter anderem die Attribute match und name. Letzteres definiert einen eindeutigen Namen für das Template, der später weiter verwendet werden kann. Mit dem match-Attribut wird exakt spezifiziert, auf welche Knoten der Quell-Datei diese Vorlage angewandt werden soll. Die Werte dieses Attributes werden als Pattern bezeichnet. Folgende Patterns sind unter anderem möglich:

Wert Beschreibung
Elementname Wird ein Elementname oder eine durch | verbundene Liste von Elementnamen definiert, gilt die Vorlage für alle benannten Elemente innerhalb der Liste.
/ Das root-Element wird verwendet.
Elementname1/Elementname2 Wird auf alle Elementname2 angewandt, die Elementname1 als Eltern-Element haben.
Elementname1//Elementname2 Wird auf alle Elementname2 angewandt, die Elementname1 als Vorfahren-Element (z.B. Eltern-Element oder Eltern-Element vom Eltern-Element usw.) haben.
id(Name) Wird auf alle Elemente angewandt, die die ID Name haben.
key(Name,Wert) Wird auf alle Elemente angewandt, die durch einen Schlüssel (xsl:key) mit dem jeweiligen Namen definiert werden und den Wert haben.
text() Wird auf alle Text-Knoten angewandt.
processing-instruction() Wird auf alle PI’s angewandt.
node() Wird auf alle Knoten angewandt, die keine Attribute oder das Root-Element sind.
Elementname[n] Wird auf alle Elemente Elementname angewandt, wenn sie das n-te Element innerhalb des Elternelements sind.
* Alle Knoten werden verwendet.
position() = x Alle Elemente mit der Positionsnummer x werden verwendet. Auch sind Rechenformeln denkbar: position() mod 4 = 0 (jeder 4te Knoten)
@Name Alle Attribut-Knoten mit dem Namen Name.
Elementname
[@Attributname=“Wert„]//
Alle Elemente mit dem Attributwert Wert des Attributes Attributname.

Dies ist nur eine kleine Auswahl der wichtigsten Pattern. XSLT definiert hier noch unzählige weitere und erlaubt darüber hinaus auch die Kombination mit/und XPath ausdrücke/n.

Gelangt der XSLT-Parser zu einem Knoten, für den ein Template definiert wurde, ersetzt er diesen Knoten durch das Template. Innerhalb des Templates können dazu weitere XSLT-Angaben oder auch Text oder Markup folgen. Diese werden dann als weitere Knoten angesehen und ebenfalls abgeschritten. Beispiel xml-Quelle:

 <?xml
version="1.0"?>
 <?xml-stylesheet href="trans1.xsl"
type="text/xsl"?>
      <!DOCTYPE A [
 <!ELEMENT
A (#PCDATA | B)*>
 <!ELEMENT B (#PCDATA | C)*>
 <!ELEMENT C
EMPTY>
 ]>
      <A>
 <B>
 <C />

</B>
 </A>

Das XSLT-Stylesheet:

      <?xml
version="1.0"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="A">
 <html>
 <body>

&lt;Element<b>A</b>&gt;
 <xsl:apply-templates />

&lt;/Element<b>A</b>&gt;
 </body>
 </html>

</xsl:template>
 <xsl:template match="B">
 &lt;Element<b>B</b>&gt;

<xsl:apply-templates />
 &lt;/Element<b>B</b>&gt;

</xsl:template>
 <xsl:template match="C">
 &lt;Element<b>C</b>
/&gt;
 </xsl:template>
 </xsl:stylesheet>

Werden die obigen Daten auf das darunterstehende Style Sheet angewandt, so erhält man folgendes Bild:

Verzweigung einer HTML-Datei

Resultat der Transformierung

Templates in Templates
Durch die Verschachtelung von XML-Elementen wird es nötig, innerhalb eines Templates ein anderes verwenden zu können. Dies erfolgt über das xsl:apply-templates-Element. Es besagt, dass an dieser Stelle andere Templates eingebunden werden können (sofern die entsprechenden Knoten existieren). Wird das Element als leeres Element notiert (siehe Beispiel oben) heißt dies, dass hier alle Vorlagen erscheinen können. Darüber hinaus kann der Vorlagenbereich auch eingeschränkt werden. Dies erfolgt über das select-Attribut, welches als Wert wiederum einen Pattern erhalten kann (siehe ‚Mit Templates arbeiten‘ -> Pattern). Auch können mehrere xsl:apply-templates-Elemente innerhalb eines xsl:template-Elements enthalten sein. Beispiel Quelle:

      <!DOCTYPE A [
 <!ELEMENT A (#PCDATA | B)*>
 <!ELEMENT
B (#PCDATA | C)*>
 <!ELEMENT C EMPTY>
 ]>
      <A>

<B>
 <C />
 </B>
 </A>

Das XSLT-Style Sheet:

      
        <?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="A">
 <html>
 <body>

<p>Der Inhalt von B wird ausgelassen,
 stattdessen folgt der Inhalt von
C:</p>
 <p>"<xsl:apply-templates select="C" />"</p>

</body>
 </html>
 </xsl:template>
 <xsl:template
match="B">
 Anfang B
 <xsl:apply-templates/>
 Ende
B
 </xsl:template>
 <xsl:template match="C">
 Dies
ist der Inhalt von C
 </xsl:template>
 </xsl:stylesheet>
      

Erzeugt folgendes Bild:

Resultat der Transformierung

Resultat der Transformierung

Templates einbinden
Um Templates auch an Stellen verwenden zu können, an denen es eigentlich nicht auftreten sollte (da z.B. keine entsprechenden Knoten vorhanden sind), benutzt man das xsl:call-template-Element. Es erhält als Wert des name-Attributes den Namen eines Templates, das an dieser Stelle eingebunden werden soll. Beispiel (es wird die obige Quelle verwendet):

      
        <?xml
version="1.0"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="A">
 <html>
 <body>

<p>Inhalt von C:</p>
 <p><b><xsl:apply-templates
select="C" /></b></p>
 </body>
 </html>

</xsl:template>
 <xsl:template name="tempB" match="B">

Anfang B
 <xsl:apply-templates />
 Ende B
 </xsl:template>

<xsl:template match="C">
 Dies ist der Inhalt von C<br />

<xsl:call-template name="tempB" />
 </xsl:template>

</xsl:stylesheet>
      

… erzeugt folgendes Bild:

Resultat der Transformierung

Resultat der Transformierung

Mehrere Style Sheets verwenden
Es gibt zwei Wege, um in einem XSLT-Dokument die Angaben eines anderen verwenden zu können. Im ersten Fall benutzt man dazu das xsl:include-Element. Als Wert des href-Attributes erhält dies die URL der zu verwendenden Datei. Diese wird eingelesen und die enthaltenen Angaben werden in das aktuelle Dokument eingebunden (an der Stelle an der der Aufruf stattfand). Im zweiten Fall benutzt man das xsl:import-Element. Auch hier wird das href-Attribut mit der jeweiligen URL definiert. Der Unterschied zu xsl:include besteht darin, dass die Regeln des importierten Style Sheets Vorrang vor denen aus dem eigentlichen Dokument haben. Ein Beispiel:

      
        <?xml
version="1.0"?>
 <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:import href="trans1.xsl"/>
 <xsl:import href="trans2.xsl"/>
      
      
        <xsl:include href="inc1.xsl"/>

<!-- ... -->
 <xsl:import href="inc2.xsl"/>
 <!--
... -->
 </xsl:stylesheet>
      

Bitte beachten Sie, dass beide Elemente nur als Top-Level Element verwendbar sind. Außerdem sollten die xsl:import-Elemente vor allen anderen Elementen definiert werden – xsl:include-Elemente können danach überall auf root-Ebene vertreten sein.