Fichiers Jar définis par l'utilisateur
Si l'accès s'effectue par le biais d'un fichier JAR, l'URI du fichier JAR doit être spécifié à l'aide de la syntaxe suivante :
xmlns:classNS="java:classname?path=jar:uri-of-jarfile!/"
La méthode est ensuite appelée en utilisant le préfixe de l'URI d'espace de nom qui identifie la classe : classNS:method() |
Dans l'exemple ci-dessus :
java: indique qu'une fonction Java est appelée
classname est le nom de la classe définie par l'utilisateur
? est le séparateur entre le nom de classe et le chemin d'accès
path=jar: indique qu'un chemin d'accès vers un fichier JAR est donné
uri-of-jarfile est l'URI du fichier jar
!/ est le délimiteur de fin du chemin d'accès
classNS:method() est l'appel de la méthode
En alternative, le nom de classe peut être donné avec l'appel de la méthode. Voici deux exemples de la syntaxe :
xmlns:ns1="java:docx.layout.pages?path=jar:file:///c:/projects/docs/docx.jar!/"
ns1:main()
xmlns:ns2="java?path=jar:file:///c:/projects/docs/docx.jar!/"
ns2:docx.layout.pages.main()
Voici un exemple XSLT complet qui utilise un fichier JAR pour appeler une fonction d'extension Java :
<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?path=jar:file:///C:/test/Car1.jar!/" >
<xsl:output exclude-result-prefixes="fn car xsl xs"/>
<xsl:template match="/">
<xsl:variable name="myCar" select="car:Car1.new('red')" />
<a><xsl:value-of select="car:Car1.getCarColor($myCar)"/></a>
</xsl:template>
<xsl:template match="car"/>
</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. |