jeudi 26 juin 2008

XSL - créer ses propres fonctions XSL dans XML Mapper (user defined extension function)

Cet article vous permet de créer vos propres fonctions XSL à partir d'une classe java.

Tout d'abord il faut créer votre classe java effectuant une fonction non existante dans la palette du XML Mapper. Pour ma part j'utilise le super outil jdev .... ;)

Ma fonction d'exemple transforme des lettres 'aaa' en chaine 'bbb'.

package xsltfunctions;
public class XmlToHtml {

public XmlToHtml() { }
public static String getXmlConverted(String s)
{
s = s.replaceAll("aaa", "bbb");
s = s.replaceAll("zz", "RR");
return s;
}}


compiler cette classe, et rajouter un répertoire META-INF dans votre répertoire classes.


Le répertoire classes doit donc comprendre :

- 1 répertoire META-INF avec cet exemple de fichier XML conforme à la JSR 198 extension pour Jdev:





Télécharger ce fichier : ici
- 1 répertoire xsltfunctions contenant notre classe XmlToHtml compilée


Placer vous dans le répertoire classes pour exemple :

D:\dev_hugu\XmlManipulation\ClassXslFunction\classes

Faites un jar via la ligne de commande:

jar cvf xsltfunctions.1.0.jar *

Afin d'intégrer cette nouvelle fonction à jdev, vous devez modifier les préférences. Allez dans le menu Tools/Preferences, et sélectionner la dernière option XSL Maps.




Spécifier un fichier XML dans la zone:




Ce fichier XML décrit notre extension et comment retrouver la bonne classe, voici mon exemple:



Télécharger ce fichier extension.xml : ici

Ensuite quittez Jdev et re démarrer le.


Aller dans une transformation XSL et dans la palette des fonctions, votre nouvelle fonction apparait.

la fonction Test du XML mapper utilise bien notre fonction. Pour l'utiliser dans l'ESB / BPEL lors de l'éxecution sur votre serveur, il suffit de copier le fichier jar dans le répertoire de votre instance SOA suite:

ORACLE_HOME/j2ee/oc4j_soa/applib

Redémarrer votre Soa Suite et déployer votre processus bpel our ESB appelant cette transformation XSL et ca marche .....

Voici les liens vers la doc:

plus d'info sur XML Mapper en anglais : http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/xslt_mpr.htm#sthref1426

Aucun commentaire: