Insertar nodos

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

Inicio >  Acciones > Actualizar datos >

Insertar nodos

Cuando se desencadena el evento, la acción Insertar nodos inserta nodos nuevos antes de los nodos seleccionados por medio de la expresión XPath del campo Insertar antes del nodo. La acción puede insertar un solo nodo, una secuencia de nodos o un fragmento entero de una estructura. Estos nodos insertados se construyen con la sintaxis constructora 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.

MTDInsertNode01

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 insertados

Los nodos nuevos se insertan antes de los nodos que devuelve la expresión XPath del campo Insertar nodos antes del nodo. En la imagen anterior los nodos nuevos ser insertan antes del primer elemento Product (seleccionado con la expresión XPath Product[1]). El nodo de contexto es el primario de Product, un nodo llamado Products. Si no se usa el predicado [1], entonces la expresión XPath devolverá todos los secundarios Product de Products y los nodos nuevos se insertarán después de cada elemento Product.

 

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 inserta el elemento MyElement-01 antes del primer elemento Product:

MTDInsertNode02

También se puede usar una expresión de localización XPath para insertar 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 inserta antes del primer elemento 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{}} 

MTDInsertNode03

 

Quitar nodos insertados de su ubicación original

Si los nodos insertados 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 insertados 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.

 

Variable $MT_TargetNode

El nodo de la definición de la acción Insertar nodos antes del cual se deben insertar 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:

MTDInsertNode04

La segunda expresión XPath crea el nodo nuevo usando el mismo nombre que el nodo de destino ($MT_TargetNode) como parte del nombre del nodo nuevo.

element {concat("MyNew"name($MT_TargetNode))} {"Element Content"} 

 

El resultado de esta acción Insertar nodos puede verse en esta imagen:

MTDInsertNode05

 


© 2019 Altova GmbH