Partager via


Fonctionnement de l’exemple Ajout d’espace de noms

Les premier, deuxième et quatrième tests utilisent le composant Ajouter un espace de noms situé dans le pipeline NamespaceSampleReceivePipeline. Il prend comme entrée un document sans espace de noms sur le nœud racine, par exemple :

<CanonicalOrder OrderID="OrderID_0" OrderDate="OrderDate_1" Status="Status_2">  

Le tableau suivant montre les valeurs de propriété définies pour le composant Ajouter un espace de noms .

Propriété Type Valeur
ExtractionNodeXPath statique (empty)
NamespaceBase statique http://schemas.microsoft.biztalk.esb.test.com/test
NamespacePrefix statique esbTest
Séparateur statique /
XPaths Dynamique /CanonicalOrder/@OrderID|/CanonicalOrder/@OrderDate

Les paramètres de propriété affichés dans le tableau entraînent la recherche du composant dans le document XML en exécutant les deux requêtes XPath /CanonicalOrder/@OrderID et /CanonicalOrder/@OrderDate (les deux requêtes spécifiées pour la propriété XPaths, séparées par un caractère « canal »). Ces requêtes retournent les valeurs des attributs OrderID et OrderDate du nœud racine du document ; Dans cet exemple, les deux valeurs sont « OrderID_0 » et « OrderDate_1 ».

Le composant utilise ensuite ces valeurs et les valeurs des autres propriétés pour construire le nouvel espace de noms racine. Il combine NamespaceBase, NamespacePrefix, le séparateur et les valeurs des deux requêtes XPath au format suivant :

xmlns:{NamespacePrefix}="{NamespaceBase}{Separator}{XPaths[1]}{Seperator}  
                         {XPaths[2]}{Separator}...{XPaths[n]}"  

Cela génère le nouvel espace de noms, comme illustré ici :

xmlns:esbTest="http://schemas.microsoft.biztalk.esb.test.com/test  
               /OrderID_0/OrderDate_1"  

Par conséquent, le document mis à jour après traitement par le pipeline NamespaceSampleReceivePipeline est le suivant :

<esbTest:CanonicalOrder xmlns:esbTest=  
    "http://schemas.microsoft.biztalk.esb.test.com/test/OrderID_0  
    /OrderDate_1" OrderID="OrderID_0" OrderDate="OrderDate_1"   
    Status="Status_2">  

Utilisation de la propriété ExtractionNodeXPath

Par défaut, le composant Ajouter un espace de noms utilise l’élément racine du document XML dans le message lors de l’ajout d’informations sur l’espace de noms et le préfixe. Si vous souhaitez utiliser uniquement un sous-ensemble du document XML comme corps du message (utile dans certains scénarios d’enveloppe ou quand seule une partie d’un document entrant a de la pertinence), vous pouvez définir la propriété ExtractionNodeXPath pour forcer le composant Add Namespace à rechercher l’élément spécifié à utiliser comme message résultant. Par exemple, si vous savez qu’un message CanonicalOrder reçu n’aura qu’un seul élément OrderDetails pertinent pour les consommateurs de ce message qu’il contient, vous pouvez définir la propriété ExtractionNodeXPath pour spécifier le chemin d’accès à l’élément OrderDetails . Vous pouvez voir un exemple de ce processus dans le test Add Via Extraction to Pass-through décrit précédemment.

Notes

La propriété ExtractionNodeXPath doit être un XPath qui ne retourne qu’un seul élément. Le composant déclenche une exception si le résultat n’est pas un élément ou si la requête XPath retourne plusieurs éléments.