Cómo funciona el ejemplo Agregar espacio de nombres
En la primera, segunda y cuarta prueba se usa el componente Agregar espacio de nombres ubicado en la canalización NamespaceSampleReceivePipeline. Toma como entrada un documento sin espacio de nombres en el nodo raíz, como el siguiente:
<CanonicalOrder OrderID="OrderID_0" OrderDate="OrderDate_1" Status="Status_2">
En la tabla siguiente se muestran los valores de propiedad establecidos para el componente Agregar espacio de nombres .
Propiedad | Tipo | Value |
---|---|---|
ExtractionNodeXPath | estática | (vacío) |
NamespaceBase | estática | http://schemas.microsoft.biztalk.esb.test.com/test |
NamespacePrefix | estática | esbTest |
Separador | estática | / |
XPaths | Dinámica | /CanonicalOrder/@OrderID|/CanonicalOrder/@OrderDate |
La configuración de propiedad que se muestra en la tabla hace que el componente busque en el documento XML ejecutando las dos consultas XPath /CanonicalOrder/@OrderID y /CanonicalOrder/@OrderDate (las dos consultas especificadas para la propiedad XPaths, separadas por un carácter de "canalización"). Estas consultas devuelven los valores de los atributos OrderID y OrderDate del nodo raíz del documento; en este ejemplo, los dos valores son "OrderID_0" y "OrderDate_1".
A continuación, el componente usa estos valores y los valores de las demás propiedades para construir el nuevo espacio de nombres raíz. Combina NamespaceBase, NamespacePrefix, Separator y los valores de las dos consultas XPath con el formato siguiente:
xmlns:{NamespacePrefix}="{NamespaceBase}{Separator}{XPaths[1]}{Seperator}
{XPaths[2]}{Separator}...{XPaths[n]}"
Esto genera el nuevo espacio de nombres, como se muestra aquí:
xmlns:esbTest="http://schemas.microsoft.biztalk.esb.test.com/test
/OrderID_0/OrderDate_1"
Por lo tanto, el documento actualizado después del procesamiento por la canalización NamespaceSampleReceivePipeline es el siguiente:
<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">
Usar la propiedad ExtractionNodeXPath
De forma predeterminada, el componente Agregar espacio de nombres usa el elemento raíz del documento XML dentro del mensaje al agregar información de espacio de nombres y prefijo. Si solo desea usar un subconjunto del documento XML como cuerpo del mensaje (útil en determinados escenarios de sobre o cuando solo una parte de un documento entrante tiene relevancia), puede establecer la propiedad ExtractionNodeXPath para forzar que el componente Agregar espacio de nombres busque el elemento especificado para usarlo como mensaje resultante. Por ejemplo, si sabe que un mensaje CanonicalOrder recibido tendrá solo un elemento OrderDetails relevante para los consumidores de este mensaje contenido en él, puede establecer la propiedad ExtractionNodeXPath para especificar la ruta de acceso al elemento OrderDetails . Puede ver un ejemplo de este proceso en la prueba Add Via Extraction to Pass-through (Agregar extracción a través) descrita anteriormente.
Nota
La propiedad ExtractionNodeXPath debe ser un XPath que devuelva solo un elemento. El componente generará una excepción si el resultado no es un elemento o si la consulta XPath devuelve más de un elemento.