XSLT Voraussetzungen, trivial

Slides:



Advertisements
Ähnliche Präsentationen
Polynomial Root Isolation
Advertisements

Verarbeiten und Präsentieren von
Zusammenfassung der Vorwoche
Anmerkungen zu XML Im September 2000 Entwicklung/Anspruch von XML
Seminar: XML für Fortgeschrittene Referent: Katrin Apel
XML - Aufbau und Struktur - mit Einsatz im B2B
Hands On – Einführung in XML
IMS Universität Stuttgart 1 Einführung in XML Hannah Kermes HS: Elektronische Wörterbücher Do,
FH-Hof Extensible Markup Language Richard Göbel. FH-Hof Extensible Markup Language XML XML ist universeller Ansatz für die Strukturierung von Zeichenketten.
Java: Objektorientierte Programmierung
Sortierverfahren Richard Göbel.
Baumstrukturen Richard Göbel.
DOM (Document Object Model)
Algorithmentheorie 04 –Hashing
XPATH XML Path Language. Xpath – XML Path Language IT Zertifikat - Daten und Metadatenstandards: XPath 2 Entwicklung des W3C Adressierungssprache für.
XML - Abfragesprache Xpath. Problemstellung Unsere XML-Datei steht und wir wollen alle 1. Titel aller vergangenen Sendungen automatisch aus den Playlists.
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
HTML - Eine erste Annäherung
Robotik mit LEGO Mindstorms
© 2002 Prof. Dr. G. Hellberg 1 XML-Seminar XML-Technologie: XML in Theorie und Praxis Prof. Dr. G. Hellberg XML-Technologie: XML in Theorie und Praxis.
Überblick XML: Extensible Markup Language Entwickelt, um Informationen bereitzustellen, zu speichern und zu übertragen Im Gegensatz zu HTML keine vordefinierten.
XML Standardisierungen und Abfragesprachen
Einführung XML XML Einführung Andreas Leicht.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
XPointer Die Xpointer beschreiben einen Ort oder Bereich innerhalb einer XML-Instanz. Die XPointer bauen auf der XML Path Language auf. Die XPointer ist.
Xlink / Xpointer - Framework
Batch-Programmierung Grundlagen
DVG Klassen und Objekte
© data2type 2005, 1 Publishing mit XML Einsatz von XSL für das multimediale, automatisierte Publishing.
XML – Grundlagen und Anwendungen Teil 6: Verarbeitung von XML-Dokumenten: XSLT Prof. Dr. Michael Löwe, FHDW Hannover.
Tobias Högel & Dennis Böck,
FH-Hof 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
1 Seminar 2004/2005 von Auszeichnungssprache XPath Ein Referat von Wei CAI
XML Path Language XPath
Bezirksregierung Detmold Hier könnte ein schmales Bild eingefügt werden Online-Beteiligungsverfahren zum Entwurf von Bewirtschaftungsplan und den Maßnahmenprogrammen.
- XML-Path Language (xPath) ist eine Empfehlung des W3C - es wurde entwickelt, um durch ein XML- Dokument zu navigieren - und ist ein großer Teil von.
XSLT.
Delphi II - OOP IFB Fortbildung
Wir bauen uns eine Webapplikation!
Betriebsanleitung DQI-WaWi2.
JavaScript.
XML - Konzepte XHTML XML Base XPath XInclude XLink XForms XPointer
Datenbanktechnologie Daniel Ebner SS Mai Ulrike Lohner.
Wird ganz am Anfang der HTML-Datei geschrieben Doctype html public bedeutet, dass man sich auf die Öffentlichkeit der html-dtd bezieht Html ist die meist.
Java für Fortgeschrittene
XPath Was ist XPath XPath ist eine Syntax für das Definieren der Teile eines XML-Dokumentes. XPath benutzt Pfade, um XML-Elemente zu definieren. XPath.
XSL und XSLT1 eXstensible Stylesheet Language und eXstensible Stylesheet Language Transformation.
Verarbeiten von XML-Daten
Wohlgeformtheit und Gültigkeit Grundlagen der Datenmodellierung Anke Jackschina.
Ausgabe vom Seite 1, XML Eine Einführung XML - Eine Einführung.
Auf Ihrem Schreibtisch liegt diese Anfrage, für die Sie Preise abgeben möchten. Diese sollen solide kalkuliert sein Bitte weiterblättern...
PHP Basic.
XML (Extensible Markup Language)
PHP Einführung Anbindung an XML Technologien Jürgen Mangler.
Saia Service an PCD's Datensicherung
PHP: Operatoren und Kontrollstrukturen
XSL in der Praxis Anwendungsbeispiele für die eXtensible Stylesheet Language Andreas Kühne XML One 2000.
1 Tagesüberblick 2 Lösung Hausaufgabe/Fragen Datei- ein- und ausgabe Schleifen Vergleiche Wahrheit.
Vortrag: Frames & Javascript.
© 2001 Sven Dammann1 Aufbau Integrierter Informationssysteme XML Bearbeitung und relationale Abbildung Sven Dammann Martin-Luther-Universität Halle-Wittenberg.
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Vom graphischen Differenzieren
Hauptseminar Web-Services und verteilte Datenbanken Thema XML, DTDs und XML-Schema XML, DTDs und XML-Schema - Stefan Kurz, 25. April 2003.
Struktur-Funktions-Modelle von Pflanzen - Sommersemester Winfried Kurth Universität Göttingen, Lehrstuhl Computergrafik und Ökologische Informatik.
IT-Zertifikat_Seminar: Metadatenstandards XSLT Eine Transformationssprache.
XSLT I Re-usable Content in 3D und Simulationssystemen Dozent: Prof. Manfred Thaller Referentin: Elisabeth Chang.
Aufgabe 1. Herausforderungen I Persistente Datenspeicherung: Möchte man jeden Morgen alle Käufe und Verkäufe neu zusammensuchen? Sehr große Datenmengen:
Reihenfolge der Operatoren
Lineare Optimierung Nakkiye Günay, Jennifer Kalywas & Corina Unger Jetzt erkläre ich euch die einzelnen Schritte und gebe Tipps!
 Präsentation transkript:

XSLT Voraussetzungen, trivial XSLT-Prozessor: wir verwenden XALAN für die Erarbeitung. XALAN kann über den NAL lokal am PC installiert werden. XALAN ist eine JAVA-Anwendung. XML-Datei, die bearbeitet werden soll (*.xml), wohlgeformt XSLT-Stylesheet, das die Transformationsanweisungen enthält. (*.xsl) Ein Stylesheet mit Formatierungsklassen für unsere wichtigsten Elemente und Standard-Text (*.css) [optional] Eine DTD, optional HTML XML XALAN XSL XML CSS TEXT DTD XLST

XSLT: Namensraum und Version als Angabe im Stylesheet XSLT: Definition XSLT = Extensible Stylesheet Language Transformations" "XSLT ist eine funktionale Programmiersprache. Ihr Zweck ist die Transformation eines XML-Dokumentes in ein anderes Textdokument." Dies kann Text, HTML oder XML sein. XSLT: Namensraum und Version als Angabe im Stylesheet <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> XLST

Grundlegender Aufbau eines Stylesheets Ein Stylesheet ist selbst ein gültiges XML-Dokument. Es besitzt folgenden Grundaufbau: <?xml version = "1.0" ?> <xsl:stylesheet version = "1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- TEMPLATES, Verarbeitungsanweisungen --> </xsl:stylesheet> Die Tags in Stylesheets werden mit Namensraum-Angaben geschrieben. Dieser wird im Wurzelelement deklariert. Beispiel: <xsl:template match = "/"> <xsl:apply-templates /> </xsl:template> XLST

Aufgabenstellung 1/1: Hallo Welt! Wir beginnen mit einem einfachen, klassischen Beispiel: Unsere XML-DATEI: <?xml version="1.0"?> <gruss> Hallo, Welt! </gruss> XLST

Aufgabenstellung 1/2: Hallo Welt ! XSLT-Stylesheet: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/> <xsl:template match="/"> <html> <body> <xsl:apply-templates select="gruss" /> </body> </html> </xsl:template> <xsl:template match="gruss"> <h1> <xsl:value-of select="."/> </h1> </xsl:stylesheet> XLST

Starten des Transformationsvorganges In der DOS-Box: java org.apache.xalan.xslt.Process -in gruss.xml -xsl gruss.xsl -out gruss.html ... Ergibt die (aus dem Transformationsprozess entstandene) Datei gruss.html Zur Vereinfachung des Aufrufs kann man sich ein DOS-Skript (Batch-Datei) bauen (go.bat) XLST

Über die Ausgabe-Möglichkeiten <xsl:output method="html" doctype-public ="-//W3C//DTD HTML 4.01 Transitional//EN" /> HTML xsl:output method = "text" /> TEXT Programmcode VRML-Code ... <xsl:output method = "xml" indent = "yes" /> XML PDF SVG ... XLST

Bausteine des Stylesheets Es gibt 37 XSLT-Elemente, davon 2 Hauptelemente, 12 Elemente der obersten Ebene sowie 23 Anweisungselemente. Bestimmte Elemente verwenden als Attribut Xpath-Ausdrücke. Hauptelement <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/> <xsl:template match="gruss"> <h1> <xsl:value-of select="."/> </h1> </xsl:template> Element oberste Ebene Xpath-Ausdruck Text, der in den Ausgabestrom geschrieben wird Anweisungselement XLST

Analyse des Beispiels (1) 1. Das XSLT-Stylesheet wird geparst und in eine Baumstruktur überführt. 2. Das Gleiche passiert mit dem XML-Dokument. 3. Der Prozessor startet am Wurzelknoten des XML-Dokuments. Dieser ist nicht das oberste Element, sondern die "Wurzel des Dokuments" (inkl. aller Verarbeitungsanweisungen etc.). Der Wurzelknoten ist der Startkontext. Startkontext WURZEL Verarbeitungsanweisungen, wie <?xml-stylesheet .../> Kommentare <!-- --> Wurzelelement <gruss .../> Weitere Elemente XLST

Analyse des Beispiels (2) 4. Prozessor: Muss ich irgendwelche Knoten verarbeiten? Ja, es gibt weitere Knoten im Dokument. Und: Es gibt ein "Template" (Vorlage, Schablone). <xsl:template match = "/"> Kontext = / 5. Was soll ich tun? <xsl:apply-templates select ="gruss" /> "Wähle die Kind-Knoten "gruss" und wende vorhandene Templates auf sie an." Kontext = /gruss WURZEL Andere Knoten auf der ersten Ebene ... Wurzelelement <gruss .../> XLST

Analyse des Beispiels (3) 6. Gibts ein spezielles Template für "gruss"? Ja, und zwar: <xsl:template match = "gruss"> 7. Was muss ich jetzt tun? Schreibe in den Ausgabestrom: ==> <h1> Dann nimm den aktuellen Knoten (und ggf. seine Kinderknoten) und schreibe deren "Inhalt": ==> <xsl:value-of select="."/> ==> </h1> 8. Würde es weitere Knoten gruss geben, würde jetzt der gruss [2] dran kommen. Dann kehrt der Prozessor zum aufrufenden Template zurück. XLST

Spannende, wundersame Tests / gruss2 Legen Sie ein neues Stylesheet mit Namen gruss2.xls an. Kopieren Sie die Daten vom alten Template in das neue und löschen Sie daraus alle Templates! Legen Sie auch eine neue XML-Datei gruss2.xml und kopieren Sie dorthin die Inhalte von gruss1.xml. Checken Sie die "Ausgabe" dieses Templates. Was tut es? Was ist daraus zu schließen? Legen Sie nun ein "leeres" Template für den Wurzelknoten an. Prüfen Sie die Ausgabe und interpretieren Sie sie. XLST

Aufgabenstellung 2/1: Mehr Grüße im Manifest! / gruss2 Ändern Sie Ihren XML-File in gruss2.xml, senden Sie mehrere Grüße an die Welt. Binden Sie auch den Aufruf des Stylesheets ein. Fügen Sie in ein wer-Element einen Kommentar ein. Verwenden Sie dazu folgende Struktur: <?xml-stylesheet type="text/xsl" href="gruss1.xsl" ?> <!–- Einbindung des Stylesheets mit einer Verarbeitungsanweisung und "Pseudoattributen" --> <manifest> <gruss> <ansprache> <wer sex="f|m"> <!-- --> <wem> <creator> XLST

Aufgabenstellung 2/2: XSLT-Stylesheet / gruss2 Schreiben Sie jetzt ein Stylesheet (gruss2.xsl) für die Transformation des neuen Texts. 1. Definieren Sie ein Template für den Wurzelknoten <xsl:template match="/"> und bauen Sie dort das Skelett der HTML-Seite. Im <body>-Element setzen Sie dann Schritt 2. 2. Teilen Sie dem Prozessor mit, dass er die Menge aller gruss-Knoten (und der Kindknoten) bilden und mit der vorhandenen Vorlage ausgeben soll. "<xsl:apply-templates select="manifest/gruss" /> 3. Nun sollten Sie auch noch eine Vorlage für diese gruss-Knoten-Menge erstellen. Wenn Sie damit schon fertig sind gehen Sie auf die nächste Seite. XLST

Aufgabenstellung 2/2: XSLT-Stylesheet 4. Erstellen Sie am Kopf der Seite ein Verzeichnis der "Rufenden". 5. Erstellen Sie ein CSS-Stylesheet und bauen sie die Klassen in die Ausgabe ein. Hier ein Vorschlag, die das geht: (a) Sie müssen einen HTML-Header in die Ausgabe schreiben und dort auf das CCS-File verweisen: <link rel="STYLESHEET" type="text/css" href="gruss.css" media="all" /> (b) Bei der Ausgabe des Elements geben Sie an: <div> <xsl:attribute name="class">liste</xsl:attribute> [...Text...] </div> XLST

XPath: Definition XPath ist eine Nicht-XML-Sprache, die dazu dient, bestimmte Teile eines XML-Dokuments zu identifizieren. XPath sieht das Dokument (*.xml) als einen Baum von Knoten an. Für jedes Dokument gibt es genau einen Wurzelknoten. /manifest/gruss/wer lokalisiert die wer-Knoten / den Wurzelknoten selbst XSLT benötigt XPath-Ausdrücke in bestimmten Attributen, um Knoten oder andere Teile des Dokuments auszuwählen, die verarbeitet werden sollen. <xsl:apply-templates select="/manifest/gruss" /> XLST

XPath: Knoten (1) XPath kennt 7 Arten von Knoten im XML-Dokument: Wurzelknoten: Der Knoten, der das gesamte Dokument enthält. Adressierung mit / Elementknoten: Enthält das adressierte Element und seine Kinder (Element-, Text-, Kommentar-, Verarbeitungsanweisungsknoten) Attributknoten: Die Elementknoten, zu denen die Attribute gehören, sind deren Elternknoten. Jedoch sind Attributknoten sind keine Kinder ihres Elternknoten! Nach Attributen müssen Sie speziell fragen. XLST

XPath: Knoten (2) Textknoten: enthalten den Text aus einem Element. Entity- und Zeichenreferenzen sowie CDATA-Abschnitte werden aufgelöst. Kommentarknoten: Text der Kommentare Verarbeitungsknoten (PI-Knoten) Namensraum-Knoten Kontextknoten ist die Bezeichnung für den gerade gewählten, "aktuellen" Knoten. Xpath-Ausdrücke werden von diesem Punkt aus berechnet. Kontextknoten beinhalten noch weitere Informationen (Position, Größe etc.) XLST

XPath: Lokalisierungspfade Ein Lokalisierungspfad bezeichnet eine Menge von Knoten in einem gegebenen Dokument. <xsl:template match = "/" /> wählt den Wurzelknoten (und seine Kinder!) aus. <xsl:template match = "gruss" /> wählt den Elementknoten gruss (und seine Kinder) relativ zum Kontextknoten aus. gruss muss ein Kindknoten zum Kontextknoten sein, in dem sich der XSLT-Prozess gerade befindet. Wieviele Knoten der XML-Datei werden damit ausgewählt? <xsl:value-of select = "." /> wählt den gerade aktivierten Kontextknoten (und seine Kinder). Bitte beachten Sie, dass XPath-Ausdrücke immer Knotenmengen zurückgeben! Und dass ein Knoten mehr ist als nur sein Text, aber noch keine Attributwerte beinhaltet. XLST

XPath: Lokalisierungspfade: relativ Ein relativer XPath-Adruck geht in der Adressierung immer vom aktuellen Kontextknoten aus. Beispiele: <xsl:template match = "gruss" /> setzt voraus, dass gruss ein Kind des Kontextknotens (z.B. manifest) ist. <xsl:value-of select = "." /> wählt den gerade aktivierten Kontextknoten (und seine Kinder). <xsl:template match = "manifest/gruss/wer" />. Damit diese Adressierung keine leere Knotenmenge zurückgibt, muss der Kontextknoten das Wurzelelement sein. <xsl:value-of select = ".." /> wählt den Elternknoten des Kontextknoten. Ist der Kontextknoten wer so wird gruss gewählt. XLST

XPath: Lokalisierungspfade: absolut Ein absoluter XPath-Ausdruck beginnt immer an der Dokumentwurzel, d.h. mit einem /. Der Kontextkonten wird nicht berücksichtigt. <xsl:template match = "/" /> wählt das Wurzelelement. <xsl:template match = "/manifest/gruss/wer" /> adressiert das Element wer. XLST

XPath: Lokalisierungsschritte für Attribute Auch Attribute sind ein Teil von XPath. Allerdings sind sie keine Kinder eines Elementknotens und werden daher auch nicht automatisch selektiert. Sie müssen vielmehr die Attribute explizit ansprechen. <xsl:value-of select = "@sex" /> wählt das Attribut "sex" des aktuellen Kontextknotens und gibt dessen Wert aus. <xsl: value-of select = "/manifest/gruss/wer/@sex" /> adressiert das Attribut absolut. XLST

XPath: Nur den Text eines Knotens ausgeben Wie Sie wissen, werden bei der Selektion eines Elementknotens alle untergeordneten Kinderknoten (auch jene, die keine Elementknoten, sondern etwa auch Kommentarknoten etc. sind) mit ausgewählt. Wollen Sie nur den Textknoten eines Elements ausgeben, verwenden Sie den "Knotentest" text() <xsl: value-of select = "/manifest/gruss/text()" /> gibt nur den Text des gruss-Elements aus. XLST

XPath: Wildcards, mehrere Treffer Wildcards sprechen unterschiedliche Element- und Knotentypen gleichzeitig an. * wählt alle Elementknoten aus (nicht aber: Attribute, Textknoten, Kommentare, PIs). Z.B. wählt dc:* alle Elementknoten des Namensraums dc aus. @* wählt alle Attributknoten. node() wählt alle Knoten im aktuellen Kontext. // wählt unter allen Abkömmlingen des Kontextknotens und dem Kontextknoten: z.B. wählt //wer alle wer-Elemente. | undiert XPath-Ausdrücke und liefert die Vereinigungsmenge beider Ausdrücke. XLST

XPath: Kommentare und Text auswählen comment() Dieser Knotentest liefert den Inhalt des Kommentars im jeweiligen Kontext. text() Liefert den Textinhalt eines Kontextknotens (nicht aber die der Kindelemente) XLST

Aufgabengabenstellung 3 / gruss3 Kopieren Sie den Inhalt von gruss1.xml -> gruss3.xml Erstellen Sie ein neues Stylesheet gruss3.xsl Geben Sie eine Liste aller im Dokument vorhandenen Attribute aus. Geben Sie die Kommentare aus. Geben Sie alle Elemente ohne Templates aus. Geben den Inhalt der Elemente /manifest/gruss/wer aus. Immer denken: Ich super und kann's! XLST

XPath: Prädikate, Funktionen, Zahlen Manchmal ist es notwendig, die Treffermenge der gefundenen Knoten weiter zu filtern. Dies kann durch "Prädikate" geschehen. Prädikate beinhalten eine Bedingung bzw. einen Ausdruck, der wahr oder falsch ist (Boolscher Wert). Ist der Ausdruck für einen Knoten falsch, wird er aus der Liste gelöscht. Beispiele: manifest/gruss/wer[@sex='m'] manifest/gruss[wer = "Jaques Brel"] manifest/gruss[1] Im Rahmen von Prädikaten werden häufig auch Funktionen und Zahlenoperationen verwendet. XLST

XPath: Funktionen Funktionen arbeiten mit Knotenmengen oder geben Informationen über Knotenmengen zurück. Funktionen liefern Daten folgender Typen zurück: Boolscher Wert, Zahl, Knotenmenge, String. Beispiele für Funktionen: last() count() position() name() string() starts-with() contains(), substring() subsstring-before(), substring-after() string-length() not() XLST

XPath: Mathematische Operatoren In XPath-Ausdrücken kann auch gerechnet werden: + Addition - Subtraktion gruss[last()-1] => vorletzter Knoten * Multiplikation div Division 6,5 div 3 => 2 mod Restbildung 6,5 mod 1,5 => 0,5 starts-with() contains(), substring() subsstring-before(), substring-after() string-length() not() XLST

XSLT: Verzweigungselemente IF-Element <xsl:if test = "count(//wer) = 5"> [...] </xsl:if> CHOOSE-Element <xsl:choose> <xsl:when test = [Bedingung]> [...Ausgabe...] </xsl:when> [...weitere Bedingungen...] <xsl:otherwise>[...] </xsl:otherwise> </xsl:choose> XLST