# 1

# La sintaxis XML del administrador de datos

La raíz del árbol XML debe ser una etiqueta`<data>`, que permite contener una o más definiciones de fuentes de datos. Cada fuente de datos se define por nodos `<query>` o `<table>`, y ambos aceptan los siguientes atributos opcionales:

«id» para especificar el ID de cadena de una fuente de datos, usado cuando se enlazan unas fuentes de datos con otras;

«title» para especificar un título.

Por supuesto, es posible usar ambas etiquetas `<query>` o `<table>` en la misma especificación de fuentes de datos.

# Variables exportadas

Cada fuente de datos exporta algunas variables que se otras fuentes de datos pueden reutilizar para introducir una dependencia. Cuando se ejecutan las fuentes de datos, los contenidos de esas variables exportadas se reinician dependiendo de la fila seleccionada actualmente en la vista tabular resultante. si no hay ninguna fila seleccionada, la variable pierde su valor.

Cualquier fuente de datos que dependa de una variable se ejecuta de nuevo cuando cambia la variable, y en el caso de que la variable no tenga valor, el resultado de la ejecución de la fuente de datos es un conjunto de datos vacío.

# La etiqueta `<query>`

Use la etiqueta `<query>` para especificar una sentencia SQL SELECT, así como los contenidos de la etiqueta. Puede enlazar otras fuentes de datos usando variables en el SELECT de SQL.

<data> <query title="Customers" id="customers"> SELECT id, name FROM customers where name like ##name::string </query> <query title="Customer's details" id="cust_details"> SELECT * FROM customers WHERE id=##customers@id::int </query> </data>

Por ejemplo, la especificación XML anterior define dos orígenes de datos:

la fuente de datos `customers` que selecciona algunos campos de la tabla clientes, y que depende de una variable de cadena llamada `name`. Esta variable se debe establecer cuando las fuentes de datos se ejecutan porque, en esta especificación, ninguna fuente de datos la exportará.

la fuente de datos `cust_details` que selecciona todos los detalles de un cliente especificado usando su ID. Esta segunda fuente de datos depende de la anterior porque la variable `customers@id` se exporta desde la fuente de datos `customers`.

Ejecutar esta especificación de fuentes de datos creará dos vistas tabulares: una donde puede seleccionar un cliente, y otra que muestra todos los atributos del cliente seleccionado.

## Variables exportadas

Cada fuente de datos definida por una etiqueta `<query>` exporta la siguiente variable para cada columna del conjunto de datos resultante (el tipo de la variable es el mismo que el de la columna):

`<data source ID>@<column position>` donde la posición de la columna empieza en 1

`<data source ID>@<column name> si la columna del conjunto de datos es una columna de la tabla`

# La etiqueta `<table>`

Use la etiqueta `<table>` para definir una fuente de datos que mostrará los contenidos de la tabla. Esta etiqueta:

requiere el atributo «nombre» que representa el nombre de la tabla.

puede tener un atributo «id» correspondiente al ID de la fuente de datos. Si no está presente, se asignará un ID automáticamente.

puede contener una etiqueta `<depend>` que define la dependencia de otra fuente de datos con el atributo «foreign_key_table» definiendo el nombre de la tabla en la que hay claves ajenas usadas para determinar la dependencia, y el atributo «id» puede especificar el ID de una fuente de datos si es diferente del de la tabla mencionada.

La etiqueta `<depend>` que, para una fuente de datos de una tabla, define la dependencia de otra fuente de datos de la tabla:

requiere el atributo «foreign_key_table» que define el nombre de la tabla de la que son claves externa para determinar la dependencia

puede tener un atributo «id» correspondiente al ID de la fuente de datos referenciada. Si no se proporciona, la dependencia puede fallar si no hay ninguna fuente de datos cuyo ID sea el atributo «foreign_key_table».

puede contener una o más etiquetas `<column>` cuyo contenido define las columnas para identificar la clave externa que usar; esto es necesario si hay varias claves externas, y se puede omitir si sólo hay una clave externa posible. Las columnas listadas son las de la tabla donde existe la clave externa.

<data> <table id="the_cust" name="customers"/> <table name="orders"> <depend id="the_cust" foreign_key_table="customers"> <column>customer_id</column> </depend> </table> </data>

Por ejemplo, la especificación XML anterior define dos orígenes de datos:

la fuente de datos `customers` que selecciona todos los contenidos de la tabla clientes.

la fuente de datos `orders` que selecciona entre los contenidos de la tabla `orders` las filas que corresponden a una fila en la tabla `customers` usando la clave ajena en la tabla «pedidos» que involucra a la columna «orders.customer_id» y la clave primaria de la tabla «clientes». El atributo «id» de la etiqueta `<depend>` es necesario para identificar la fuente de datos referenciada.

Vea en este ejemplo que:

no tiene que especificar los cmapos involucrados en la clave externa que une las tablas `orders` y `customers`

los ID de las fuentes de datos se han asignado como nombres a las tablas seleccionadas, y no se ha especificado ningún atributo «id» para las etiquetas `<table>`.

## Variables exportadas

Cada origen de datos definido por una etiqueta `<query>` exporta la siguiente variable para cada columna de la tabla (el tipo de la variable es el mismo que el de la columna):

`<data source ID>@<column name>`

`<data source ID>@<column position>` donde la posición de la columna empieza en 1