Condividi tramite


Funzionamento dell'aggiunta del componente spazio dei nomi

I primi, secondi e quarto test usano il componente Aggiungi spazio dei nomi situato nella pipeline NamespaceSampleReceivePipeline. Accetta come input un documento senza spazio dei nomi nel nodo radice, ad esempio quanto segue:

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

Nella tabella seguente vengono illustrati i valori delle proprietà impostati per il componente Aggiungi spazio dei nomi .

Proprietà Type valore
ExtractionNodeXPath Statica (vuoto)
NamespaceBase Statica http://schemas.microsoft.biztalk.esb.test.com/test
NamespacePrefix Statica esbTest
Separatore Statica /
Xpath Dynamic /CanonicoOrder/@OrderID|/CanonicoOrder/@OrderDate

Le impostazioni delle proprietà visualizzate nella tabella causano la ricerca del componente nel documento XML eseguendo le due query XPath /CanonicalOrder/@OrderID e /CanonicalOrder/@OrderDate (le due query specificate per la proprietà XPaths , separate da un carattere "pipe"). Queste query restituiscono i valori degli attributi OrderID e OrderDate del nodo radice del documento; in questo esempio i due valori sono "OrderID_0" e "OrderDate_1".

Il componente usa quindi questi valori e i valori delle altre proprietà per costruire il nuovo spazio dei nomi radice. Combina lo spazio dei nomiBase, lo spazio dei nomiPrefix, il separatore e i valori delle due query XPath nel formato seguente:

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

In questo modo viene generato il nuovo spazio dei nomi, come illustrato di seguito:

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

Di conseguenza, il documento aggiornato dopo l'elaborazione dalla pipeline NamespaceSampleReceivePipeline è il seguente:

<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">  

Uso della proprietà ExtractionNodeXPath

Per impostazione predefinita, il componente Aggiungi spazio dei nomi usa l'elemento radice del documento XML all'interno del messaggio quando si aggiungono informazioni sullo spazio dei nomi e sui prefissi. Se si vuole usare solo un sottoinsieme del documento XML come corpo del messaggio (utile in determinati scenari di busta o quando solo una parte di un documento in ingresso ha rilevanza), è possibile impostare la proprietà ExtractionNodeXPath per forzare il componente Add Namespace per cercare l'elemento specificato per l'uso come messaggio risultante. Ad esempio, se si sa che un messaggio Canonico ricevuto avrà un solo elemento OrderDetails pertinente per i consumer di questo messaggio contenuto in esso, è possibile impostare la proprietà ExtractionNodeXPath per specificare il percorso dell'elemento OrderDetails . È possibile visualizzare un esempio di questo processo nel test Add Via Extraction to Pass-through descritto in precedenza.

Nota

La proprietà ExtractionNodeXPath deve essere una XPath che restituisce un solo elemento. Il componente genererà un'eccezione se il risultato non è un elemento o se la query XPath restituisce più di un elemento.