Saxon-Erweiterungsfunktionen

(Auszug aus "XSLT Kochbuch" von Sal Mangano)

XSLT 1.0 (Saxon Version 6.5.4)

Mit Saxon können Sie auf Erweiterungsfunktionen in Java zugreifen, indem Sie die Schnittstelle benutzen, die im Entwurf des XSLT 1.1-Standards definiert ist.

Zurzeit ist Java die einzige Erweiterungssprache, die von Saxon unterstützt wird, d.h., die Anbindung von Erweiterungsfunktionen wird ähnlich wie in den folgenden Beispielzeilen definiert:

<xsl:stylesheet version="1.1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:Math="java:java.lang.Math" exclude-result-prefixes="Math">
  <xsl:script implements-prefix="Math" xmlns:Math="java:java.lang.Math" language="java" src="java:java.lang.Math"/>

Die hier beim Namensraum verwendete Namenskonvention ist nicht unbedingt notwendig. Wenn sie aber befolgt wird, dann wird das xsl:script-Element optional. Sollten Sie also nur einmal auf eine Erweiterung zugreifen müssen, dann können Sie etwa Folgendes schreiben:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:variable name="PI" select="4 * Math:atan(1.0)" xmlns:Math="java:java.lang.Math"/>
  <!-- ... -->
</xsl:stylesheet>

Hierbei kodiert der Namensraum die Anbindung an die Java-Implementierung und nicht das xsl:script. Beachten Sie, dass diese Anbindungsmethoden unabhängig von einander sind. Wenn Sie das xsl:script-Element verwenden, dann spielt der Inhalt des Namensraums keine Rolle. Und wenn Sie umgekehrt das xsl:script weglassen, hat der Namensraum einzig die Aufgabe, die Java-Implementierung anzubinden.

XSLT 2.0 (Saxon Version 8.x)

Der Mechanismus für die Ausführung Java-basierter Erweiterungsfunktionen ist weitgehend der gleiche wie in Saxon 6.5.4. Allerdings gilt das saxon:script-Element als veraltet und könnte laut Website zu diesem Produkt in einem zukünftigen Release nicht mehr vorhanden sein. Die bevorzugte Methode liegt in der Deklaration eines Namensraums auf oberster Ebene der Form java:, gefolgt vom vollständig qualifizierten Klassennamen.

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:math="java:java.lang.Math" exclude-result-prefixes="math">
  <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
    <pi><xsl:value-of select="4 * math:atan(1.0)"/></pi>
  </xsl:template>
</xsl:stylesheet>

  

<< zurück vor >>

 

 

 

Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © 2006 O'Reilly Verlag GmbH & Co. KG
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT Kochbuch" denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

O'Reilly Verlag GmbH & Co. KG, Balthasarstraße 81, 50670 Köln, kommentar(at)oreilly.de