Altova MobileTogether Designer

La acción Bucle (imagen siguiente) recorre una secuencia de elementos definidos con la opción Por cada. Dentro del bucle puede definir qué conjunto de acciones se deben llevar a cabo durante cada iteración. Por ejemplo, en la imagen siguiente, por cada iteración se lleva a cabo la acción Anexar al nodo. Dentro del bucle se indica una acción Interrumpir bucle si se cumple una condición.

MTDLoop

La secuencia que recorre el bucle se define mediante expresiones XPath en la opción Por cada. Es muy importante tener en cuenta estos aspectos:

 

Por cada: su valor puede ser una secuencia nombrada en la expresión XPath (p. ej.: 1 to 7) o puede obtenerse de una estructura XML (p. ej. \$XML1/Products/Product selecciona una secuencia formada por todos los elementos Product de la estructura \$XML1). Si el bucle no contiene una acción Interrumpir bucle, el bucle finalizará cuando se completen todas las iteraciones.

Repetir variable: se trata de la variable que almacena el elemento de la secuencia que está recorriendo el bucle. La variable de bucle se identifica por medio de un nombre. Para darle un nombre a la variable de bucle haga doble clic detrás del signo \$ e introduzca el nombre. En la imagen anterior, por ejemplo, la variable de bucle se llama MyLoop. Se le hace referencia como a cualquier otra variable XPath, es decir, con el signo \$ delante del nombre (\$MyLoop). La variable estará dentro del ámbito del bucle. Esto significa que no podrá hacer referencia a la variable desde expresiones XPath que estén fuera del bucle. Por ejemplo, observe que en la imagen se hace referencia a la variable de bucle en la opción nodos nuevos de la acción Anexar al nodo. Esta referencia es válida porque la acción Anexar al nodo se creó dentro del bucle y, por tanto, la variable está dentro del ámbito. La variable \$MyLoop que se ve en la imagen anterior contendrá el nodo Product que se está recorriendo.

 

Nota:si la variable del bucle usa nodos de una estructura de fuente de página, entonces esta estructura queda bloqueada y no la pueden modificar las acciones que contenga la acción Bucle. En el ejemplo de más arriba, la estructura \$XML1 se bloquea mientras se está procesando el bucle. Las modificaciones tienen lugar en otra estructura de la fuente de página (\$XML2): los nodos nuevos que se añadan con la acción Anexar al nodo se añaden a \$XML2. Si quiere modificar la estructura que recorre el bucle puede hacerlo de la siguiente manera: en lugar de recorrer los nodos de la estructura directamente, se recorre una secuencia de números que está vinculada con la secuencia de nodos de la estructura. Por ejemplo, en lugar de recorrer la secuencia de nodos Product, podemos recorrer un rango de números que esté vinculado con la secuencia de nodos. Podemos cambiar la expresión XPath de la opción Por cada \$XML1/Products/Product por la expresión for \$i in 1 to count(\$XML1/Products/Product) return \$i. Ahora el bucle recorre una secuencia de números. Dentro del bucle podemos tener acceso al nodo Product actual con la expresión XPath: \$XML1/Products/Product[\$i].

 

Las acciones definidas en el ejemplo de la imagen duplican los primeros cinco elementos Product en otra estructura. Cuando se carga la página, la acción Bucle recorre los elementos \$XML1/Products/Product. Durante cada iteración, el nodo Product actual se almacena en la variable de bucle MyLoop. Después se añade este nodo Product (de la variable \$MyLoop) como el último nodo secundario del nodo \$XML2/Products. El bucle continúa hasta copiar el quinto elemento Product de \$XML1/Products en \$XML2/Products, como muestra la siguiente imagen.

MTDLoopDataCopy

Se sale del bucle cuando se ha completado o si existe una condición que desencadena una acción Interrumpir bucle (ver apartado siguiente).

 

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 una 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.

© 2017-2023 Altova GmbH