Benutzerdefinierte Klassendateien

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Anhänge > Informationen zu den Prozessoren > XSLT- und XPath/XQuery-Funktionen > Diverse Erweiterungsfunktionen > Java-Erweiterungsfunktionen >

Benutzerdefinierte Klassendateien

Wenn der Zugriff über eine Klassendatei erfolgt, gibt es zwei Möglichkeiten:

 

Die Klassendatei befindet sich in einem Paket. Die XSLT-oder XQuery-Datei befindet sich im selben Ordner wie das Java-Paket. (Siehe Beispiel unten.)
Die Klassendatei befindet sich nicht in einem Paket. Die XSLT-oder XQuery-Datei befindet sich im selben Ordner wie die Klassendatei. (Siehe Beispiel unten.)
Die Klassendatei befindet sich in einem Paket. Die XSLT-oder XQuery-Datei befindet sich in irgendeinem beliebig gewählten Ordner. (Siehe Beispiel unten.)
Die Klassendatei befindet sich nicht in einem Paket. Die XSLT-oder XQuery-Datei befindet sich in irgendeinem beliebig gewählten Ordner. (Siehe Beispiel unten.)

 

Gesetzt der Fall, die Klassendatei befindet sich nicht in einem Paket, sondern im selben Ordner wie das XSLT- oder XQuery-Dokument, so muss der Dateipfad nicht angegeben werden, da alle Klassen im Ordner gefunden werden. Die Syntax zum Identifizieren einer Klasse lautet:

 

         java:classname

 

 

 wobei

 

java: angibt, dass eine benutzerdefinierte Java-Funktion aufgerufen wird; (Java-Klassen im aktuellen Verzeichnis werden standardmäßig geladen)

 classname der Name der Klasse der erforderlichen Methode ist

 

 die Klasse in einer Namespace URI identifiziert wird und der Namespace einem Methodenaufruf als Präfix vorangestellt wird.

 

 

Klassendatei in einem Paket, XSLT/XQuery-Datei befindet sich im selben Ordner wie das Java-Paket

Im Beispiel unten wird die Methode getVehicleType()der Klasse Car des Pakets com.altova.extfunc aufgerufen. Das Paket com.altova.extfunc befindet sich im Ordner JavaProject. Die XSLT-Datei befindet sich ebenfalls im Ordner JavaProject.

 

 <xsl:stylesheet version="2.0" 

         xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 

         xmlns:xs="http://www.w3.org/2001/XMLSchema" 

         xmlns:fn="http://www.w3.org/2005/xpath-functions"

         xmlns:car="java:com.altova.extfunc.Car" >

 <xsl:output exclude-result-prefixes="fn car xsl fo xs"/>

 

 <xsl:template match="/">

            <a>

    <xsl:value-of select="car:getVehicleType()"/>

    </a>

 </xsl:template>

 

 </xsl:stylesheet>

 

 

Die Klassendatei wird referenziert, die XSLT/XQuery-Datei befindet sich im selben Ordner wie die Klassendatei

Im Beispiel unten wird die Methode getVehicleType() der Klasse Car des Pakets com.altova.extfunc aufgerufen. Angenommen, (i) die Klassendatei Car class befindet sich im folgenden Ordner: JavaProject/com/altova/extfunc und (ii) dieser Ordner ist der aktuelle Ordner im Beispiel unten. Die XSLT-Datei befindet sich ebenfalls im Ordner JavaProject/com/altova/extfunc.

 

 <xsl:stylesheet version="2.0" 

         xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 

         xmlns:xs="http://www.w3.org/2001/XMLSchema" 

         xmlns:fn="http://www.w3.org/2005/xpath-functions"

         xmlns:car="java:Car" >

 <xsl:output exclude-result-prefixes="fn car xsl fo xs"/>

 

 <xsl:template match="/">

            <a>

    <xsl:value-of select="car:getVehicleType()"/>

    </a>

 </xsl:template>

 

 </xsl:stylesheet>

 

 

Die Klassendatei befindet sich in einem Paket, die XSLT/XQuery-Datei befindet sich in einem beliebigen Ordner

Im Beispiel unten wird die Methode getCarColor()der Klasse Car des Pakets com.altova.extfunc aufgerufen. Das Paket com.altova.extfunc befindet sich im Ordner JavaProject. Die XSLT-Datei befindet sich in einem beliebigen Ordner. In diesem Fall muss der Pfad des Pakets mit der URI als Abfragestring definiert werden. Die Syntax lautet:

 

         java:classname[?path=uri-of-classfile]

 

 wobei

 

java: angibt, dass eine benutzerdefinierte Java-Funktion aufgerufen wird

uri-of-classfile die URI der Klassendatei ist

classname der Name der Klasse der benötigten Methode ist

 

die Klasse in einer Namespace URI identifiziert wird und der Namespace einem Methodenaufruf als Präfix vorangestellt wird. Im Beispiel unten sehen Sie, wie eine Klassendatei aufgerufen wird, die sich in einem anderen als dem aktuellen Verzeichnis befindet.

 

 <xsl:stylesheet version="2.0" 

         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

         xmlns:xs="http://www.w3.org/2001/XMLSchema" 

         xmlns:fn="http://www.w3.org/2005/xpath-functions"

         xmlns:car="java:com.altova.extfunc.Car?path=file:///C:/JavaProject/" >

 

 <xsl:output exclude-result-prefixes="fn car xsl xs"/>

 

 <xsl:template match="/">

            <xsl:variable name="myCar" select="car:new('red')" /> 

    <a><xsl:value-of select="car:getCarColor($myCar)"/></a>

 </xsl:template>

 

 </xsl:stylesheet>

 

 

Die Klassendatei wird referenziert, die XSLT/XQuery-Datei befindet sich in einem beliebigen Ordner

Im Beispiel unten wird die Methode getCarColor()der Klasse Car aufgerufen. Angenommen, die Klassendatei Car befindet sich im Ordner C:/JavaProject/com/altova/extfunc. Die XSLT-Datei befindet sich in einem beliebigen Ordner. Der Pfad der Klassendatei muss dann in der Namespace-URI als Abfragestring definiert werden. Die Syntax lautet:

 

         java:classname[?path=<uri-of-classfile>]

 

 wobei

 

java: angibt, dass eine benutzerdefinierte Java-Funktion aufgerufen wird

uri-of-classfile die URI der Klassendatei ist

classname der Name der Klasse der benötigten Methode ist

 

die Klasse in einer Namespace URI identifiziert wird und der Namespace einem Methodenaufruf als Präfix vorangestellt wird. Im Beispiel unten sehen Sie, wie eine Klassendatei aufgerufen wird, die sich in einem anderen als dem aktuellen Verzeichnis befindet.

 

 <xsl:stylesheet version="2.0" 

         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

         xmlns:xs="http://www.w3.org/2001/XMLSchema" 

         xmlns:fn="http://www.w3.org/2005/xpath-functions"

         xmlns:car="java:Car?path=file:///C:/JavaProject/com/altova/extfunc/" >

 

 <xsl:output exclude-result-prefixes="fn car xsl xs"/>

 

 <xsl:template match="/">

            <xsl:variable name="myCar" select="car:new('red')" /> 

    <a><xsl:value-of select="car:getCarColor($myCar)"/></a>

 </xsl:template>

 

 </xsl:stylesheet>

 

Anmerkung:Wenn ein Pfad über eine Erweiterungsfunktion angegeben wird, wird er zum ClassLoader hinzugefügt.

 


© 2019 Altova GmbH