Altova MapForce 2024 Enterprise Edition

La plupart du temps, lorsque vous créez un mappage avec MapForce, l'objectif est de lire des valeurs depuis une source et d'écrire des valeurs dans une cible. Néanmoins, il peut y avoir des cas dans lesquels vous souhaitez accéder non seulement aux valeurs de nœud depuis la source, mais aussi aux noms de nœud. Par exemple, vous pouvez souhaiter créer un mappage qui écrit les noms d'élément ou d'attributs (pas des valeurs) depuis un XML de source et les convertit en des valeurs d'élément ou d'attribut (pas de noms) dans un XML cible.

 

Prenons l'exemple suivant : vous avez un fichier XML qui contient une liste de produits. Chaque produit possède le format suivant :

 

  <product>

    <id>1</id>

    <color>red</color>

    <size>10</size>

  </product>

 

Votre objectif est de convertir l'information concernant chaque produit dans des paires nom-valeur, par exemple :

 

  <product>
    <attribute name="id" value="1" />
    <attribute name="color" value="red" />
    <attribute name="size" value="10" />
</product>

 

Pour ce type de scénario, vous souhaitez accéder au nom de nœud depuis le mappage. Avec l'accès dynamique aux noms de nœud, vous pouvez effectuer des conversions de données comme celle présentées ci-dessus.

 

Note :Vous pouvez aussi effectuer la transformation ci-dessus en utilisant les fonctions de bibliothèque principale node-name et static-node-name. Néanmoins, dans ce cas, vous devrez savoir exactement quels noms d'élément vous attendez de la source, et vous devrez connecter chaque élément manuellement vers la cible. Néanmoins, ces fonctions peuvent ne pas être suffisantes, par exemple si vous souhaitez filtrer ou regrouper des nœuds par leur nom, ou si vous souhaitez manipuler le type de données du nœud depuis le mappage.

 

L'accès à des noms de nœud dynamiquement est possible non seulement lorsque vous souhaitez lire des noms de nœud, mais aussi lorsque vous souhaitez les écrire. Dans un mappage standard, le nom des attributs ou des éléments dans une cible est toujours connu avant que le mappage soit exécuté ; il provient du schéma sous-jacent du composant. Avec des noms de nœud dynamiques, toutefois, vous pouvez créer de nouveaux attributs ou éléments dont le nom n'est pas connu avant l'exécution du mappage. En particulier, le nom de l'attribut ou de l'élément est fourni par le mappage lui-même, depuis toute source prise en charge par MapForce.

 

Pour que l'accès dynamique aux éléments ou attributs enfants d'un nœud soit possible, le nœud doit effectivement avoir des éléments ou des attributs enfant et ce ne doit pas être le nœud racine XML.

 

Les noms de nœud dynamiques sont pris en charge lorsque vous mappez depuis ou vers les types de composant suivants :

 

XML

CSV/FLF*

 

* Nécessite l'édition MapForce Professional ou Enterprise.

 

Note :Dans le cas de CSV/FLF, l'accès dynamique implique l'accès à "fields" au lieu de "nodes", puisque les structures CSV/FLF n'ont pas de "nœuds".

 

Lorsque la cible de mappage est un fichier CSV ou FLF (champ de longueur fixe), les champs doivent être définis dans les paramètres de composant (et il n'est pas possible de changer le nom, l'ordre ou le nombre des champs de cible). Contrairement à XML, le format des fichiers de texte est fixe, donc seule la valeur de champ peut être manipulée, et pas le nom de champ, le nombre ou l'ordre.

 

 

Les noms de nœud dynamiques sont pris en charge dans un des langages de mappage suivants : Built-In*, XSLT2,XSLT3 , XQuery*, C#*, C++*, Java*.

 

* Ces langages nécessitent l'édition MapForce Professional ou Enterprise.

 

Pour plus d'information concernant le fonctionnement des noms de nœud dynamiques, voir Obtenir l'accès aux noms de nœud. Pour un exemple de mappage étape par étape, voir Exemple : Mapper des noms d'élément vers les valeur d'attribut.

© 2018-2024 Altova GmbH