MATA MAIN Il linguaggio di programmazione XQuery definisce FLWOR (pronunciato flower - in italiano fiore - anche abbreviato FLWR) come un'espressione che supporta iterazione e binding sulle variabili dei risultati intermedi.

FLWOR è un acronimo, dove ogni lettera è l'iniziale di una clausola: FOR - crea una sequenza di nodi LET - collega una sequenza di nodi ad una variabile WHERE - filtra i nodi che soddisfano una condizione booleana ORDER BY - ordina i nodi RETURN - viene valutata una volta per ogni nodo

FLWOR è vagamente analogo al costrutto SELECT-FROM-WHERE del linguaggio SQL e può essere usato per fornire funzionalità analoghe al join ai documenti XML.

Esempio for $d in doc("Dipartimenti.xml")//numero_dipartimento let $e := doc("Impiegati.xml")//impiegato[numero_dipartimento = $d] where count($e) >= 10 order by avg($e/stipendio) descending return <dipartimento_grande> { $d, <lavoratori>{count($e)}</lavoratori>, <stipendio_medio>{avg($e/stipendio)}</stipendio_medio>

</dipartimento_grande>

La prima colonna della query XQuery mostra le parole-chiave FOR, LET, WHERE, ORDER BY e RETURN del paradigma FLWOR. In parole povere, questa potrebbe essere letta come "selezionare tutti i dipartimenti che hanno più di dieci impiegati, ordina questi dipartimenti in ordine decrescente sulla base dello stipendio medio, e ritornare un rapporto sul numero di dipartimenti, sul conteggio dei lavoratori e sullo stipendio medio di ogni dipartimento grande".

Il risultato potrebbe essere: <dipartimento_grande> <numero_dipartimento>17</numero_dipartimento> <lavoratori>25</lavoratori> <stipendio_medio>12500</stipendio_medio> </dipartimento_grande> <dipartimento_grande> <numero_dipartimento>24</numero_dipartimento> <lavoratori>18</lavoratori> <stipendio_medio>11327</stipendio_medio> </dipartimento_grande> <dipartimento_grande> <numero_dipartimento>3</numero_dipartimento> <lavoratori>32</lavoratori> <stipendio_medio>10725</stipendio_medio> </dipartimento_grande>

Collegamenti esterni

Categoria:XML