01.07.2013 Aufrufe

xsl:template - Business Informatics Group

xsl:template - Business Informatics Group

xsl:template - Business Informatics Group

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

M7: XSLT<br />

Inhalt<br />

Einführung<br />

Verarbeitungsmodell<br />

Stylesheets<br />

Template Rules<br />

Sprachumfang<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

1


Einführung<br />

1/10: Motivation für Stylesheets<br />

Aufgaben: Transformation<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

Layout<br />

Extraktion von Informationen<br />

Stylesheet = Datei, die Regeln für die Strukturierung und<br />

Formatierung von Elementen einer Quelldatei enthält<br />

keine feste Kodierung der Regeln in Applikationen (wie z.B.<br />

Darstellungsregeln in HTML Browser) → generische Prozessoren<br />

Ein und derselbe Inhalt wird dadurch<br />

unterschiedlich strukturierbar (umordnen, erweitern,<br />

einschränken, etc.)<br />

unterschiedlich formatierbar (verschiedene<br />

Ausgabeformate - HTML, PDF, WML, etc. - und Ausgabegeräte<br />

- PC, Handhelds, etc.)<br />

Content-Provider müssen sich nicht um Layoutfragen kümmern!<br />

2


Einführung<br />

2/10: Sprachen zur Erstellung von Stylesheets<br />

• DSSSL (Document Style Semantics and Specification Language)<br />

für SGML<br />

• CSS (Cascading Style Sheets)<br />

für HTML und X(HT)ML<br />

• XSL (Extensible Stylesheet Language)<br />

für X(HT)ML<br />

CSS vs. XSL:<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

CSS XSL<br />

Anwendbar auf HTML-Dokumente ja nein<br />

Anwendbar auf XML-Dokumente ja ja<br />

Transformation nein ja<br />

Syntax proprietär XML<br />

Dokument als Baum repräsentiert nein ja<br />

Anwendungsbereich einfach komplex<br />

3


Einführung<br />

3/10: XSL - Transformation und Formatierung<br />

XSLT: XSL Transformations<br />

Sprache zur Transformation der Struktur eines XML-Dokuments<br />

XML-Syntax<br />

Ausgabe in XML (primäres Ziel des W3C), aber auch in HTML<br />

oder beliebigem anderen ASCII-Format<br />

Adressierung von Dokumentteilen durch XPath<br />

W3C-REC "XSL Transformations (XSLT) 1.0", 16. Nov. 1999<br />

XSL-FO: XSL Formatting Objects<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

XSLT<br />

XPath<br />

XSL<br />

XSL-FO<br />

XML-Vokabular zur Spezifikation von Formatierungssemantik,<br />

unabhängig von konkreten Ausgabeformaten<br />

W3C-REC "Extensible Stylesheet Language (XSL) 1.0", 15. Oct.<br />

2001<br />

4


Einführung<br />

4/10: XSL Beispiel<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

<br />

XSLT <br />

XSL-FO<br />

<br />

<br />

XPath<br />

5


Einführung<br />

5/10: Wozu Transformieren?<br />

Beispiel Datenaustausch:<br />

falls kein gemeinsames Schema verwendet<br />

wird - Umstrukturierung der XML-<br />

Dokumente<br />

falls Empfänger-Applikation kein XML<br />

versteht - Transformation z.B. in<br />

comma separated list<br />

Beispiel Multi-Delivery:<br />

XML muss in entsprechendes Format des<br />

Ausgabegerätes transformiert werden<br />

(HTML, WML, etc.)<br />

Beispiel Datenintegration:<br />

Extraktion von XML-Dokument-Teilen und<br />

Integration in anderen XML-Dokumenten<br />

(z.B. Kundenadresse aus Kundenliste<br />

extrahieren und in Rechnung integrieren)<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

XML<br />

(Schema A)<br />

XML<br />

XML<br />

XML<br />

XML<br />

(Schema B)<br />

Anything<br />

6<br />

HTML<br />

WML<br />

XML<br />

Fragment


Einführung<br />

6/10: Wann/Wo Transformieren?<br />

Request<br />

(Pull)<br />

Änderung<br />

(Push)<br />

Zeitpunkt<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

Kategorien von XSLT Prozessoren:<br />

Teil des Web Browsers: z.B. IE6<br />

Teil des Web (Application) Servers: z.B.<br />

http://xml.apache.org/cocoon<br />

Standalone: z.B.<br />

http://users.iclway.co.uk/mhkay/saxon<br />

http://xml.apache.org/xalan-j/<br />

Server Client<br />

Lokation<br />

7


Einführung<br />

7/10: Sprachcharakteristika<br />

XSLT basiert auf XML-Syntax<br />

XSLT Stylesheet ist ein wohlgeformtes XML-Dokument<br />

Wiederverwendung von XML-Prozessoren zum Parsen<br />

XSLT erlaubt die Einbindung anderer<br />

Programmiersprachen (Java, Javascript, etc.)<br />

XSLT ist demnach berechnungsvollständig<br />

XSLT ist regelbasiert<br />

ein Stylesheet enthält eine Menge von "Template Rules"<br />

wenn ein bestimmtes Muster ("Pattern") - definiert durch XPath -<br />

im Input auftaucht ("Kontext"), wird bestimmter Output<br />

produziert ("Action")<br />

XSLT ist ressourcenintensiv<br />

gesamtes Dokument im Hauptspeicher<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

8


Einführung<br />

8/10: XSLT und XML Prozessoren/APIs<br />

XSLT-Prozessoren verwenden XML-Prozessoren<br />

XML-Prozessoren konvertieren das XML-Dokument in eine<br />

Baumstruktur - das XPath-Datenmodell<br />

XSLT navigiert, selektiert und manipuliert die Knoten in<br />

diesem Baum<br />

Transformationen deklarativ spezifizierbar<br />

Transformationen können als Menge von Regeln angegeben<br />

werden, anstatt einer Sequenz prozeduraler API-<br />

Instruktionen<br />

der XSLT-Prozessor entscheidet über das WIE<br />

(kann jedoch beeinflußt werden) - XSLT ist frei von<br />

Seiteneffekten<br />

ein einzelnes XSLT-Stylesheet kann daher oftmals für<br />

unterschiedlich strukturierte Dokumente herangezogen<br />

werden, anstatt jedesmal eine neue Anwendung schreiben zu<br />

müssen (hohe Wiederverwendbarkeit)<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

9


Einführung<br />

9/10: XSLT und XPath<br />

XSLT verwendet XPath<br />

zur Selektion von Elementen, die verarbeitet werden<br />

sollen<br />

zum Kopieren von Werten aus dem Quelldokument in<br />

das Ergebnisdokument<br />

für numerische Berechnungen<br />

zur Stringmanipulation<br />

zum Testen boolescher Bedingungen<br />

XSLT erweitert XPath um zusätzliche Funktionen<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

10


Einführung<br />

10/10: XSLT und SQL<br />

"XSLT ist das SQL des Web"<br />

Datenselektion<br />

Abgeschlossenheit<br />

Zusammengesetzte<br />

Operationen<br />

Built-In Operationen<br />

Semi-prozedurale<br />

Mechanismen<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

SQL Standard<br />

SELECT Statement<br />

Tabellen<br />

Views und<br />

Subqueries<br />

XSLT Standard<br />

XPath Expression<br />

Bäume<br />

Template Rules und<br />

mehrere Stylesheets<br />

Arithmetik, Vergleiche, Stringmanipulation<br />

Beeinflussung der Verarbeitungsreihenfolge,<br />

Einbindung von Programmiersprachen<br />

11


Inhalt<br />

Einführung<br />

Verarbeitungsmodell<br />

Stylesheets<br />

Template Rules<br />

Sprachumfang<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

12


Verarbeitungsmodell<br />

1/7: Überblick<br />

Quelldokument<br />

(XML)<br />

XML Prozessor<br />

Stylesheet Baum<br />

Quellbaum<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

Stylesheet<br />

(XML)<br />

XML Prozessor<br />

Transformationsprozeß<br />

(XSLT-Prozessor)<br />

Ergebnisbaum<br />

Output<br />

Dokumente<br />

HTML<br />

XML<br />

Text<br />

....<br />

13


Verarbeitungsmodell<br />

2/7: Der Transformationsprozess<br />

Mehrere Quelldokumente<br />

können im Stylesheet über die document() Funktion<br />

geladen werden<br />

Mehrere Stylesheets<br />

durch oder einbindbar<br />

Mehrere Output-Dokumente<br />

nicht Teil des XSLT-Standards<br />

von einigen Prozessoren jedoch unterstützt<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

14


Verarbeitungsmodell<br />

3/7: Der Transformationsprozess<br />

Im Transformationsprozess wird das Quelldokument<br />

beginnend an der Dokumentwurzel ("root node")<br />

traversiert<br />

Das Stylesheet wird nach einer Template Rule<br />

durchsucht, welche auf diesen Knoten anwendbar ist<br />

Die Template Rule wird abgearbeitet ("instanziert"),<br />

indem der der Template Rule entsprechende Teilbaum<br />

im Stylesheet traversiert wird<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

15


Verarbeitungsmodell<br />

4/7: Der Transformationsprozess<br />

Eine Template Rule ist nicht vollständig abgearbeitet, solange ihr End-Tag<br />

nicht erreicht ist<br />

Mehrere Template Rules können dadurch zur gleichen Zeit offen sein<br />

(1) select <strong>template</strong> rule for B<br />

B<br />

complete <strong>template</strong> rule for B<br />

Für jedes Element i.d. aktuellen Template Rule prüft der Prozessor, ob es<br />

sich um ein XSLT-Element handelt, d.h. über den XSLT-Namensraum<br />

definiert wurde<br />

falls ja, wird der Output entsprechend der Template Rule aufbereitet<br />

falls nein, wird das Element (z.B. ein HTML-Tag) unverändert in das<br />

Ergebnisdokument geschrieben ("Literales Ergebniselement")<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

(2) select <strong>template</strong> rule for C<br />

C<br />

D<br />

complete <strong>template</strong> rule for C<br />

(3) select <strong>template</strong> rule for D<br />

complete <strong>template</strong> rule for D<br />

16


Verarbeitungsmodell<br />

5/7: Beispiel<br />

<br />

<br />

<br />

Nigel Rees<br />

Sayings of the Century<br />

8.95<br />

<br />

<br />

Evelyn Waugh<br />

Sword of Honour<br />

12.99<br />

<br />

<br />

Herman Melville<br />

Moby Dick<br />

8.99<br />

<br />

<br />

J. R. R. Tolkien<br />

The Lord of the Rings<br />

22.99<br />

<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

17


Verarbeitungsmodell<br />

6/7: Beispiel - XPath Datenmodell<br />

Darstellung als UML Objektdiagramm<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

books:Element<br />

book:Element category:Attribute book:Element<br />

author:Element title:Element<br />

:Text<br />

Nigel Rees<br />

reference<br />

:Text<br />

Sayings of the Century<br />

:root<br />

....<br />

price:Element<br />

:Text<br />

8.95<br />

category:Attribute<br />

fiction<br />

Legende:<br />

Knotenname: Knotentyp<br />

Knotenwert<br />

: besteht aus<br />

18<br />

..


Verarbeitungsmodell<br />

7/7: Beispiel - Stylesheet<br />

<br />

<br />

<br />

<br />

A list of books<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

Template Rule<br />

Literale Ergebniselemente<br />

Anwenden weiterer<br />

Template Rules<br />

auf Kindknoten von <br />

Fortlaufende Nummerierung<br />

gemäß Position der <br />

Knoten im Quelldokument<br />

Ausgabe des<br />

Inhalts der<br />

aktuellen<br />

, u. Knoten<br />

19


Inhalt<br />

Einführung<br />

Verarbeitungsmodell<br />

Stylesheets<br />

Template Rules<br />

Sprachumfang<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

20


Stylesheets<br />

1/3: Grundsätzlicher Aufbau<br />

Stylesheet-Element<br />

(= Elementwurzel) muss<br />

Versions-Attribut aufweisen (1.0)<br />

Zweck: Vorwärtskompatibilität<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

XSLT-Namensraum muss<br />

immer angegeben werden<br />

Standardpräfix ist „<strong>xsl</strong>:“<br />

<br />

<br />

<br />

.....<br />

<br />

Definiert, in welcher Form der Baum<br />

des Ergebnisdokuments serialisiert<br />

werden soll - optional<br />

(XML = default, HTML, Text)<br />

21


Stylesheets<br />

2/3: Einbindung in XML-Dokumente<br />

Externes referenziertes Stylesheet<br />

Referenz im XML-Dokument auf ein externes Stylesheet<br />

<br />

Einbindung über XML Processing Instruction<br />

type: Sprache, in der das Stylesheet geschrieben ist<br />

href: URI des zu verarbeitenden Stylesheets<br />

Externes nicht-referenziertes Stylesheet<br />

es gibt keine Beziehung zwischen XML Dokument und<br />

Stylesheet<br />

beide werden unabhängig voneinander an den XSLT-<br />

Prozessor übergeben<br />

Eingebettetes Stylesheet<br />

direkt im XML-Dokument<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

22


Stylesheets<br />

3/3: Modularisierung<br />

Ein Stylesheet kann mittels oder <br />

andere Stylesheets referenzieren<br />

deren Inhalt wird an der Stelle der Referenzierung expandiert<br />

müssen als Subelemente von spezifiziert<br />

werden<br />

direkte oder indirekte Rekursion ist nicht erlaubt<br />

Einsatz: unverändert inkludieren vs. Importiertes überschreiben<br />

Inkludieren <br />

importierte Stylesheets haben gleiche Priorität wie importierendes<br />

bei Konflikt aufgrund gleicher Template Rules - Fehler<br />

Importieren <br />

bei Konflikt: importierendes Stylesheet hat<br />

Vorrang gegenüber importiertem<br />

falls mehrere importiert werden, hat das<br />

als letztes Importierte Vorrang, usw.<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

A<br />

import<br />

import<br />

B<br />

import<br />

D<br />

import E<br />

C<br />

import<br />

A → C → F → B → E → D<br />

23<br />

F


Inhalt<br />

Einführung<br />

Verarbeitungsmodell<br />

Stylesheets<br />

Template Rules<br />

Sprachumfang<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

24


Definition von Template Rules<br />

1/2: <strong>xsl</strong>:<strong>template</strong><br />

<br />

<br />

<br />

<br />

attribute und descendent-or-self<br />

Oder-Verknüpfung durch | realisierbar<br />

name (optional): benanntes Template<br />

Aufruf über <br />

(Alternative zu pattern matching)<br />

das match-Attribut kann, muss aber in diesem Fall nicht<br />

angegeben werden<br />

Template Rule ist damit unabhängig von bestimmten<br />

Knoten<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

25


Definition von Template Rules<br />

2/2: <strong>xsl</strong>:<strong>template</strong> (cont´d)<br />

priority (optional)<br />

falls mehrere Template Rules zu einem Knoten matchen,<br />

wird nur jene mit der höchsten priority verwendet<br />

(beliebige Number-Werte)<br />

Defaultpriorität wird automatisch berechnet gemäß des<br />

Spezialisierungsgrades von match<br />

Defaultprioritätswerte: -0,5 (generell - z.B. "*") bis +0,5<br />

(speziell - z.B. person[name="Harold"])<br />

beliebiges Ändern der Defaultpriorität möglich<br />

Fehler bei gleicher Priorität<br />

mode (optional)<br />

ermöglicht die Definition mehrerer Template Rules für<br />

einen Knoten, wobei jedoch nur eine - je nach mode -<br />

abgearbeitet wird<br />

Beispiel: mode="color" bzw. mode="b/w"<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

26


Anwenden von Template Rules<br />

1/5: <strong>xsl</strong>:apply-<strong>template</strong>s<br />

Kindknoten des aktuellen<br />

Knotens werden nicht<br />

automatisch verarbeitet!<br />

Dies muß explizit über<br />

<strong>xsl</strong>:apply-<strong>template</strong>s spezifiziert werden.<br />

Einfachste Form ist ein leeres Element<br />

agiert nur als Platzhalter<br />

bestimmt den Punkt, an dem der Prozessor alle<br />

Kindknoten des aktuellen Knotens mit weiteren passenden<br />

Template Rules verarbeiten und gegebenenfalls den<br />

entsprechenden Output ausgeben soll<br />

<br />

<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

<br />

<br />

<br />

27


Anwenden von Template Rules<br />

2/5: <strong>xsl</strong>:apply-<strong>template</strong>s (cont´d)<br />

select (optional)<br />

Template Rule wird nur auf ausgewählte Kindknoten<br />

angewendet<br />

spezifiziert durch XPath-Ausdruck, der Knotenmenge liefert<br />

die Reihenfolge der Verarbeitung der Kindknoten kann durch<br />

<strong>xsl</strong>:sort spezifiziert werden<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

mode (optional)<br />

wende nur Template Rules mit z.B mode="b/w" an<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

28


Anwenden von Template Rules<br />

3/5: <strong>xsl</strong>:call-<strong>template</strong><br />

Verarbeitet eine Template Rule<br />

mit dem spezifizierten Namen name<br />

steuert daher explizit den<br />

Traversierungsprozeß, ähnlich wie <strong>xsl</strong>:for-each<br />

(das über die Knotenliste iteriert)<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />


Anwenden von Template Rules<br />

4/5: Exkurs: Auswertungskontext im<br />

XSLT-Prozessor<br />

Eine Template Rule wird immer in einem Kontext<br />

instanziert<br />

Der Kontext besteht aus zwei Komponenten:<br />

Aktueller Knoten (current node)<br />

Knoten des Quelldokuments, den der XSLT-Prozessor<br />

gerade verarbeitet und<br />

Aktuelle Knotenliste (current node list)<br />

Knoten, die sich aus einer Selektion durch<br />

<strong>xsl</strong>:apply-<strong>template</strong>s oder <strong>xsl</strong>:for-each ergeben haben<br />

Aus diesem Kontext ergibt sich der<br />

Auswertungskontext für XPath-Ausdrücke<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

30


Anwenden von Templates<br />

5/5: Exkurs: Verarbeitungsformen<br />

Push-basierter (Pattern-Matching) Ansatz<br />

Kindknoten werden nicht in der Template Rule des<br />

Vaterknoten behandelt<br />

die Verarbeitung dieser Kindknoten wird durch<br />

an passende Template Rules<br />

delegiert<br />

Pull-basierter Ansatz<br />

Kindknoten werden explizit selektiert und im Vaterknoten<br />

behandelt<br />

<br />

<br />

<br />

Beide Ansätze können gemeinsam angewendet werden<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

31


Parameterisierung<br />

1/2: Definition von Parametern<br />

Globale und lokale Parameter (name)<br />

mit Defaultwerten (select –optional)<br />

Global: Definition direkt unterhalb<br />

der Elementwurzel<br />

(als „Top-Level Elemente“)<br />

Lokal: Definition innerhalb einer<br />

Template Rule<br />

<br />

<br />

<br />

<br />

Übergabe eines Wertes für einen lokalen Parameter<br />

über <strong>xsl</strong>:with-param erfolgt bei<br />

<strong>xsl</strong>:apply-<strong>template</strong>s oder<br />

<strong>xsl</strong>:call-<strong>template</strong><br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />


Parameterisierung<br />

2/2: Übergabe von Parameterwerten<br />

<strong>xsl</strong>:with-param Elemente müssen<br />

direkte Subelemente sein von<br />

oder<br />

<br />

name (obligatorisch)<br />

erhält den Parameterwert über diesen Namen<br />

select (optional)<br />

ein XPath-Ausdruck liefert den Parameterwert -<br />

ist in diesem Fall ein leeres Element<br />

ist kein leeres Element, darf es kein select<br />

Attribut haben, stattdessen steht der Parameterwert im<br />

Elementinhalt<br />

Beispiel:<br />

<br />

<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />


Verarbeiten von Text<br />

<strong>xsl</strong>:value-of<br />

Elementinhalt<br />

Quelldokument: All the text here is<br />

the value<br />

Template Rule: <br />

Output: All the text here is the value<br />

aktuelles Element<br />

Attributwerte<br />

Quelldokument: This is a secret.<br />

<br />

Template Rule:<br />

<br />

[TYPE: ]<br />

<br />

<br />

<br />

<br />

Output: [TYPE: secret] This is a secret.<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />


Built-In Template Rules<br />

1/2<br />

Für jeden der 7 Knotentypen des XPath Datenmodells<br />

existiert eine "Built-In Template Rule"<br />

Diese kommt zum Einsatz, wenn für einen Knoten keine<br />

passende Template Rule gefunden wird<br />

Im Falle eines leeren Stylesheets führen die Built-In<br />

Template Rules dazu, dass der Inhalt des Dokuments ohne<br />

Markup ausgegeben wird<br />

Element- und Wurzelknoten (root node)<br />

für jedes Subelement wird implizit <br />

aufgerufen, wodurch passende Template Rules ausgeführt<br />

werden<br />

die Built-In Template Rule hat folgendes Aussehen:<br />

<br />

<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

35


Built-In Template Rules<br />

2/2<br />

Text- und Attributknoten<br />

werden durch <strong>xsl</strong>:value-of in das Ergebnisdokument<br />

übernommen<br />

die Built-In Template Rule hat folgendes Aussehen:<br />

<br />

<br />

<br />

Kommentar-, Namensraum- und Processing<br />

Instruction-Knoten<br />

werden nicht übernommen<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

36


Beispiel<br />

1/5 XML-File<br />

<br />

<br />

<br />

Jeff<br />

555-1234<br />

555-4321<br />

lightgrey<br />

<br />

<br />

David<br />

383-1234<br />

383-4321<br />

lightblue<br />

<br />

<br />

Roger<br />

888-1234<br />

888-4321<br />

lightyellow<br />

<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

Aufgabe: Transformation in ein<br />

neues XML-Dokument und<br />

Einfügen aller Member mit<br />

Level="gold"<br />

<br />

***David***<br />

<br />

37


Beispiel<br />

2/5: XPath Datenmodell<br />

Darstellung als UML Objektdiagramm<br />

Member:Element<br />

Name:Element Phone:Element<br />

:Text<br />

Jeff<br />

id:Attribute<br />

:Text<br />

555-1234<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

1<br />

:root<br />

FitnessCenter:Element<br />

level:Attribute<br />

platinum<br />

Phone:Element<br />

:Text<br />

type:Attribute<br />

home<br />

555-4321<br />

....<br />

Member:Element ....<br />

....<br />

FavoriteColor:Element<br />

type:Attribute<br />

work<br />

:Text<br />

Legende:<br />

lightgrey<br />

Knotenname: Knotentyp<br />

Knotenwert<br />

: besteht aus<br />

....<br />

38


Beispiel<br />

3/5: Stylesheet<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Ausgabe von bzw. <br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

Ausgabe aller<br />

Mitglieder<br />

Ausgabe d.<br />

GoldMembers<br />

39


Beispiel<br />

4/5: Stylesheet<br />

Ausgabe der Mitglieder<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Ausgabe der Namen aller Mitglieder<br />

<br />

<br />

<br />

<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

Alternatives Kopieren:<br />

<br />

<br />

<br />

Kopieren der Attribute<br />

von Member<br />

40


Beispiel<br />

5/5: Stylesheet<br />

<br />

<br />

***<br />

<br />

***<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

Ausgabe der Namen<br />

der Gold-Mitglieder<br />

Ausgabe der<br />

Telefonnummern<br />

Ausgabe der<br />

Lieblingsfarben<br />

41


Inhalt<br />

Einführung<br />

Verarbeitungsmodell<br />

Stylesheets<br />

Template Rules<br />

Sprachumfang<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

42


Sprachumfang<br />

1/3: Überblick<br />

13 vordefinierte Top-Level-Elemente<br />

müssen als Subelemente von definiert<br />

werden<br />

können in irgendeiner Reihenfolge im Stylesheet auftreten,<br />

mit Ausnahme von und <br />

Elementen,<br />

die vor den anderen Elementen spezfiziert werden müssen<br />

Beispiele: <strong>xsl</strong>:<strong>template</strong>, <strong>xsl</strong>:output, <strong>xsl</strong>:include,<br />

<strong>xsl</strong>:import, <strong>xsl</strong>:param<br />

20 vordefinierte Instruktionselemente<br />

(zum Teil auch als Top-Level Elemente verwendbar)<br />

können im Inhalt von Elementen vorkommen, die<br />

Template Rules repräsentieren (z.B. innerhalb von<br />

<strong>xsl</strong>:<strong>template</strong> oder <strong>xsl</strong>:for-each)<br />

Beispiele für Instruktionselemente: <strong>xsl</strong>:apply:<strong>template</strong>,<br />

<strong>xsl</strong>:call-<strong>template</strong>, <strong>xsl</strong>:for-each, <strong>xsl</strong>:value-of<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

43


Sprachumfang<br />

2/3: Zusammenfassung der wichtigsten XSLT-<br />

Elemente<br />

Definition der Stylesheet-Struktur<br />

<br />

<br />

<br />

Definition des Ouput-Formats<br />

<br />

Definition und Aufrufkontrolle<br />

von Template Rules<br />

<br />

<br />

<br />

Kontrollstrukturen<br />

<br />

<br />

<br />

<br />

<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

Generierung von Output<br />

<br />

<br />

<br />

<br />

<br />

<br />

Kopieren von Source- nach<br />

Zieldokument<br />

<br />

<br />

Definition von Variablen und Parametern<br />

<br />

<br />

<br />

Sortierung und Numerierung<br />

<br />

<br />

44


Sprachumfang<br />

3/3: Anforderungen an XSLT 2.0<br />

Kompatibilität mit der XML-Standard-Familie<br />

Vereinfachung der Benutzung, z.B.<br />

Selektion eines Defaultnamensraums ohne explizitem Präfix<br />

Formatierungs-Instruktionen für Date Datentyp<br />

Vereinfachung des Zugriffs auf Schlüssel<br />

Effizienzsteigerung bei der Transformation großer Dokumente<br />

Vereinfachung von Gruppierungen<br />

© 2006 <strong>Business</strong> <strong>Informatics</strong> <strong>Group</strong>, TU Wien<br />

[http://www.w3.org/TR/2005/CR-<strong>xsl</strong>t20-20051103/]<br />

45

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!