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 modifica

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 modifica

  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica