Diferencia entre revisiones de «XForms/Listas de Selección a partir de archivos»

Contenido eliminado Contenido añadido
m Bot: Correcciones ortográficas; cambios triviales
m Corregidos errores ortográficos y eliminados algunos extranjerismos innecesarios.
 
Línea 1:
== Motivacion ==
 
Las personas que diseñan formularios frecuentemente tienen que mantener muchas tablas de coldigocódigo. dichas tablas de codigocódigo pueden cambiar frecuentemente o pudepuede haber tambientambién procesos de actualización de bases de datos centralizadas. AsiAsí que quieres que cada formulario dinamicamentedinámicamente obtenga el contenido de datos de un archivo XML o de un webserviceservicio web.
 
Este programa de ejemplo demuestra comocómo leer una lista de codigoscódigos con etiquetas directamente de un archivo o webserviceservicio web. En este ejemplo el archivo que contiene los codigoscódigos es simplemente un archivo XML bien formado en el mismo directorio que el formulario.
 
== Enlace a la aplicacionaplicación funcionando ==
 
Nota: no soy el autor original de este ejemplo solamente lo tomo con fines ilustrativos.<br />
[http://www.agencexml.com/xsltforms/select-from-file.xml Lista de selección a partir de archivos]
 
== Cargando una instancia de XML de un archivo local o un webserviceservicio web ==
 
El siguiente fragmento de codigocódigo usualmente ubicado en la etiqueta HTML "head", demuestra comocómo leer datos XML desde un archivo en el mismo directorio que el formulario usando el atributo "src" de la instancia.
 
=== Cargando una tabla de codigocódigo simple a una instancia simple ===
<big>
<source lang="xml">
Línea 24:
</source>
</big>
=== Cargando datos de un Webserviceservicio web ===
 
Es común tener en un solo Webserviceservicio cargadas todas las tablas de datos. A este servicio se le pueden pasar parametrosparámetros tales como el nombre de la tabla de datos, asiasí como una persona es parte de un grupo. Esto puede reducir la lista de opciones para listas largas.
<big>
<source lang="xml">
Línea 38:
 
=== Cargando todos los datos en una sola instancia ===
elEl problema de cargar codigoscódigos individualmente en instancias individuales es que debes realizar un get HTTP por cada una de las tablas de datos. Esto no es un problema para formularios con una o dos listas de seleccionselección pequeñas. Pero para formularios largos con muchas listas de selección éstosestos get pueden retrasar el tiempo de respuesta del formulario. La solucionsolución es cargar todas las tablas en una sola instancia con una sola solucitudsolicitud get HTTP. cadaCada tabla de datos puede ser entonces seleccionada de esta instancia.
 
<big>
Línea 50:
</big>
 
En este segundo ejempoejemplo todos los datos en el formulario completo estan siendo generados por un sevicio del Registro de MetadataMetadatos (MDR por la sigla en inglés). losLos datos retornados por este servidor son una coleccioncolección de codigoscódigos para cada control de seleccionselección del formulario.
 
Esto buscarabuscará por un archivo XML bien formado en el directorio actual y lo cargaracargará en la instancia del modelo.
 
NoteseNótese que en este caso al modelo se le da un id. Esto es necesario para permitir que multiplesmúltiples tablas de datos sean leidasleídas en su propio y separado modelo.
 
== Previsualización ==
El usuario selecciona el valor delde drop-downla listlista desplegable. elEl valor en la salida es actualizado inmediatamente.
[[Archivo:Listaseleccion.jpg|frame|center]]
Notese que la etiqueta en la imagen no es la misma que en el esquema.
Línea 220:
== Extrayendo datos de un XML REST webservice ==
 
Se puede reemplazar el atributo '''src''' con una ruta directamente a un servicio web XML REST webservice. por ejemplo, si se ponen todas las tablas de datos en los recursos de un proyecto, la ruta lucirialuciría como asiasí:
<big>
<source lang="xml">
Línea 226:
</source>
</big>
o si los datos del sistemas estanestán almacenados en un solo archivo XML y se tiene un wrapper XQuery
or if your system codes are stored in a single XML file and you have a wrapper XQuery
<big>
Línea 275:
 
=== Ejemplo Select1 ===
una vez los datos estanestán cargados en el modelo, cada uno de los controles de select pueden obtener sus datos directamente desde el modelo usando el elemento ''<xf:itemset>''. Itemset trabaja igual que Repeat y usa nodeset (no usa ref) para obtener todos sus valores. AcaAcá hay un ejemplo de como obtener el conjunto de datos desde la instancia de tabla de datos.
<big>
<source lang="xml">
Línea 287:
</source>
</big>
Notese que el predicado [code-table-name='MyElementCode'] pondra unicamente los elementos para ese codigocódigo en la lista de seleccionselección.
 
[[Categoría:Programación]]