Altova XMLSpy 2025 Enterprise Edition

Fonctions d'extension Java

Accueil Préc Haut Suivant

Une fonction d’extension Java peut être utilisée à l’intérieur d’une expression XPath ou XQuery pour invoquer un constructeur Java ou appeler une méthode Java (statique ou instance).

 

Un champ dans une classe Java est considéré être une méthode sans argument. Un champ peut être statique ou d'instance. L'accès aux champs est décrit dans les sous-sections respectives, statiques et d'instance.

 

Cette section est organisée dans les sous-sections suivantes :

 

Java : Constructeurs

Java : Méthodes statiques et champs statiques

Java : Méthodes d'instance et champs d'instance

Types de données : XPath/XQuery en Java

Types de données : Java en XPath/XQuery

 

Veuillez noter les points suivants

Si vous utilisez un produit de desktop Altova, les tentatives d'application Altova pour détecter automatiquement le chemin vers la machine virtuelle Java, en lisant (dans cet ordre) : (i) le registre Windows, et (ii) la variable d'environnement JAVA_HOME. Vous pouvez aussi ajouter un chemin personnalisé dans le dialogue Options de l'application ; cette entrée prendra la priorité sur tout autre chemin Java VM détecté automatiquement.

Si vous exécutez un produit serveur Altova sur un appareil Windows, le chemin vers la machine virtuelle sera lu tout d'abord depuis le registre Windows ; si cela échoue, la variable d'environnement JAVA_HOME sera utilisée.

Si vous exécutez un produit de serveur Altova sur un appareil Linux ou macOS, veuillez vous assurer que la variable d'environnement JAVA_HOME est définie correctement et que la bibliothèque des appareils virtuels Java (sur Windows, le fichier jvm.dll) puisse être située dans le répertoire \bin\server ou \bin\client.

 

Forme de la fonction d'extension

La fonction d'extension de l'expression XPath/XQuery doit avoir la forme prefix:fname().

 

La partie prefix: identifie la fonction d'extension en tant qu'une fonction Java. Elle procède en associant la fonction d'extension avec une déclaration d'espace de nom in-scope, dont l'URI doit commencer avec java: (voir les exemples ci-dessous). La déclaration d'espace de nom devrait identifier une classe Java, par exemple : xmlns:myns="java:java.lang.Math". Néanmoins, elle pourrait être simplement : xmlns:myns="java" (sans les doubles points), l'identification de la classe Java se faisant dans la partie fname()de la fonction d'extension.

La partie fname() identifie la méthode Java appelée, et fournit les arguments pour la méthode (voir les exemples ci-dessous). Néanmoins, si l'URI d'espace de nom identifié par la partie prefix: n'identifie pas une classe Java (voir point précédent), alors la classe Java devrait être identifiée dans la partie fname(), avant la classe et séparé de la classe par un point (voir le second exemple XSLT ci-dessous).

 

Note :La classe appelée doit être sur le classpath de la machine.

 

Exemple XSLT

Voici deux exemples pour démontrer comment appeler une méthode statique. Dans le premier exemple, le nom de classe (java.lang.Math) est inclus dans l'URI d'espace de nom et ne doit donc pas être dans la même partie fname(). Dans le second exemple, la partie prefix: fournit le préfixe java: alors que la partie fname() identifie la classe et la méthode.

 

<xsl:value-of xmlns:jMath="java:java.lang.Math"
         select="jMath:cos(3.14)" />

 

<xsl:value-of xmlns:jmath="java"
         select="jmath:java.lang.Math.cos(3.14)" />

 

La méthode nommée dans la fonction d'extension (cos() dans l'exemple ci-dessus) doit correspondre au nom d'une méthode statique publique dans la classe Java nommée (java.lang.Math dans l'exemple ci-dessus).

 

Exemple XQuery

Voici un exemple XQuery semblable à l'exemple XSLT ci-dessus:

 

 <cosine xmlns:jMath="java:java.lang.Math">

    {jMath:cos(3.14)}

 </cosine>

 

Classes Java définies par l'utilisateur

Si vous avez créé vos propres classes Java, les méthodes dans ces classes sont appelées différemment selon que : (i) les classes sont accédées par un fichier JAR ou un fichier classe et (ii) si ces fichiers (JAR ou classe) sont situés dans le répertoire actuel (le même répertoire que le document XSLT ou XQuery) ou pas. Consulter les sections Fichiers de classe définis par l'utilisateur et Fichiers Jar définis par l'utilisateur pour apprendre comment localiser ces fichiers. Veuillez noter que les chemins vers les fichiers de classe ne se trouvant pas dans le répertoire actuel et vers tous les fichiers JAR doivent être spécifiés.

 

© 2018-2024 Altova GmbH