Nœuds à occurrences multiples
Cette rubrique explique comment MapForce traite les nœuds pouvant avoir plusieurs occurrences. Tout au long de cette section, nous appellerons ces nœuds « séquences ». MapForce applique les règles suivantes aux séquences :
•Si une séquence source est connectée à un nœud cible, MapForce parcourt la séquence et génère une occurrence du nœud cible pour chaque occurrence du nœud source. •Si un filtre est appliqué, MapForce évalue la condition du filtre pour chaque élément de la séquence et ne mappe que les éléments pour lesquels la condition est true. •Si une séquence source est vide, aucun nœud cible correspondant n’est généré. |
Exceptions
Les exceptions suivantes s’appliquent aux règles de traitement des séquences.
Exception 1
Si l'élément cible est un élément racine XML, il n'est toujours créé qu'une seule fois. Si vous connectez une séquence source à l'élément racine, plusieurs éléments racines ne peuvent pas être générés, ce qui peut entraîner un document XML non conforme au schéma. Si des attributs de l'élément racine sont également connectés, la sérialisation XML échoue lors de l'exécution. Par conséquent, évitez de connecter des séquences à l’élément racine XML.
Exception 2
Si l’élément cible ne peut contenir qu’une seule valeur, une seule valeur est écrite dans la cible. Les attributs XML, les champs de base de données et les composants de sortie simple sont des exemples de tels éléments.
Par exemple, le mappage ci-dessous utilise la fonction generate-sequence pour générer une séquence de trois entiers (1, 2, 3). Comme le composant de sortie simple n’accepte qu’une seule valeur, seul le premier entier est écrit en sortie. Les valeurs restantes sont ignorées.

Exception 3
Si le schéma source spécifie qu’un élément ne peut apparaître qu’une seule fois, mais que les données source contiennent plusieurs occurrences, MapForce peut n’utiliser que la première occurrence. Pour désactiver ce comportement, décochez la case Activer les optimisations de traitement d’entrées basées sur min/maxOccurs dans les Paramètres de composant.
Connexion de séquences à des entrées de fonction
Si des séquences sont connectées à plusieurs entrées de fonction, le mappage génère le produit cartésien des séquences d’entrée. Cela signifie que chaque élément d’une séquence est combiné avec chaque élément de chacune des autres séquences. Cela peut entraîner des structures de données inattendues, des problèmes de performances ou des résultats de calcul non souhaités.
Lorsque vous utilisez une fonction à entrées multiples, connectez une séquence à une seule entrée. Connectez toutes les entrées restantes à des éléments à valeur unique.
Si une fonction reçoit une séquence vide en entrée, elle renvoie un résultat vide et ne produit aucune sortie correspondante.
Fichiers d'exemple
Vous pouvez utiliser les mappages suivants pour tester des séquences :
•MapForceExamples\ArticlePricing.mfd
•MapForceExamples\ExcelColumnsToRecords.mfd
•MapForceExamples\ExcelWith2Dimensions.mfd
•MapForceExamples\FindHighestTemperatures.mfd
•MapForceExamples\OfficeAddressFromLines.mfd