1. Was ist eigentlich XSL?
- XSL steht für Extensible Stylesheet Language.
- Zu XSL gibt es zwei W3C Recommendations: XPath (http://www.w3.org/TR/xpath)
und XSLT (http://www.w3.org/TR/xslt). Beide tragen das Datum 16 November 1999 und die Version 1.0.
- XSL insgesamt dient dazu, Inhalt von XML-Dokumenten zu bearbeiten, z.B. ihn als
HTML-Datei darzustellen nach dem Prinzip den semantischen Inhalt (XML) von der
visuellen Aufbereitung zu trennen.
2. Tools zum Erstellen von XML-Dokumenten mit XSL-Stylesheets
Ein guter XML-Editor ist Xml
Spy von der Firma Icon Information Services (http://www.xmlspy.com).
Die Version 2.5 gab es schon in 1999. Sehr nützlich ist die Strukturdarstellung
("Grid View") von XML-Dateien und die volle Integration
der XSL-Stylesheets in die Funktion "Browser View".
Hierzu wird allerdings die Installation des Microsoft Internet Explorers
bzw. des Microsoft XML-Parsers MSXML als Zusatz benötigt.
Nun gibt es die Version 3.0 mit vielen neuen Features und
leider nicht mehr ganz so schlank. Neben einer ganz hilfreichen Projektverwaltung
wird jetzt auch der XSLT-Standard vom 16. Nov. 1999 unterstützt.
XmlSpy wird damit zur IDE für XML zum Einzelpreis von USD 149,--.
3. XML und XSL nach Microsoft-Art
Microsoft unterstützt die Recommendations XSLT und XPath
sowie SAX (Simple API for XML) entweder durch:
oder durch den MSXML Parser Beta:
4. XML und XSL nach Open-Source-Art
Als Open Source gibt es die Apache-Projekte Xerces (XML-Parser)
und Xalan (XSLT-Engine).
5. Unterschiede zwischen XSLT 1.0/XPath
1.0 und dem früheren Working Draft
Auf der Microsoft-Page gibt es eine Migrationshilfe zur
Konvertierung auf XSLT 1.0:
(jscript convert.js <name des xsl-stylesheet>)
Folgende Unterschiede habe ich bei meinen Arbeiten mit XSL
bisher am eigenen Leib erfahren:
Lfd. Nr.
|
Alt (Working Draft)
|
Neu (Recommendation)
|
Erläuterung
|
1
|
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/ TR/WD-xsl">
|
<xsl:stylesheet
version="1.0" xmlns:xsl="http://www.w3.org/
1999/XSL/Transform">
|
Ohne die Angabe version="1.0"
wird der alte Working Draft als Kompatibilitätshilfe noch unterstützt.
|
2
|
|
<xsl:output method="html"
version="4.0" indent="yes"
omit-xml-declarations="yes">
|
Neu.
Einmal am Anfang.
|
3
|
<xsl:eval>this.childNodes.length
</xsl:eval>
|
<xsl:value-of
select="local:hugo(.)"/>
<msxsl:script
implements-prefix="local">
function hugo(x)
{
var __this = x.item(0);
return __this.childNodes.length
}
</msxsl:script>
|
Weggefallen. Kann immer durch Definition
einer lokalen Funktion und Aufruf dieser Funktion nachgebildet
werden.
Häufig gibt es aber auch eine neue
Standardfunktionalität die jetzt anstelle
eines händischen Kodes viel besser verwendet werden kann (Beispiel: 4)
|
4
|
<xsl:eval>this.childNodes.length
</xsl:eval>
|
<xsl:value-of
select="count(Lexikon/termEntry)" />
|
"this" musste vorher noch
positioniert werden.
|
5
|
XML Patterns
|
XPath
|
|
6
|
termEntry[(@id $lt$ 'c') and (@id $ge$ 'b')]
|
termEntry[substring(@id,1,1)='b']
|
|
7
|
<xsl:if test=".[abbr > '']">
|
<xsl:if test="abbr!=''">
|
Test, ob Element abbr nicht leer.
|
8
|
test="..[Name='Köln']"
|
test="../Name='Köln'"
|
Test, ob Element Name gleich Köln.
|
9
|
test=".[@id='123']"
|
test="@id='123'"
|
Test, ob Attribut id gleich 123.
|
10
|
<xsl:for-each ... order-by...>
|
<xsl:for-each ...> <xsl:sort ...>
|
Sortieren
|
11
|
<xsl:if
test=".[nodeName()='p']">
|
<xsl:if test="name(.)='p'">
|
|
|