Anexar nodos

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Acciones > Actualizar datos >

Anexar nodos

Cuando se desencadena el evento, la acción Anexar nodos anexa nodos nuevos como primer o último conjunto de nodos secundarios de los nodos seleccionados con la expresión XPath del campo Anexar al nodo. Se puede anexar un solo nodo, una secuencia de nodos o un fragmento entero de una estructura. Estos nodos anexados se construyen con la sintaxis constructura XML de XQuery. Con esta sintaxis XQuery se pueden construir los siete tipos de nodos XML: element, attribute, text, document, comment, processing-instruction y namespace.

MTDAppendNode01

Nota:la diferencia entre la acción Insertar nodos y Anexar nodos es que Insertar nodos añade los nodos antes de los nodos seleccionados, mientras que Anexar nodos añade los nodos como secundarios de los nodos seleccionados (pueden ser sus primeros secundarios o sus últimos secundarios).

 

Ubicación de los nodos anexados

Los nodos nuevos que se anexan como primer o último conjunto de nodos secundarios del nodo que devuelve la expresión XPath del campo Anexar al nodo. En el ejemplo de la imagen anterior, los nodos nuevos se anexan como último conjunto de nodos secundarios del nodo de contexto (el elemento Products seleccionado con la expresión XPath current()). En la definición de la acción hay dos botones de opción que sirven para seleccionar si los nodos se anexan como primer conjunto de secundarios o como último conjunto de secundarios.

 

Nodos nuevos

Los nodos nuevos se pueden introducir como constructores XML directos, tal y como se puede ver más arriba en la imagen:

<MyElement-01 myatt="value">Element Content</MyElement-01>

 

Esto anexa el elemento MyElement-01 después del último elemento Product:

MTDAppendNode02

También se puede usar una expresión de localización XPath para anexar un nodo (y todos sus descendientes) desde una fuente de página. Por ejemplo:

$XML2/Row

 

 

Además, también se pueden usar constructores de nodos calculados de XQuery. Por ejemplo:

element MyElement-01 {xs:string("Element Content")}

attribute myatt{"value"} 

 

 

La expresión XPath que aparece a continuación produce el resultado que puede verse más abajo, que se anexa como último conjunto de secundarios del elemento Product, es decir, después del último nodo secundario actual (el último nodo Product).

 

<MyElement-01 myatt="value">Element Content</MyElement-01>,

element MyElement-02 {"Element Content"},

element MyElement-03 {element MyElement-04 {"Element Content"}},

element MyElement-05{attribute myatt{"value"}, element MyElement-06{}} 

MTDAppendNode03

 

Quitar nodos insertados de su ubicación original

Si los nodos anexados se obtienen de una de las fuentes de página del proyecto, puede eliminar los nodos de su ubicación original. Para ello marque la casilla quitar nodos anexados de su ubicación actual. Si se construyen nodos nuevos directamente (es decir, sin hacer referencia a las fuentes de página del proyecto) y se marca esta casilla, no se producirá cambio alguno en las fuentes de página.

 

Veamos un ejemplo de uso de la opción quitar nodos anexados de su ubicación actual. Imagine que tenemos esta estructura: $XML1/products/product/@name y queremos ordenar los nodos product en función del valor de @name. Esto se puede hacer con la definición de acción Anexar nodos que aparece a continuación:

MTDAppendNodeRemoveOriginal

Anexamos los nodos nuevos como último conjunto de nodos del nodo $XML1/products.
Los nodos nuevos se generan con la expresión XPath for $i in $XML1/products/product order by $i/@name return $i. La cláusula order by ordena la secuencia de elementos product antes de recorrerlos.
La opción quitar nodos anexados de su ubicación actual quita la secuencia original de productos sin ordenar, lo cual nos deja con la secuencia ordenada que se anexó.

 

Variable $MT_TargetNode

El nodo de la definición de la acción Anexar nodos al que se deben anexar nodos secundarios se guarda automáticamente en la variable integrada $MT_TargetNode de MobileTogether Designer. Esta variable se puede usar en la segunda expresión XPath de la definición, tal y como se hizo en esta imagen:

MTDAppendNode04

La segunda expresión XPath utiliza el nodo de destino ($MT_TargetNode) para buscar el último elemento secundario del nodo de destino y después utiliza el nombre de ese elemento secundario para generar el nombre del elemento nuevo.

element {concat("MyNew"name($MT_TargetNode/*[last()]))} {"Element Content"} 

 

El resultado de esta acción Anexar nodos (cuando el nodo de destino es $XML1/Products) se puede ver en esta imagen:

MTDAppendNode05

 


© 2019 Altova GmbH