eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet...
Transcript of eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet...
![Page 1: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/1.jpg)
XSL
eXtensible Stylesheet Language
Die Stylesheet Sprache für XML
![Page 2: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/2.jpg)
![Page 3: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/3.jpg)
XSL ist ein World Wide Web Standard
• XSL ist ein vom World Wide Web Consortium empfohlener Standard
• W3C Recommendation von XSLT2.0 und XPath2.0Januar 2007
• W3C Proposed Recommendation der gesamten XSL, inklusive XSL Formatting Objects
August 2001
![Page 4: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/4.jpg)
CSS �� XSL
W3C hat mit der Festlegung des XSL Standards begonnen, bevor derjenige von CSS festgelegt war.
Wozu gibt es zwei Style Sheet Sprachen?
CSS XSL
Verwendung mit HTML? ja neinVerwendung mit XML? ja jaTransformations-Sprache? nein jaSyntax CSS XML
![Page 5: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/5.jpg)
CSS - Style Sheet für HTML-Files
• HTML benutzt vordefinierte (und darum allgemein bekannte) Tags:
<h1> Titel-Element<p> neuer Abschnitt,
...
• Im CSS wird definiert, wie die verschiedenen Elemente darzustellen sind (Fonts, Farben, ...)
h1 { font-family: sans-serif;
font-size: 48pt }
p { font-size: 8pt;
color: blue }
![Page 6: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/6.jpg)
XSL – Style Sheet für XML
• XML benutzt keine vordefinierten Tags: <table> kann eine HTML Tabelle oder auch ein Möbelstück sein.
• Im XML-Dokument steht nicht, wie die Daten dargestellt werden sollen.
• Es braucht einen Mechanismus, welcher beschreibt, wie die Daten eines XML-Dokumentes dargestellt werden sollen.
XSL bietet diesen Mechanismus
![Page 7: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/7.jpg)
XSL erzeugt beliebige Formate
XML(Daten)
C++
WordXML
XML
PostScript(XSL-FO)
Java
TeXPDF
(XSL-FO)
(X)HTML
![Page 8: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/8.jpg)
XSL: Drei Teile / Drei Sprachen
Drei Teile
• eine Methode, um XML Dokumente zu transformieren,
• eine Methode, um XML Teile und Patterns zu adressieren
• eine Methode, um XML Dokumente zu formatieren
Drei Sprachen
• XSLT, die Sprache um XML umzuwandeln• XPath, die Sprache zum Adressieren und
Selektieren von XML-Knoten• XSL Formatting Objects (XSL FO), die Sprache
um formatierte Ausgabe zu beschreiben.
![Page 9: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/9.jpg)
XSLT
XSL Transformations
![Page 10: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/10.jpg)
XSL Transformations
• XSLT ist der wichtigste Teil des XSL Standard. XSLT wird benutzt, um XML Dokumente in andere (XML, HTML, ...) Dokumente umzuformen.
• XSLT kann auch neue (nicht im XML-Dokument enthaltene) Daten-Elemente in das Ausgabe-Dokument einfügen (zum Beispiel Formatier-Befehle), Elemente umsortieren oder weglassen.
• XSLT kann die XML-Knoten (zum Beispiel auch abhängig vom Wert des Elementes) verschieden behandeln (formatieren).
![Page 11: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/11.jpg)
Wie funktioniert XSLT?
XSL
(Templates)
XML
(Daten)
AusgabeDokument
![Page 12: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/12.jpg)
Wie funktioniert XSLT?
• XSLT benutzt im Transformations-Prozess die Sprache XPath, um die zu einem Template passenden Knoten herauszufiltern.
• Sobald im XML-Dokument ein passender Knoten (match) gefunden wird, formt XSLT diesen Knoten mit Hilfe der angegebenen Regeln (Template) um, und schreibt das Resultat ins Ausgabe-Dokument.
• Alle Text-Knoten des XML-Dokumentes, welche nicht zu einer Regel (einem Template) passen, werden unmodifiziert in das Ausgabe-Dokument kopiert.
![Page 13: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/13.jpg)
Das Beispiel Dokument: People.xml
<?xml version="1.0"?><people>
<person><name>
<firstName>Alan</firstName><lastName>Turing</lastName>
</name><born date="1912" addressRef="gbl"/><died date="1954" addressRef="gbc"/><profession>computer scientist</profession><profession>mathematician</profession><profession>cryptographer</profession><hobby>philosophy</hobby><hobby>biology</hobby>
</person>...
![Page 14: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/14.jpg)
XML Dokument mit Stylesheet Verbinden
<?xml version="1.0"?><?xml-stylesheet type="text/xsl"
href="http://www.abc.ch/mystyle.xsl"?><people>
<person><name>
<firstName >Alan</firstName><lastName>Turing</lastName>
</name>...
![Page 15: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/15.jpg)
xsl:template
XSL benutzt Templates (Regeln), um zu bestimmen, wie die XML-Knoten umgeformt werden sollen.
Ein "match"-Attribut wird benutzt, um ein Knoten einem Template zuzuordnen.
<xsl:template match= Knoten >
Action
</xsl:template>
![Page 16: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/16.jpg)
XSL: "hello world"
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:template match="people">hello world
</xsl:template>
</xsl:stylesheet>
hello world
![Page 17: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/17.jpg)
XSL: "hello world"
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="people">
hello world
</xsl:template>
<xsl:template match="person">
I am here
</xsl:template>
</xsl:stylesheet>
hello world
![Page 18: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/18.jpg)
XSL: "hello world"
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="person">
I am here
</xsl:template>
</xsl:stylesheet>
I am here
I am here
I am here
I am here
Great Britain London Germany UlmUSA Queens, NY Switzerland BaselGreat Britain Cambridge USA Princeton
![Page 19: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/19.jpg)
Die wichtigsten xsl Befehle
<xsl: ... >
![Page 20: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/20.jpg)
xsl:apply-templates
Der Befehl xsl:apply-templates sucht im XML den angegebene Pfad, eine Regel dazu und führt diese aus.
Welches Kind als nächstes behandelt werden soll, kann explizit ausgewählt werden durch ein select-Attribut <xsl:apply-templates select="person"/>
Der Befehl<xsl:apply-templates/>
sucht alle Kind (-Elemente) des aktuellen Knotens und führt deren Templates aus.
![Page 21: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/21.jpg)
xsl:apply-templates
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:template match="people">
<xsl:apply-templates select="person"/>
</xsl:template>
<xsl:template match="person">
I am here
</xsl:template>
</xsl:stylesheet>
I am hereI am hereI am hereI am here
![Page 22: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/22.jpg)
xsl:call-template
<?xml version="1.0" encoding="UTF-8"?><xsl:stylesheet version="1.0“ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="people">
<xsl:call-template name="templ1"/>
</xsl:template>
<xsl:template name=" templ1"><xsl:apply-templates select="person"/>
</xsl:template>
<xsl:template match="person">I am here</xsl:template>
</xsl:stylesheet> I am hereI am hereI am hereI am here
![Page 23: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/23.jpg)
xsl:for-each
Das gleiche Resultat erhalten wir durch
I am hereI am hereI am hereI am here
<xsl:template match="people">
<xsl:for-each select="person">
I am here
</xsl:for-each>
</xsl:template>
![Page 24: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/24.jpg)
xsl:value-of
Das XSL <xsl:value-of> Element kann benutzt werden, um den Wert bestimmter Knoten auszugeben.
Beispiele:
<xsl:value-of select="lastName"/><xsl:value-of select="firstName"/><xsl:value-of select="hobby" separator=", " />
![Page 25: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/25.jpg)
<xsl:template match="people"><html>
<head><title> Famous Scientists</title></head><body><h4> Famous Scientists</h4>
<xsl:apply-templates select="person"/></body>
</html></xsl:template>
<xsl:template match="person"><p/> <xsl:apply-templates select="name"/>
</xsl:template>
<xsl:template match="name"><xsl:value-of select="lastName"/><xsl:text> </xsl:text><xsl:value-of select="firstName"/>
</xsl:template>
![Page 26: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/26.jpg)
Adressieren von Attributen
<xsl:template match="person"><b><xsl:apply-templates select="name"/></b><xsl:text> </xsl:text><small>
( <xsl:value-of select="born/@date"/> -<xsl: value-of select="died/@date"/>)
</small><p/>
</xsl:template>
![Page 27: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/27.jpg)
Es ist möglich, für dieselben Knoten mehrere, verschiedene Templates zu definieren, die dann kontextabhängig angewandt werden.
Der Aufruf des Templates sowie das Template selber erhalten ein mode Attribute.
Damit können zum Beispiel Inhaltsverzeichnisse, Querverweise oder verschiedene Darstellungen der gleichen Datenelemente erzeugt werden.
Templates mit Modes
![Page 28: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/28.jpg)
<xsl:template match="people"><html> <body>
<h4>Table of Contents</h4><ul><xsl:apply-templates select="person" mode="toc"/></ul><xsl:apply-templates select="person"/>
</body></html></xsl:template>
<xsl:template match="person" mode="toc"><li/><xsl:value-of select="name/lastName"/>
</xsl:template>
<xsl:template match="person"><p>
<b><xsl:apply-templates select="name"/></b><small> (<xsl:value-of select="born/@date"/> -<xsl:value-of select="died/@date"/>)</small>
</p></xsl:template>
![Page 29: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/29.jpg)
Templates mit Modes
Der erste Durchgang wird durch<xsl:template match="person" mode="toc">
gebildet, der zweite durch<xsl:template match="person">
![Page 30: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/30.jpg)
xsl:if
Mit Hilfe einer if-Anweisung können Knoten unterschiedlich behandelt werden
<xsl:if test="name/lastName = 'Euler' ">
<xsl:if test="born/@date > 1900 ">
<xsl:template match="person">
<xsl:if test="born/@date > 1900 ">
<xsl:apply-templates select="name"/>
</xsl:if>
</xsl:template>
![Page 31: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/31.jpg)
XSL Test Operation
Die Bedingungen können mit and oder or verbunden werden.
<xsl:template match="person">
<xsl:if test="born/@date > 1850 andname/firstName != 'Alan' ">
<xsl:apply-templates select="name"/>
</xsl:if>
</xsl:template>
Richard Feynman
Albert Einstein
![Page 32: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/32.jpg)
xsl:choose
Es gibt in XSL kein if-else Konstrukt. Anstatt eines if-else gibt es ein xsl:choose. Verzweigungen werden aus xsl:when und xsl:otherwise zusammengesetzt.
<xsl:choose><xsl:when test="...">
...</xsl:when><xsl:otherwise>
...</xsl:otherwise>
</xsl:choose>
![Page 33: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/33.jpg)
<xsl:template match="person"><xsl:choose>
<xsl:when test="profession='mathematician' "><font color="blue">
<xsl:apply-templates select="hobby"/></font>
</xsl:when><xsl:otherwise>
<xsl:apply-templates select="hobby"/></xsl:otherwise>
</xsl:choose></xsl:template>
XSL Auswahl Operation
![Page 34: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/34.jpg)
xsl:sort
Um eine Sequenz von Knoten während der Transformation (nach einem gewählten Schlüssel) zu sortieren, gibt es das sort Element:
<xsl:sort select="name/lastName"/>
xsl:sort kann entweder innerhalb eines <xsl:apply-templates> oder eines <xsl:for-each> Elements vorkommen.
Das select-Attribut gibt an, nach welchem Schlüssel sortiert werden soll.
![Page 35: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/35.jpg)
<xsl:apply-templates select="person"><xsl:sort select="name/lastName" order="ascending"/>
</xsl:apply-templates>
XSL Sortier Operation
<xsl:sort> als Kind von <xsl:apply-templates>:
![Page 36: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/36.jpg)
xsl:variable
In XSL können auch Konstanten definiert werden:
<xsl:variable name="ntext">value_of_variable
</xsl:variable>
Der Wert der Konstanten ntext kann mit $ntext gelesen werden:
<xsl:value-of select="$ntext"/>
Der Wert von ntext kann nicht verändert werden!
![Page 37: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/37.jpg)
xsl:variable
Berechnen einer gewichteten Summe
<xsl:variable name="tmp"><tmpPrice>
<xsl:for-each select="book"><item>
<xsl:value-of select="price * quantity"/></item>
</xsl:for-each></tmpPrice>
</xsl:variable><xsl:value-of select="sum($tmp/tmpPrice/item)"/>
![Page 38: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/38.jpg)
xsl:param
Beim Aufruf von Templates können Parameter übergeben werden
<xsl:apply-templates select="title"><xsl:with-param name="p1">
<xsl:value-of select="irgendein Wert"/></xsl:with-param>
</xsl:apply-templates>
Verwendung im Template:<xsl:template match="title">
<xsl:param name="p1"/>... verwenden von $p1 ...
</xsl:template>
![Page 39: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/39.jpg)
xsl:for-each-group
<xsl:template match="people"><xsl:for-each-group select="address"
group-by="country"><xsl:value-of select="country"/>:<xsl:value-of select="current-group()/city"
separator=", "/><br/></xsl:for-each-group>
</xsl:template>
![Page 40: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/40.jpg)
xsl:include / xsl:import
<xsl:import href= "URI" >und
<xsl:include href= "URI" > fügen das unter der angegebenen Adresse gefundene
Stylesheet ein.
<xsl:include href="ss.xsl"/>
<xsl:include href="http://www.sowieso.ch/ss.xsl"/>
![Page 41: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/41.jpg)
Default Template Regeln
Was geschieht mit den Knoten, wenn es im Stylesheet dafür kein Template
gibt?
![Page 42: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/42.jpg)
Text- und Attribut-Knoten
Von Text- und Attribut-Knoten wird der Wert des Textes (des Attributes) in das Ausgabe-Dokument kopiert.
Als XSL-Template sieht dies wie folgt aus:
<xsl:template match= " text() | @* "><xsl:value-of select="."/>
</xsl:template>
![Page 43: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/43.jpg)
Root- und Element-Knoten
Vom Root- und von allen Element-Knoten werden per Default die Template-Regeln aller Kindknoten aufgerufen.
Als XSL-Template sieht dies wie folgt aus:
<xsl:template match= " / | * "><xsl:apply-templates/>
</xsl:template>
![Page 44: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/44.jpg)
Kommentare / Verarbeitungsanweisung
Kommentare und Processing Instructions werden per Default ignoriert.
Als XSL-Template sieht dies wie folgt aus:
<xsl:template
match= "processing-instructions() | comment()" />
Es gibt keine Adressierung (keinen XPath Ausdruck) für Namespace-Knoten.
![Page 45: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/45.jpg)
Template Drivenvs.
Data Driven
![Page 46: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/46.jpg)
Schwach strukturierte XML Dokumente
Reports, Briefe, Webseiten, ....
<?xml version='1.0'?>
<book-review>
<title>This Book</title> by <author>This
Author</author>, by <publisher>The
Publisher</publisher> on <date>date</date>,
indeed a good book. However, the book titled
<title>Book</title> by the same publisher is
very bad. The reviewer ...
</book-review>
![Page 47: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/47.jpg)
Data-Driven Template
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html><body>
<xsl:apply-templates/>
</body></html>
</xsl:template>
<xsl:template match="book-review">
<p> <xsl:apply-templates/> </p>
</xsl:template>
. . .
![Page 48: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/48.jpg)
![Page 49: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/49.jpg)
XPath
www.w3.org/TR/xpath
![Page 50: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/50.jpg)
Adressierung
Die Templates im Stylesheet können nur dann richtig (an der richtigen Stelle) angewandt werden, wenn die Adressierung (match) korrekt ist.
XSL muss beliebige Knoten des XML-Dokumentes adressieren (identifizieren) können.
Dafür benutzt XSL die Sprache XPath.
![Page 51: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/51.jpg)
XPath Beispiele
name alle <name> Kinder des aktuellen Knotens
name/firstName alle <firstName> Kinder aller <name> Kinder des aktuellen Knotens
/ der Root Knoten des Dokumentes
. der aktuelle Knoten
.. der Vorgänger (Parent) des aktuellen Knotens
//name alle <name> Elemente des Dokumentes
.//name alle <name> Nachfolger (direkt und indirekt) des aktuellen Knotens
![Page 52: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/52.jpg)
XPath Syntax
• Die XPath-Syntax sieht ähnlich aus wie die übliche Filesystem-Adressierung.
• Das Pattern matching ist abhängig vom Kontext: Ein XPath Ausdruck kann verschiedene Knoten bezeichnen, abhängig von der Stelle im Dokument, in welchem er steht.
• XPath findet alle passenden Knoten. Sollen nur gewisse Knoten aus dem Pfad selektiert werden, kann der Pfad (durch Prädikate) eingeschränkt werden.
![Page 53: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/53.jpg)
XPath Syntax
• Ein XPath ist absolut, falls er mit einem Slash (" / ") anfängt: /person
• Ein Pfad ist zusammengesetzt auf einer Reihe von Schritten, welche durch "/" getrennt sind:
people/person/born
• Attribute werden durch "@" markiert.born/@addressRef
• Pfade können kombiniert werden durch "|" (Auswahl)
name/firstName | profession | hobby
![Page 54: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/54.jpg)
XPath: Wildcards
Pfade können Wildcards enthalten: *, @* und node().
* selektiert alle Elemente@* selektiert alle Attributenode() selektiert alle Knoten
Beispiele//* alle Elemente im Dokument/* alle Kinder von Rootstr/*/title alle <title> Enkel von str//*/@id alle Attribute mit Namen id
![Page 55: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/55.jpg)
XPath Prädikate
XPath kann auch filtern. Dazu wird im select-Attribut zum Pfad ein Prädikat mit angegeben
<xsl:apply-templatesselect="person [name/firstName != 'Alan' ]"/>
Mögliche Filter-Operatoren sind:= gleich
!= ungleich< kleiner als> grösser als
![Page 56: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/56.jpg)
XPath Beispiele: Prädikate
born[ @addressRef = 'gbc' ]alle <born> Kinder, welche ein addressRef Attribut
mit Wert "gbc" haben
died[ @addressRef ] alle <died> Kinder, welche ein addressRef Attribut
haben
person [born/@date > 1900 ]/namealle Namen von Personen, welche später als 1900
geboren sind
name[last()]das letzte <name> Kind des aktuellen Knotens
![Page 57: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/57.jpg)
XPath Schritte
Jeder Schritt im Pfad ist ein Bezeichner, ein Wildcard oder ein Prädikat.
<xsl:template match="person"><xsl:apply-templates select="*[@date]"/>
</xsl:template>
<xsl:template match="born | died"><xsl:value-of select="../* /lastName"/>, <xsl:value-of select="name(.) "/>: <xsl:value-of select="@date"/><xsl:variable name="var" select="@addressRef"/><xsl:apply-templates select="//*[@id=$var]/city"/><br/>
</xsl:template>
![Page 58: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/58.jpg)
Weitere Beispiele
//name/*alle Kinder von name
//name/*[@*]alle Kinder von name, die ein Attribut haben
//name/*[*]alle Kinder von name, welche keine Blätter sind
//*[@*]alle Elemente, die ein Attribut haben
//person[*/@id]/name
alle name Kinder von person Elementen, die ein Kind mit einem id Attribut haben
//*[@*]/*alle Kinder von Elementen, die ein Attribut haben
![Page 59: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/59.jpg)
XPath Adressierung-Achsen
Es gibt für viele XPath-Adressen zwei Schreibweisen: die ausführliche und die abgekürzte. Bisher haben wir immer die abgekürzte Schreibweise benutzt.
Abkürzung für:attribute @child (default)parent ..self .descendant-or-self //
![Page 60: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/60.jpg)
self
parent
ancestor
preceding
descendant
following
child
descendant-or-self
Adressierungs-Achsen
following-sibling
preceding-sibling
ancestor-or-self
![Page 61: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/61.jpg)
XPath: child, self, parent
Child ist die Default-Richtung im Pfad. child:: kann immer weggelassen werden:
Statt self::* wird üblicherweise die abgekürzte Schreibweise ( . ) benutzt:
parent::* findet den (direkten) Vorgänger eines Knotens und kann abgekürzt werden durch ..
/child::people/child::person/child::profession
= /people/person/profession
![Page 62: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/62.jpg)
XPath Funktionen
![Page 63: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/63.jpg)
Die wichtigsten XPath Funktionen
Konvertierungsfunktionen
boolean( obj )number( obj )string( obj )
Negierungboolean not (value)
![Page 64: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/64.jpg)
String Funktionen
concat(), substring(), contains(), Konkatenation, Substring bilden, Substring-Test
number string-length(string)
boolean matches (string, pattern)true, falls der gegebene String das Pattern erfüllt.
string replace (s1, pattern, s2)im String s1 werden alle Teile, welche das Pattern erfüllen, durch s2 ersetzt
![Page 65: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/65.jpg)
Numerische Funktionen
abs(), avg(), max(), min() Absolutwert, Durchschnitt, Maximum, Minimum
round(), floor(), ceiling()Runden, Abrunden, Aufrunden
Grundoperationen+, -, *, mod, div
![Page 66: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/66.jpg)
Numerische Funktionen (2)
<xsl:value-of select="sum(//number)"/>die Summe der Werte, welche in allen <number>-Knoten vorkommen.
<xsl:value-of select="sum(//book/quantity)"/>
berechnet die Anzahl vorhandene Bücher
format-number( -50.883, '#.0')ergibt den Wert -50.9
![Page 67: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/67.jpg)
Funktionen auf Sequenzen
person[3], person[last()]filtert die dritte (letzte) Person heraus
position() gibt die Position des Knotens im Kontext zurück.
count()zählt die Anzahl Knoten der Knoten-Menge set.
count(//person) ergibt 4, count(//address) ergibt 6
![Page 68: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/68.jpg)
Funktionen auf Sequenzen (2)
boolean empty(items)
ergibt true, falls items eine leere sequenz
remove(), insert-before(), reverse(),
subsequence(), …
Funktionen auf Sequenzen zum Löschen, Einfügen, Umdrehen und Zerteilen der Sequenzen.
![Page 69: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/69.jpg)
Datum und Zeit
current-date(), current-time()aktuelle Zeit, aktuelles Datum
format-date(date, pictureString) …
Beispiel:format-date(current-date(), ' [D]-[M]-[Y] ')
![Page 70: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/70.jpg)
For-Ausdrücke
for $x in E1 return result
evaluiert result für jedes Element der Sequenz E1
sum(for $x in book return $x/price * $x/quantity)
summiert die price * quantity Werte aller order Elemente
![Page 71: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/71.jpg)
Einlesen von XML-Dokumenten
Die Funktion
document($srcval )lädt das an der Adresse (URI) srcval gefundene Dokument.
Durch Definition einer Variable „input“ kann so auf die Elemente des Files „Daten.xml“ zugegriffen werden.
<xsl:variable name="input"select="document('Daten.xml')/person"/>
![Page 72: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/72.jpg)
xsl:key, key()
Durch xsl:key kann eine Indexierung (Schlüssel) von Elementen angelegt werden.
Alle ../born/@date-Attribute von name-Elementen:
<xsl:key name="myKey1" match="name"use="../born/@date"/>
Alle Anfangsbuchstaben von hobby-Elementen:
<xsl:key name="myKey2" match="hobby"use="substring(.,1,1)"/>
![Page 73: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/73.jpg)
xsl:key, key()
Die XPath Funktion key() gibt dann die entsprechenden Elemente zurück.
<xsl:apply-templates select="key('myKey1','1912')"/>
gibt alle name-Knoten mit Geburtstjahr 1912 zurück.
<xsl:apply-templates select="key('myKey2','p')"/>
gibt alle hobby-Knoten mit Anfangsbuchstabe "p" zurück.
![Page 74: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/74.jpg)
People Beispiel: address ID auflösen
Schlüssel definieren<xsl:key name="addrKey" match="address"
use="@id"/>
Schlüssel benutzen<xsl:template match="person">
<xsl:apply-templatesselect="key('addrKey', born/@addressRef)"/>
</xsl:template>
![Page 75: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/75.jpg)
xsl:function
<xsl:stylesheet "version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform
xmlns:cs="http://www.isbe.ch/catalogFunctions"
xmlns:xs='http://www.w3.org/2001/XMLSchema'>
<!-- function definition -->
<xsl:function name="cs:substring"><xsl:param name="str" as="xs:string"/><xsl:param name="n" as="xs:integer"/><xsl:sequence select= "if( string-length($str) >=$n )
then substring($str,1,$n) else error() "/></xsl:function>
![Page 76: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/76.jpg)
Exkurs: XQuery
![Page 77: eXtensible Stylesheet Language - BFHamrhein/Skripten/XML/XSLTFolien.pdfXSL eXtensible Stylesheet Language Die Stylesheet Sprache für XML XSL ist ein World Wide Web Standard • XSL](https://reader035.fdocuments.us/reader035/viewer/2022071000/5fbca64d1d3441316a2941de/html5/thumbnails/77.jpg)
Übungen