Le type de données Document correspond parfaitement au concept de données structurées de type XML. Lorsque vous devez utiliser la structure XML pour mapper le flux d'entrée ou de sortie, ou les deux, utilisez ce type. Vous pouvez importer des arborescences XML de plusieurs sources XML et de les éditer directement dans son éditeur de mapping, afin de vous éviter de les éditer manuellement un à un.
Le type de données Document est un des types de données fournis par Talend. Le type Document se sélectionne lorsque vous définissez le schéma correspondant à vos données dans le panneau Schema editor. Pour plus d'informations concernant le Schema editor, consultez Utiliser le Schema editor.
La capture d'écran ci-dessous montre un exemple de flux d'entrée, Customer, de type Document. Afin de le reproduire dans le Map editor, cliquez sur le bouton [+] pour ajouter une ligne du côté de l'entrée du Schema editor, renommez-la et sélectionnez Document dans la liste des types.
Dans la plupart des cas, le tXMLMap récupère le schéma du composant précédent ou suivant, par exemple, d'un tFileInputXML ou d'un scénario ESB, d'un tESBProviderRequest. Cela permet d'éviter les efforts manuels lors de la définition du type Document dans le flux XML à traiter. Cependant, pour continuer à modifier la structure XML ainsi que le contenu d'une ligne de type Document, vous devez utiliser le Map editor.
Note
Un flux Document comporte une arborescence XML personnalisée et représente un seul champ du schéma, pouvant contenir plusieurs champs de types différents. Pour plus d'informations concernant la configuration d'un schéma, consultez Onglet Basic settings.
Une fois une ligne de données définie comme type Document dans la table du flux de données correspondante, une arborescence XML de base est créée automatiquement pour refléter les détails de la structure. L'arborescence représente le nombre d'éléments minimum requis pour une arborescence XML valide, dans le tXMLMap :
L'élément root (racine) : il est l'élément requis par une arborescence XML à traiter et, si nécessaire, il est la base d'une arborescence XML plus sophistiquée.
L'élément loop (de boucle) : il détermine l'élément sur lequel s'effectue l'itération, afin de lire les données hiérarchiques dans une arborescence XML. Par défaut, l'élément racine est défini comme l'élément répétable.
Cette capture d'écran vous montre un exemple du flux d'entrée XML, Customer. À partir de la racine (root) XML créée, vous pouvez développer l'arborescence XML qui vous intéresse.
Pour ce faire, vous devez :
Importer l'arborescence XML personnalisée à partir de sources de type :
fichiers XML ou XSD (consultez Importer une structure XML à partir de fichiers XML et XSD).
Note
Lorsque vous importez un fichier XSD, vous créez la structure XML que décrit le fichier XSD.
connexions vers des fichiers XML créées et centralisées dans les métadonnées du Repository dans le Studio (consultez Importer une structure XML à partir du Repository).
Note
Si nécessaire, vous pouvez développer manuellement l'arborescence XML qui vous intéresse, à l'aide des options fournies dans le menu contextuel.
Définir l'élément répétable pour l'arborescence XML que vous créez. Vous pouvez définir autant de boucles que nécessaire. Pour cette étape, prenez en compte les situations suivantes :
Si vous avez créé plusieurs arborescences XML, vous devez définir un élément répétable pour chacune d'entre elles.
Si vous importez l'arborescence XML du Repository, l'élément répétable aura déjà été défini. Cependant, vous pouvez toujours le réinitialiser.
Pour plus d'informations, consultez . Définir ou réinitialiser un élément répétable pour une structure XML créée
Si nécessaire, vous pouvez continuer à modifier l'arborescence XML à l'aide des options fournies dans le menu contextuel. Le tableau suivant présente les opérations que vous pouvez effectuer via ces options.
Options |
Opérations |
---|---|
Create Sub-element et Create Attribute |
Ajoute des éléments ou des attributs à l'arborescence XML importée. Consultez également : Ajouter un sous-élément ou un attribut à une structure XML |
Set a namespace |
Ajoute et gère des espaces de noms donnés dans la structure XML importée. Consultez également : Gérer un espace de nommage |
Delete |
Supprime un élément ou un attribut. Consultez également : Supprimer un élément ou un attribut depuis la structure XML |
Rename |
Renomme un élément ou un attribut. |
As loop element |
Définit ou réinitialise un élément répétable. Les éléments répétables multiples et optionnels sont supportés. |
As optional loop | Cette option est disponible uniquement sur l'élément répétable que vous avez défini. Lorsque l'élément correspondant existe dans le fichier source, l'élément répétable facultatif fonctionne de la même manière qu'un élément répétable normal. Cependant, dans des cas d'utilisation réelle, avec des différences entre l'arborescence XML et la structure du fichier source, il est recommandé d'adapter l'arborescence XML au fichier source, pour améliorer les performances. |
As group element |
Dans la structure XML de sortie, définit un élément comme group element. Consultez également : Grouper les données de sortie |
As aggregate element |
Dans la structure XML de sortie, Définit un élément aggregate. Consultez également : Agréger les données de sortie |
Add Choice |
Configure l'élément Choice. Tous ses éléments enfants développés seront contenus dans cette déclaration. Cet élément provient des concepts XSD. Il permet au tXMLMap d'exécuter la fonction de l'élément Choice XSD afin de lire ou d'écrire un flux Document. Lorsque le tXMLMap traite un élément Choice, les éléments contenus dans sa déclaration ne sont pas écrits en sortie, à moins que leurs expressions de mapping soient définies de manière appropriée. NoteLe composant tXMLMap déclare automatiquement tout élément Choice défini dans le fichier XSD importé. |
Set as Substitution | Configure l'élément Substitution afin de spécifier l'élément substituable pour un élément Head donné, défini dans le XSD correspondant. L'élément de substitution permet au tXMLMap d'exécuter la fonction de l'élément Substitution XSD afin de lire ou d'écrire un flux Document. Lorsque le tXMLMap traite un élément de substitution, les éléments contenus dans sa déclaration ne sont pas écrits en sortie, à moins que leurs expressions de mapping soient définies de manière appropriée. NoteLe composant tXMLMap déclare automatiquement tout élément Substitution défini dans le fichier XSD importé. |
Les sections suivantes présentent de manière détaillée les processus de création d'arborescence XML.
Pour importer une arborescence depuis un fichier XML, suivez les instructions ci-dessous :
Dans la table d'entrée correspondante, cliquez-droit sur le nom de la colonne pour ouvrir le menu contextuel. Dans cet exemple, cliquez-droit sur la colonne Customer.
Dans ce menu, sélectionnez Import From File.
Dans la boîte de dialogue, parcourez votre système jusqu'au fichier XML que vous souhaitez utiliser pour fournir la structure XML, puis double-cliquez sur le fichier.
Pour importer une arborescence depuis un fichier XSD, suivez les instructions ci-dessous :
Dans la table d'entrée correspondante, cliquez-droit sur le nom de la colonne pour ouvrir le menu contextuel. Dans cet exemple, cliquez-droit sur la colonne Customer.
Dans ce menu, sélectionnez Import From File.
Dans la boîte de dialogue, parcourez votre système jusqu'au fichier XSD que vous souhaitez utiliser pour fournir la structure XML, puis double-cliquez sur le fichier.
Dans la boîte de dialogue qui apparaît, sélectionnez un élément racine dans la liste Root pour être la racine de votre arborescence XML puis cliquez sur OK. L'arborescence XML décrite par le fichier XSD importée est établie.
Note
La racine de l'arborescence XML est adaptable :
Lors de l'import d'une structure XML d'entrée ou de sortie depuis un fichier XSD, vous pouvez choisir un élément pour en faire la racine de votre structure XML.
Une fois qu'une structure XML a été importée, la balise root est automatiquement renommée avec le nom de la source XML. Pour modifier le nom de la racine manuellement, vous devez utiliser l'éditeur de schéma. Pour plus d'informations concernant cet éditeur, consultez Utiliser le Tree schema editor.
Puis spécifiez l'élément répétable de cette structure XML. Pour plus d'informations concernant le paramétrage de l'élément répétable, consultez Définir ou réinitialiser un élément répétable pour une structure XML créée.
Pour importer une structure XML :
Dans la table d'entrée correspondante, cliquez-droit sur le nom de la colonne pour ouvrir le menu contextuel. Dans cet exemple, cliquez-droit sur la colonne Customer.
Dans le menu contextuel, sélectionnez l'option Import From Repository.
Dans la boîte de dialogue qui s'ouvre alors, sélectionnez la connexion XML ou MDM souhaitée pour importer la structure XML correspondante.
Cette figure vous montre un exemple de connexion XML importée du Repository.
Note
Pour importer une arborescence XML du Repository, la connexion XML correspondante doit déjà avoir été créée. Pour plus d'informations concernant la création d'une connexion à un fichier XML dans le Repository, consultez Centraliser des métadonnées d'un fichier XML.
Cliquez sur OK pour valider la sélection.
La structure XML est créée et une boucle est automatiquement définie car la boucle avait déjà été spécifiée lors de la création de la connexion XML stockée dans le Repository.
Vous devez définir un minimum un élément répétable pour tous les flux de données XML n'ayant pas d'élément boucle déjà défini. S'ils en ont déjà un, vous devez réinitialiser l'élément répétable lorsque c'est nécessaire.
Pour définir ou réinitialiser un élément répétable, procédez comme suit :
Dans la structure XML créée, cliquez-droit sur l'élément que vous souhaitez définir comme élément boucle. Par exemple, vous souhaitez définir le nœud Customer comme élément boucle.
Dans le menu contextuel, sélectionnez As loop element afin de définir l'élément sélectionné comme élément boucle.
Une fois ceci effectué, l'élément sélectionné se voit ajouter le texte suivant : loop.
Note
Si vous fermez le Map Editor sans avoir défini les éléments répétables nécessaires, comme expliqué plus tôt dans ce scénario, l'élément racine est automatiquement défini comme élément répétable.
Dans la structure XML, vous pouvez ajouter manuellement un sous-élément ou un attribut à la racine ou à l'un des éléments.
Pour effectuer une de ces opérations, procédez comme suit :
Dans la structure que vous souhaitez modifier, cliquez-droit sur l'élément sur lequel vous souhaitez ajouter un sous-élément ou un attribut et sélectionnez Create Sub-Element ou Create Attribute en fonction de ce que vous souhaitez ajouter.
Dans l'assistant Create New Element, saisissez le nom du sous-élément ou de l'attribut à ajouter.
Cliquez OK pour valider la création du nouvel élément. Ce nouveau sous-élément ou attribut apparaît alors dans la structure XML.
Pour supprimer un élément ou un attribut d'une structure XML existante, procédez comme suit : Pour définir un espace de nommage :
Dans l'arborescence XML que vous souhaitez modifier, cliquez-droit sur l'élément ou l'attribut que vous souhaitez supprimer.
Dans le menu contextuel, sélectionnez Delete.
L'élément ou l'attribut sélectionné est supprimé, ainsi que tous les sous-éléments ou attributs qu'il contenait.
Vous pouvez définir et modifier un espace de nommage pour chacun des éléments des arborescences XML de ces flux d'entrée ou de sortie.
Pour définir un espace de nommage :
Dans la structure XML du flux d'entrée ou de sortie que vous souhaitez modifier, cliquez-droit sur l'élément auquel vous souhaitez associer un espace de nommage. Par exemple, dans l'arborescence XML de Customer, vous devez créer un espace de nommage pour le nœud racine.
Dans le menu contextuel, sélectionnez Set A Namespace. L'assistant Namespace dialog s'ouvre.
Dans cet assistant, saisissez l'URI à utiliser.
Si vous devez ajouter un préfixe à cet espace de nommage, cochez la case Prefix dans l'assistant et saisissez le préfixe à utiliser. Dans cet exemple, cochez la case et saisissez xhtml.
Cliquez sur OK pour valider l'espace de nommage.
Pour définir un espace de nommage :
Dans l'arborescence XML contenant l'espace de nommage à modifier, cliquez-droit sur l'espace de nommage pour ouvrir le menu contextuel.
Dans le menu, sélectionnez Change Namespace pour ouvrir l'assistant correspondant.
Saisissez la nouvelle valeur dans cet assistant.
Cliquez sur OK pour valider cette modification.
Le composant tXMLMap utilise un élément "group" pour regrouper les données de sortie selon certaines conditions données. Cela vous permet d'entourer de balises "group element" les éléments répondant à la condition.
Pour définir un élément "group", deux restrictions doivent être respectées :
le nœud racine ne peut être défini en tant qu'élément "group" ;
l'élément "group" doit être défini sur l'élément dont le sous-élément répétable dépend directement.
Note
L'option de configuration d'un élément "group" est visible à partir du moment où vous avez défini un élément répétable. Cette option est également invisible si un élément ne peut pas être configuré comme élément "group".
Une fois l'élément "group" défini, tous ses sous-éléments sauf la boucle sont utilisés comme conditions pour regrouper les données de sortie.
Vous devez créer avec soin l'arborescence XML pour une utilisation optimale d'un élément "group" donné. Pour plus d'informations concernant l'utilisation d'un élément "group", consultez tXMLMap sur https://help.talend.com.
Note
Le tXMLMap propose des éléments "group" et "aggregate" afin de classer les données dans la structure XML. Lorsque vous gérez une ligne de données XML, la différence de comportement est la suivante :
L'élément "group" traite toujours les données en un seul flux.
L'élément "aggregate" sépare ce flux en différents flux XML complets.
Pour définir un group element, procédez comme suit :
Dans l'arborescence XML de la sortie dans le Map editor, cliquez-droit sur l'élément que vous voulez définir comme group element.
Dans le menu contextuel qui s'ouvre, sélectionnez As group element.
Cet élément de la sélection devient le group element. La capture d'écran vous montre un exemple de l'arborescence XML avec le group element.
Pour révoquer un "group element" défini, procédez comme suit :
Dans l'arborescence XML de la sortie dans le Map editor, cliquez-droit sur l'élément que vous avez défini comme group element.
Dans le menu contextuel, sélectionnez Remove group element.
Le "group element" défini est révoqué.
Avec le tXMLMap, vous pouvez définir autant d'éléments "aggregate" que nécessaire dans l'arborescence XML de sortie afin de classer les données XML. Ce composant écrit les données classées, chaque classification devenant un flux XML complet.
Pour définir un élément en tant qu'élément "aggregate", cliquez-droit sur l'élément concerné dans l'arborescence XML du côté droit du Map editor puis, dans le menu contextuel, sélectionnez As aggregate element.
Cet élément devient l'élément "aggregate". Un texte lui est ajouté : aggregate. Un texte lui est ajouté : aggregate.
Pour révoquer la définition de l'élément "aggregate", cliquez-droit sur cet élément puis sélectionnez Remove aggregate element, dans le menu contextuel.
Note
Pour définir un élément "aggregate", assurez-vous que cet élément n'a pas d'enfant et que la fonctionnalité All in one est désactivée. L'option As aggregate element est disponible dans le menu contextuel si les deux conditions sont respectées. Pour plus d'informations concernant la fonctionnalité All in one, consultez Ecrire dans un document les éléments en sortie.
Pour un exemple d'utilisation de l'élément "aggregate" avec le tXMLMap, consultez la .
Note
Le composant tXMLMap propose les éléments "group" et "aggregate" pour classer les données dans une structure XML. Lors de la gestion d'une ligne de données (flux XML complet), la différence de comportement est la suivante :
L'élément "group" traite toujours les données dans un flux unique.
L'élément "aggregate" sépare ce flux en différents flux XML complets.