Altova MobileTogether Designer

Fuentes de página de la página de nivel superior

Inicio Anterior Inicio Siguiente

La página de nivel superior presenta tres fuentes de página: \$XML1, \$DB1, y \$DB2 . Estos se muestran y se gestionan en el Panel "Fuentes de página" (consulte la siguiente imagen)

MTDDBCDataSrcMain01

El nodo de contexto XPath de la página es el nodo raíz \$XML1. Esto significa que todas las expresiones XPath de esta página tienen \$XML1 como nodo contextual. Para ubicar un nodo en cualquiera de las otras estructuras (\$DB1 y \$DB2 son los nodos raí de estas estructuras), inicie la ruta del localizador XPath con su nodo raíz correspondiente.

 

La primera fuente de página: \$XML1

La primera fuente de página se creó en forma de XML vacío y editable. El nodo raíz \$XML1 contiene un elemento raíz (root), que tiene dos atributos (DesiredOffice y DesiredYear). El nodo raíz, \$XML1, se definió mediante el menú contextual como un nodo contextual XPath para la página dos. No existe un archivo predeterminado así que no se pueden importar datos en la estructura.

MTDDBCDataSrcXML1

Esta fuente de página (\$XML1)se crea para mantener las selecciones de cuadros combinados del usuario final:

 

El atributo DesiredOffice mantiene la selección Office del usuario final.

El atributo DesiredYear mantiene la selección Year del usuario final.

 

Para poder mantener los datos seleccionados en los cuadros combinados, los nodos de los dos atributos se asocian con los cuadros combinados en forma de enlaces de origen. Cada uno de los enlaces de origen de las dos páginas se crea arrastrando el nodo del atributo en su cuadro combinado correspondiente (consulte la siguiente captura de pantalla del simulador).

MTDDBCSimulatorComboBoxes01

A cada uno de los nodos se le ha dado un valor incial cuando la página se carga (mediante el comando del menú contextual Garantizar que existe al cargar (valor XPath). Esto se debe a que el valor del nodo aparece en la cuadro combinado asociado y queremos que el cuadro combinado tenga una selección inicial (consulte la siguiente captura de pantalla del simulador). Las expresiones XPath que proporcionan los valores iniciales son las siguientes:

 

 

Para @DesiredOffice: if (count(\$DB1/DB/RowSet/Row) > 0) then \$DB1/DB/RowSet/Row[1]/@id else ""
Si existen uno más registros en \$DB1, se define el valor @id del primer registro como el valor de @DesiredOffice. Si no existen registros, se configura la cadena vacía como el valor de @DesiredOffice.
 

Para @DesiredYear: min(distinct-values(\$DB2/DB/RowSet/Row[@Office=\$XML1/root/@DesiredOffice]/@Year))
En \$DB2, se seleccionan todos los registros de los "office" seleccionados en @DesiredOffice, se recoge los años únicos de estos registros y luego se selecciona el año con el mínimo valor numérico.

 

Además hemos especificado que el nodo @DesiredOffice está rellenado correctamente en el momento que la página cargue. Esto se realiza con la acción Actualizar nodo en el evento AlCargarPágina de la página de nivel superior (Página | Acciones de la página).

MTDDBCOnPageLoad

La acción actualiza el nodo @DesiredOffice. Si ésta es la primera vez que la página se carga, entonces el ID de la primera Oficina se pasa como el contenido de @DesiredOffice. De lo contrario el valor es el que ya se encuentra presente en @DesiredOffice. El resultado de esto es que durante una ejecución, no se cambia el valor en @DesiredOffice, pero el valor se inicia cuando se carga la página por primera vez.

 

La segunda fuente de página: \$DB1

La segunda fuente de página (\$DB1) es la tabla Offices de la base de datos MS Access, OfficeSales_DB.mdb Los datos para esta fuente de página provienen de la tabla Office de la BD .

MTDDBCDataSrcDB1

La tabla "Offices" presenta dos columnas (id y City) que está representadas en la estructura jerárquica de datos como atributos del elemento Fila, que se corresponde con una fila de la tabla de la BD. Debido a que la columna id es una clave primaria y que no se pueden cambiar los valores en él, no podemos editar esta columna. Sin embargo, necesitamos crear los valores id para filas nuevas. Automatizaremos esto escribiendo la expresión XPath para generar el valor id para cada fila nueva que se cree. La expresión XQuery se inserta usando el comando del menú contextual Garantizar que existe al cargar (valor XPath):

 

let \$all := \$DB1/DB/RowSet/Row/@id

let \$ids := remove(\$allindex-of(\$all""))

let \$id := if (empty(\$ids)) then 1 else max(\$ids) + 1

return \$id

 

Observe que el valor id es el único número ID de "office", mientras que el valor City es el nombre de la ciudad en la que la se encuentra "office". Esto es importante porque mientras que el id se usa para identificar de manera única una "office" (usando el nodo \$XML1/root/@DesiredOffice), con el nombre de la ciudad se identifica una "office" por el usuario final.

 

El nodo OriginalRowSet debe crearse (mediante el menú contextual) si ha de editarse cualquier del fuente de página. Esto es necesario de tal forma que OriginalRowSet mantiene los datos originales mientras que RowSet mantiene los datos (editados) actuales. Los dos conjuntos de datos (el original y el editado) son necesarios de tal forma que el MobileTogether Designer puede decir la diferencia entre lo que es nuevo, lo que está actualizado y lo que se ha borrado y de esta forma pueda hacer los cambios necesarios en el momento adecuado. También es necesario que pueda crear claves primarias nuevas con instrucción let de XQuery. Cuando la base de datos esté actualizada, los datos actualizados se convierten en los nuevos datos originales y se introduce el nodo OriginalRowSet.

 

La tercera fuente de página: \$DB2

La tercera fuente de página (\$DB2) es la tabla "Ventas" en la base de datos de MS Access, OfficeSales_DB1.mdb. Los datos para esta estructura jerárquica provienen de la tabla de ventas de la BD.

MTDDBCDataSrcDB2

Cada fila de la tabla "Ventas" presenta cinco columnas (id , Licenses, Month, Year, y Office). La fila de la tabla de la BD se corresponde con el elemento Row de la estructura de fuente de página. Las columnas de la tabla se corresponden con los atributos del elemento Row. El atributo id tiene la expresión XQuery para generar el valor id para cada nueva fila que se crea. La expresión XQuery se inserta haciendo uso del comando menú contextual. Garantizar que existe al cargar (valor XPath):

 

let \$all := \$DB1/DB/RowSet/Row/@id

let \$ids := remove(\$allindex-of(\$all""))

let \$id := if (empty(\$ids)) then 1 else max(\$ids) + 1

return \$id

 

El nodo OriginalRowSet se debe crear (mediante el menú contextual) si ha de editarse cualquier nodo de fuente de página. Esto es necesario para que el elemento OriginalRowSet mantenga los datos originales mientras que el elemento RowSet mantiene los datos (editados).

 

© 2017-2023 Altova GmbH