Freigeben über


Funktionsweise des Beispiels „Die Add Namespace-Komponente“

Der erste, zweite und vierte Test verwendet die Komponente Namespace hinzufügen , die sich in der NamespaceSampleReceivePipeline-Pipeline befindet. Sie verwendet als Eingabe ein Dokument ohne Namespace auf dem Stammknoten, z. B. die folgenden:

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

In der folgenden Tabelle sind die Eigenschaftswerte aufgeführt, die für die Komponente Namespace hinzufügen festgelegt wurden.

Eigenschaft Typ Wert
ExtractionNodeXPath statischen (leer)
NamespaceBase statischen http://schemas.microsoft.biztalk.esb.test.com/test
NamespacePrefix statischen esbTest
Trennzeichen statischen /
XPaths Dynamisch /CanonicalOrder/@OrderID|/CanonicalOrder/@OrderDate

Die in der Tabelle angezeigten Eigenschafteneinstellungen führen dazu, dass die Komponente das XML-Dokument durchsucht, indem die beiden XPath-Abfragen /CanonicalOrder/@OrderID und /CanonicalOrder/@OrderDate ausgeführt werden (die beiden Abfragen, die für die XPaths-Eigenschaft angegeben sind, getrennt durch ein Pipezeichen). Diese Abfragen geben die Werte der Attribute OrderID und OrderDate des Stammknotens des Dokuments zurück. In diesem Beispiel sind die beiden Werte "OrderID_0" und "OrderDate_1".

Die Komponente verwendet dann diese Werte und die Werte der anderen Eigenschaften, um den neuen Stammnamespace zu erstellen. Es kombiniert die NamespaceBase, namespacePrefix, das Trennzeichen und die Werte aus den beiden XPath-Abfragen im folgenden Format:

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

Dadurch wird der neue Namespace erzeugt, wie hier gezeigt:

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

Daher lautet das aktualisierte Dokument nach der Verarbeitung durch die NamespaceSampleReceivePipeline-Pipeline wie folgt:

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

Verwenden der ExtractionNodeXPath-Eigenschaft

Standardmäßig verwendet die Komponente Namespace hinzufügen das Stammelement des XML-Dokuments in der Nachricht, wenn Namespace- und Präfixinformationen hinzugefügt werden. Wenn Sie nur eine Teilmenge des XML-Dokuments als Nachrichtentext verwenden möchten (nützlich in bestimmten Umschlagszenarien oder wenn nur ein Teil eines eingehenden Dokuments relevant ist), können Sie die ExtractionNodeXPath-Eigenschaft festlegen, um zu erzwingen, dass die Add Namespace-Komponente das angegebene Element zur Verwendung als resultierende Nachricht sucht. Wenn Sie beispielsweise wissen, dass eine empfangene CanonicalOrder-Nachricht nur ein OrderDetails-Element enthält, das für Consumer dieser Nachricht relevant ist, können Sie die ExtractionNodeXPath-Eigenschaft festlegen, um den Pfad zum OrderDetails-Element anzugeben. Ein Beispiel für diesen Prozess finden Sie im weiter oben beschriebenen Test Add Via Extraction to Pass-through .

Hinweis

Die ExtractionNodeXPath-Eigenschaft muss ein XPath sein, der nur ein Element zurückgibt. Die Komponente löst eine Ausnahme aus, wenn das Ergebnis kein Element ist oder wenn die XPath-Abfrage mehr als ein Element zurückgibt.