Bildung

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:

  • Internet Explorer 5.5

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'">

 

Dietrich Kracht © 2016 All rights reserved. Page last modified: