Altova MapForce 2024 Enterprise Edition

Cet exemple vous montre comment importer un module de bibliothèque XQuery de démonstration dans MapForce et appeler ses fonctions depuis un mappage. Le module de démonstration contenu dans cet exemple consiste en une seule fonction qui calcule des taxes sur les montants décimaux à 20% du montant. Dans un scénario de production, un module XQuery peut contenir plusieurs fonctions.

 

Toutes les fonctions déclarées dans le module XQuery doivent retourner des types atomiques et leurs paramètres doivent aussi être de types de données atomiques. Sinon, le module n'est pas éligible pour une importation dans MapForce.

 

Vous trouverez le fichier de module XQuery de démonstration dans le chemin suivant relatif à votre dossier personnel "Documents" sur l'ordinateur dans lequel MapForce est installé : <Documents>\Altova\MapForce2024\MapForceExamples\Tutorial\module.xq.

 

xquery version "1.0";
 
module namespace demo="https://www.altova.com/mapforce/demo";
 
declare function demo:calculatetax($val as xs:decimal) as xs:decimal {  
  $val*0.2
};

module.xq

Une fois avoir importé le fichier de module XQuery dans MapForce, vous pourrez appeler la fonction demo:calculatetax depuis un mappage. Veuillez noter que le calcul du montant des impôts à l'aide d'une fonction XQuery n'est destinée qu'à des fins de démonstration, vous pouvez obtenir le même résultat en utilisant les fonctions built-in de MapForce.

 

Un mappage de démonstration qui appelle la fonction demo:calculatetax ci-dessus est disponible sous le chemin suivant : <Documents>\Altova\MapForce2024\MapForceExamples\Tutorial\CalculateTax_XQuery.mfd. Lorsque vous ouvrez tout d'abord ce mappage, MapForce affiche un avertissement qu'il contient un ou plusieurs composants qui ne sont pas disponibles dans XQuery. Cet avertissement est normal et se produit parce que le mappage référence une fonction provenant d'un module de bibliothèque XQuery personnalisé qui n'a pas encore été importé. Afin de supprimer l'avertissement et exécuter le mappage, nous allons importer le module XQuery manquant dans MapForce comme indiqué ci-dessous.

Pour importer le module XQuery dans MapForce :

1.Cliquez sur la touche Ajouter/Supprimer des bibliothèques en bas de la fenêtre Bibliothèques. La fenêtre Gérer les Bibliothèques s’ouvre (voir la capture d'écran ci-dessous).

mf_manage_libraries_window_empty

2.Pour importer des fonctions en tant que bibliothèque locale (uniquement dans le cadre du document actuel), cliquez sur Ajouter sous le nom actuel du mappage. Pour importer les fonctions en tant que bibliothèque globale (au niveau du programme), cliquez sur Ajouter à côté des Importations Bibliothèques globales. Lorsque vous importez une bibliothèque localement, vous pouvez définir le chemin du fichier de bibliothèque pour qu'il soit relatif au fichier de mappage. Avec des bibliothèques importées globalement, le chemin de la bibliothèque importée est toujours absolu.

 

3.Rechercher <Documents>\Altova\MapForce2024\MapForceExamples\Tutorial\module.xq et cliquer sur Ouvrir. Un message apparaît vous informant qu'une nouvelle bibliothèque a été ajoutée.

mf_xq_01

La bibliothèque importée et la fonction demo:calculatetax sont maintenant visibles dans la fenêtre Bibliothèques.

mf_xq_02

De plus, le mappage peut maintenant être validé et exécuté sans avertissements. La fonction demo:calculatetax illustrée dans l'image ci-dessous provient du module XQuery importé et elle peut être ajoutée au mappage comme toute autre fonction intégrée, voir Ajouter une fonction dans le mappage.

mf_xq_03

CalculateTax_XQuery.mfd

 

Explication du mappage

Le mappage CalculateTax_XQuery.mfd illustré ci-dessus prend en tant qu'entrée un fichier XML qui stocke des articles. Chaque article possède un seul prix, exprimé dans une valeur décimale, par exemple :

 

<Articles>
  <Article>
    <Number>1</Number>
    <Name>T-Shirt</Name>
    <SinglePrice>25</SinglePrice>
  </Article>
  <Article>
    <Number>2</Number>
    <Name>Socks</Name>
    <SinglePrice>2.30</SinglePrice>
  </Article>
  <Article>
    <Number>3</Number>
    <Name>Pants</Name>
    <SinglePrice>34</SinglePrice>
  </Article>
  <Article>
    <Number>4</Number>
    <Name>Jacket</Name>
    <SinglePrice>57.50</SinglePrice>
  </Article>
</Articles>

Articles.xml

Le mappage produit un fichier XML qui suit les mêmes règles que le fichier XML source. Ainsi, les composants de source et de cible ont tous les deux la même structure dans le mappage. Comme le suggère les connexions de mappage, presque tous les éléments sont mappés de manière claire de la cible à la source ; par exemple, pour chaque Article dans la source, il y aura un Article dans la cible. Les valeurs de tous les items sont copiés verbatim depuis le XML de source, sauf en ce qui concerne SinglePrice. La valeur de SinglePrice est calculée à l'aide des deux fonctions :

 

La fonction XQuery demo:calculatetax calcule le montant de l'impôt en prenant le SinglePrice original en tant qu'entrée.

La fonction intégrée MapForce add ajoute le montant de l'impôt au montant SinglePrice original et retourne le montant final.

 

Chose importante, le type de données de l'item SinglePrice est xs:decimal; ce qui correspond au type de paramètre d'entrée et au type de retour de la fonction XQuery.

 

La sortie produite par le mappage lorsque vous cliquez sur l'onglet Sortie est illustrée ci-dessous. Veuillez noter l'augmentation de 20% appliquée à chaque prix comparé au XML source.

mf_xq_04

© 2018-2024 Altova GmbH