Altova MapForce 2024 Enterprise Edition

Exemple : Exception lorsque le nœud n'existe pas

Accueil Préc Haut Suivant

Cet exemple illustrate comment lancer une exception lorsqu'un nœud dans le schéma XML de source n'existe pas. Pour des raisons de simplicité, cet exemple utilise le même schéma XML aussi bien en tant que composant source et cible.

Pour ajouter le schéma de source dans le mappage :

1.Dans le menu Insérer, cliquez sur Schéma XML/Fichier, et cherchez <Documents>\Altova\MapForce2024\MapForceExamples\ BookList.xsd.

2.Lorsque vous serez invité à fournir un fichier d'instance, cliquez sur Sauter.

3.Lorsque vous serez invité à sélectionner un élément de racine de schéma, sélectionnez BookList en tant qu'élément de racine.

 

Pour ajouter le schéma de cible, suivre les mêmes étapes. Ensuite, en utilisant les commandes correspondantes depuis le menu Insérer (ou les touches de barre d'outils correspondantes), ajoutez les éléments suivants :

 

Un composant Filtre : Nœuds/Lignes (voir aussi Filtres et conditions)

Une constante avec le texte "No year defined!" (Aucune année définie !)

Une exception

 

Enfin, tirer la fonction exists depuis la fenêtre Bibliothèques dans la zone de mappage, et établir les connexions comme illustré ci-dessous.

mf_exception_example_1

Conformément au schéma XML, tous les attributs de l'élément Book sont optionnels, sauf le titre du livre. C'est pourquoi, l'attribut "Year" peut ou pet ne pas exister dans une instance XML valide. L'objectif du mappage est de traiter avec succès une instance XML où l'attribut "Year" existe pour chaque livre. Sinon, le mappage doit lancer une exception.

Pour tester l'exécution réussie du mappage :

1.Double-cliquer sur l'en-tête du composant de source et, à côté de Fichier XML d'entrée, chercher le fichier suivant : <Documents>\Altova\MapForce2024\MapForceExamples\ BookList.xml.

2.Cliquer sur la touche Sortie pour exécuter le mappage.

Pour tester l'exception :

1.Créer, dans le même répertoire, une copie du fichier BookList.xml appelée BookListInvalid.xml.

2.La modifier de manière à supprimer l'attribut "Year" d'un élément Book.

3.Double-cliquer sur l'en-tête du composant de source, et, à côté du fichier XML d'entrée, chercher le fichier BookListInvalid.xml.

4.Cliquer sur la touche Sortie pour exécuter le mappage.

 

Examinons à présent de plus près le fonctionnement d'un mappage.

 

La connexion A veille à ce qu'un livre soit créé dans l'instance cible pour chaque livre dans l'instance de source. Les connexions B, C, D, E garantissent que "Title", "Year", "Price" et "Author" sont copiés depuis la source vers la cible, pour chaque livre.

 

La connexion F déclenche la fonction exists pour contrôler l'existence de l'attribut "Year". La connexion G fait passer le résultat de fonction (true ou false) dans le filtre. Si le résultat est true, l'attribut "Year" existe, et le livre passe dans le filtre, et ensuite dans la cible par le biais de la connexion H.

 

Veuillez noter que le filtre n'a pas été connecté directement à la sortie Year du composant de source. Si nous l'avions connecté de cette manière, le filtre filtrerait Year du fait de sa propre existence, ce qui n'est pas significatif, et l'exception ne serait jamais lancée.

 

La connexion I est là parce que l'exception doit être connectée soit à une sortie on-false ou on-true d'un filtre, conformément aux règles. Enfin, la connexion K fait passer le texte d'erreur personnalisé de la constante au composant d'exception.

© 2018-2024 Altova GmbH