# 1

# Syntaxe XML ve správě dat

Kořenovým uzlem stromu XML musí být `<data>`, který může obsahovat jednu nebo více definic zdrojů dat. Každý zdroj dat je definován uzly `<query>` nebo `<table>`, přičemž oba přijímají následující volitelné atributy:

„id“ pro určení identifikátoru zdroje dat, který se použije při odkazování z jednoho zdroje dat na druhý;

„title“ pro určení názvu

Samozřejmě je možné použít naráz značku `<query>` i `<table>` v jedné specifikaci zdroje dat.

# Exportované proměnné

Každý zdroj dat exportuje nějaké proměnné, které je možné použít v jiném zdroji dat a tak vytvořit závislosti. Když je zdroj dat spuštěn, je obsah těchto exportovaných proměnných znovu nastaven podle řádku aktuálně vybraného v zobrazení tabulky s výsledky. Pokud není vybrán žádný řádek, zůstane proměnná nenastavena.

Jakýkoliv zdroj dat, který závisí na proměnné je znovu spuštěn, pokud se proměnná změní a v případě, že je proměnná nenastavena, je výsledkem spuštění zdroje dat prázdná datová sada.

# Značka `<query>`

Značku `<query>` použijte ke specifikaci příkazu SQL SELECT, který je přímo obsahem této značky. Odkazu na jiný zdroj dat dosáhnete použitímproměnných v příkazu SELECT.

<data> <query title="Zákazníci" id="customers"> SELECT id, name FROM customers where name like ##name::string </query> <query title="Podrobnosti o zákazníkovi" id="cust_details"> SELECT * FROM customers WHERE id=##customers@id::int </query> </data>

Například předchozí specifikace XML definuje dva zdroje dat:

datový zdroj `zakaznici`, který vybírá některé z polí z tabulky zakaznici a který závisí na řetězcové proměnné s názvem `jmeno`. Tato proměnná bude nastavena při spuštění zdroje dat, protože není exportována žádným zdrojem dat v této specifikaci.

datový zdroj `detail_zakaznika`, který vybírá všechny podrobnosti o zákazníkovi určením pomocí jeho ID. Tento druhý zdroj dat závisí na tom předchozím, protože proměnná `zakaznici@id` je exportována ze zdroje dat `zakaznici`.

Spuštěním těchto zdrojů dat se vytvoří dva pohledy na tabulky: jeden, ve kterém si můžete vybírat zákazníka a jeden, který zobrazuje všechny vlastnosti vybraného zákazníka.

## Exportované proměnné

Každý ze zdrojů dat definovaný značkou `<query>` exportuje následující proměnné pro každý ze sloupců výsledné datové sady (typ proměnné je stejný jako typ sloupce):

`<ID zdroje dat>@<pozice sloupce>` kde se pozice sloupce počítá od 1

`<ID zdroje dat>@<název sloupce> pokud je sloupec zdroje dat sloupcem tabulky`

# Značka `<table>`

Značku `<table>` použijte k definici zdroje dat, který bude zobrazovat obsah tabulky. Tato značka:

vyžaduje atribut „name“, který představuje název tabulky.

může mít atribut „id“, který odpovídá identifikátoru zdroje dat. Pokud není přítomen, přiřadí se ID automaticky.

může obsahovat značku `<depend>`, která definuje závislost na jiném zdroji dat s atributem „foreign_key_table“ definujícím název tabulky, ve které jsou cizí klíče použity k určení závislosti, a atribut „id“ může určovat ID zdroje dat, pokud je jiný, než výše zmíněná tabulka

Značka `<depend>`, která pro zdroj dat z tabulky definuje závislost na jiném zdroji dat z tabulky:

vyžaduje atribut „foreign_key_table“ definující název tabulky, ve které jsou cizí klíče použity k určení závislosti

může mít atribut „id“, který odpovídá identifikátoru odkazovaného zdroje dat. Pokud není přítomen, může závislost selhat v případě, že neexistuje žádný zdroj dat, jehož ID je atributem „foreign_key_table“.

může obsahovat jednu nebo více značek `<column>`, které obsahují definice sloupců určujících cizí klíče, které se mají použít. To je nutné, pokud je cizích klíčů více a může být vynecháno, pokud je jen jeden možný cizí klíč. Vyjmenované sloupce jsou z tabulky, ve které jsou cizí klíče.

<data> <table id="the_cust" name="zakaznici"/> <table name="objednavky"> <depend id="the_cust" foreign_key_table="zakaznici"> <column>id_zakaznika</column> </depend> </table> </data>

Například předchozí specifikace XML definuje dva zdroje dat:

zdroj dat `zakaznici`, který vybírá veškerý obsah z tabulky zakaznici.

zdroj dat `objednavky`, který vybírá z obsahu tabulky `objednavky` řádky, které odpovídají řádku v tabulce `zakaznici`. Výběr se provádí pomocí cizího klíče v tabulce objednavky, která je navázána přes sloupec „objednavky.id_zakaznika“ a primární klíč tabulky zakaznici. Atribut „id“ ve značce `<depend>` je v tomto případě nutný k určení odkazovaného zdroje dat.

Poznámky k tomuto příkladu:

nemusíte specifikovat vazební pole v cizím klíči provazujícím tabulky `objednavky` a `zakaznici`

identifikátorům zdrojů dat byly přiřazeny názvy vybraných tabulek, protože nebyl zadán žádný atribut „id“ pro značku `<table>`.

## Exportované proměnné

Každý zdroj dat definovaný značkou `<query>` exportuje následující proměnné pro každý ze sloupců tabulky (typ proměnné je stejný jako typ sloupce):

`<ID zdroje dat>@<název sloupce>`

`<ID zdroje dat>@<pozice sloupce>` kde se pozice sloupce počítá od 1