Fichiers de classe définis par l'utilisateur

www.altova.com Imprimer cette rubrique Page précédente Un niveau supérieur Page suivante

Accueil >  Informations moteur > Fonctions XSLT et XPath/XQuery > Fonctions d'extension diverses > Fonctions d'extension Java >

Fichiers de classe définis par l'utilisateur

Si l'accès se produit par un fichier de classe, deux possibilités s'ouvrent à vous :

 

Le fichier de classe se trouve dans un package. Le fichier XSLT ou XQuery se trouve dans le même dossier que le package Java. (Voir exemple ci-dessous.)
Le fichier de classe ne se trouve pas dans un package. Le fichier XSLT ou XQuery se trouve dans le même dossier que le fichier de classe. (Voir exemple ci-dessous.)
Le fichier de classe se trouve dans un package. Le fichier XSLT ou XQuery se trouve dans un emplacement aléatoire. (Voir exemple ci-dessous.)
Le fichier de classe ne se trouve pas dans un package. Le fichier XSLT ou XQuery se trouve dans  un emplacement aléatoire. (Voir exemple ci-dessous.)

 

Prenons le cas où le fichier de classe ne se trouve pas dans un package et se trouve dans le même dossier que le document XSLT ou XQuery document. Dans ce cas, puisque toutes les classes dans le dossier sont trouvées, l'emplacement du fichier ne doit pas être spécifié. La syntaxe pour identifier une classe est :

 

         java:classname

 

 alors que

 

java: indique qu'une fonction Java définie par l'utilisateur est appelée ; (les classes Java dans le répertoire actuelles seront chargées par défaut)

         classname est le nom de la classe de la méthode requise

 

La classe est identifiée dans un URI d'espace de nom, et l'espace de nom est utilisé pour préfixer un appel de méthode.

 

 

Fichier de classe dans un package, le fichier XSLT/XQuery se trouve dans le même dossier que le package Java

L'exemple ci-dessous appelle la méthode getVehicleType()de la classe Car du package com.altova.extfunc. Le package com.altova.extfunc se trouve dans le dossier JavaProject. Le fichier XSLT se trouve également dans le dossier 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>

 

Fichier de classe est référencé, le fichier XSLT/XQuery se trouve dans le même dossier que le fichier de classe

L'exemple ci-dessous appelle la méthode getVehicleType()de la classe Car. Partons du principe que (i) le fichier de classe Car se trouve dans l'emplacement de dossier suivant : JavaProject/com/altova/extfunc et (ii) que ce dossier est le dossier actuel de l'exemple ci-dessous. Le fichier XSLT se trouve aussi dans le dossier 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>

 

Fichier de classe dans un package, le fichier XSLT/XQuery se trouve dans n'importe quel emplacement

L'exemple ci-dessous appelle la méthode getCarColor()de la classe Car du package com.altova.extfunc. Le package com.altova.extfunc se trouve dans le dossier JavaProject. Le fichier XSLT se trouve dans n'importe quel emplacement. Dans ce cas, l'emplacement du package doit être spécifié dans l'URI en tant que chaîne de requête. La syntaxe est :

 

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

 

 alors que

 

java: indique qu'une fonction Java définie par l'utilisateur est appelée

uri-of-package est l'URI du package Java

classname est le nom de la classe de méthode requise

 

La classe est identifiée dans un URI d'espace de nom et l'espace de nom est utilisé pour préfixer un appel de méthode. L'exemple ci-dessous montre comment accéder à un fichier de classe qui se situe dans un autre répertoire que le répertoire actuel.

 

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

 

 

Fichier de classe référencé, XSLT/XQuery se trouve dans n'importe quel emplacement

L'exemple ci-dessous appelle la méthode getCarColor()de la classe Car. Si par exemple le fichier de classe Car se trouve dans le dossier C:/JavaProject/com/altova/extfunc et que le fichier XSLT se trouve dans n'importe quel emplacement. L'emplacement du fichier de classe doit être spécifié dans le cadre de l'URI d'espace de nom en tant que chaîne de requête. La syntaxe est :

 

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

 

 alors que

 

java: indique qu'une fonction Java définie par l'utilisateur est appelée

uri-of-classfile est l'URI du dossier contenant le fichier de classe

classname est le nom de la classe de méthode requise

 

La classe est identifiée dans un URI d'espace de nom et l'espace de nom est utilisé pour préfixer un appel de méthode. L'exemple ci-dessous montre comment accéder à un fichier de classe qui se situe dans un autre répertoire que le répertoire actuel.

 

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

 

Note :Lorsqu'un chemin d'accès est fourni par le biais de la fonction d'extension, le chemin est ajouté au ClassLoader.

 


© 2019 Altova GmbH