Anexar nodo(s)
Cuando se desencadena el evento, la acción Anexar nodo(s) 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.
Nota: | La diferencia entre la acción Insertar nodo(s) y Anexar nodo(s) es que Insertar nodo(s) añade los nodos antes de los nodos seleccionados, mientras que Anexar nodo(s) 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:
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{}}
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:
•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:
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 la acción Anexar nodo(s) (cuando el nodo de destino es $XML1/Products) se puede ver en esta imagen:
Funciones de extensión de MobileTogether
MobileTogether cuenta con distintas funciones de extensión XPath creadas específicamente para usarlas en los diseños de MobileTogether. Algunas de ellas son especialmente útiles para ciertas acciones en concreto. Por ejemplo, mt-available-languages() devuelve los idiomas en que está disponible la solución y se podría usar, por ejemplo, con la acción Cuadro de mensaje. Si alguna función es especialmente relevante para esta acción, aparece a continuación. Para ver una lista completa de funciones de extensión y sus descripciones consulte Funciones de extensión de MobileTogether.