# XQuery/Expression FLWOR

* Introduction
* Installation
Exemples basiques
* HelloWorld
* Chargement de données
* Expression FLWOR
* Séquences
* Analyse syntaxique CSV
* Exemples XPath
* Expressions rationnelles
* Searching multiple collections
* Getting URL Parameters
* Getting POST Data
* Checking for Required Parameters
* Displaying Lists
* Extracting data from XHTML files
* Displaying data in HTML Tables
* Limiting Result Sets
* Filtering Words
* Saving and Updating Data
* Quantified Expressions
* Dates and Time
* Chaining Web Forms
Exemples intermédiaires
* Using XQuery Functions
* Creating XQuery Functions
* Returning the Longest String
* Net Working Days
* Tag Cloud
* String Analysis
* Manipulating URIs
* Parsing Query Strings
* Splitting Files
* Filling Portlets
* Filtering Nodes
* Limiting Child Trees
* Higher Order Functions
* Timing Fibonacci algorithms
* Using Intermediate Documents
* Formatting Numbers
* Uploading Files
* TEI Concordance
* Queries on Tables
* Namespace Constructors
Recherche
* Introduction to XML Search
* Basic Search
* Searching,Paging and Sorting
* Keyword Search
* Employee Search
* Incremental Search of the Chemical Elements
* Lucene Search
* Incremental Searching
* Advanced Search
* Open Search
* Auto-generation of Index Config Files
Interaction
* Adder
* Simple XForms Examples
* Navigating Collections
* Envoyer des e-mails

## Vues personnalisées

* HTML Table View
* Tree View
* Grouping Items
Transformation de documents XML complexes
* Transformation Styles
* Typeswitch Transformations
* Transformation idioms
* Generating Skeleton Typeswitch Transformation Modules
* Web XML Viewer
Rapports paginés
* Installing_the_XSL-FO_module
* Generating PDF from XSL-FO files
* XSL-FO Tables
* Converting HTML tables to XSL-FO tables
* XSL-FO Images

## Publication de contenu

* Publishing Overview
* Publishing to Subversion
Comparaison et fusion de XML
* Compare two XML files
* XML Differences
* Compare with XQuery
* Time Comparison with XQuery
* Synchronizing Remote Collections
* Finding Duplicate Documents

## Requêtes basées sur le temps

* Time Based Queries
* Timing a Query
Documents
* TEI Concordance
* TEI Document Timeline
* DocBook to HTML
* DocBook to PDF
* DocBook to ePub
* DocBook to Microsoft Word
* OpenOffice to HTML
* Office Open XML
XML Schemas
* XML Schema to Instance
* XML Schema to XForms
* XML Schema to SVG
* Caractères spéciaux
Liens avec d'autres langages
* Using intermediate MusicXML documents
* MusicXML to Arduino
* XQuery et Python
* XQuery SQL Module
* XQuery depuis SQL
* List OWL Classes
* Excel et XML
* AJAX Navigating Collections
* AJAX Employee Search
* AJAX Incremental Search of the Chemical Elements
* AJAX DOJO data
* XML vers SQL
* Simple RSS reader
* XHTML et Voice
* XQuery et XSLT
* Basic Authentication
* Digest Authentication
* OAuth
* Wikipedia Page scraping
* Wikipedia Lookup
* Wikipedia Events RSS
* Wiki weapons page
* Wikibook index page
* Wikibook list of code links
* Freebase
* Google Docs
Virtualisation
* Graph Visualization
* Graphing from RDF
* Dataflow diagrams
* Sequence Diagrams
* Example Sequencer
Google
* Google Charts
* Google Chart Sparkline
* Google Chart Bullet Bar
* Histogram of File Sizes
Page Scraping
* Overview of Page Scraping Techniques
* Page scraping and Yahoo Weather
* UK shipping forecast
* BBC Weather Forecast
* Page scraping and Mashup
* Simple RSS reader
* Multiple page scraping and Voting behaviour
* Link gathering
* REST interface definition
* Caching and indexes
Mapping
* Google Geocoding
* String Analysis#Location_Mapping
* Flickr GoogleEarth
* Nationalgrid and Google Maps
* SMS tracker

## Timelines

* Creating a Timeline
* Timelines of Resource
* TEI Document Timeline
Web sémantique
* DBpedia with SPARQL - Football teams
* DBpedia with SPARQL and Simile Timeline - Album Chronology
* DBpedia with SPARQL - Stadium locations
* The Emp-Dept case study
** XML to RDF
** SPARQL Tutorial
** SPARQL interface
* Graphing Triples
* SPARQLing Country Calling Codes
* Southampton Pubs
* Alphabet Poster
* Simile Exhibit
* Latent Semantic Indexing
Outils de développent
* Sitemap for Content Management System
* Uptime monitor
* XQuery IDE
* Image Library
* XML Schema to Instance
* Lorum Ipsum text
* XQuery and XML Schema
* Generating XQDocs
* Call Graphs
* System Properties
* Environment Variables
Validation
* Validating a document
* Validation using a Catalog
* Validating a hierarchy
* Validation with Schematron

## Path Analysis

* All Paths
* All Leaf Paths
Securité
* Login and Logout
* URL Driven Authorization
* Digital Signatures
* Changing Permissions on Collections and Resources

## Unit Testing Tools

* XUnit Testing
* XUnit Annotations
Études de cas
* Fizzbuzz
* Project Euler
* Topological Sort
* Slideshow
* Sudoku
* Pachube feed
* World Temperature records
* UWE StudentsOnline
Modules eXistdb
* Installing the XSL-FO module
* Setting HTTP Headers
* Database Utilities
* Get zipped XML file
* Unzipping an Office Open XML docx file
* Installing eXgit
* File Transfer Client
* FTP Client
* Digest Authentication
* UK shipping forecast
* Convert XML to JSON
* Lucene_Search
* Sending E-mail
* Basic Feedback Form
* Using the Math Module
* Using the Memcached Module
* Execute External Process
* Getting URL Parameters
* Getting POST Data
* Checking for Required Parameters
* Manipulating URIs
* Parsing Query Strings
* Adder
* XQuery Batch Jobs
* Sequences Module
* Basic Session Management
* Subversion
* String_Analysis
* Registered Modules
* Registered Functions
* Dynamic Module Loading
* Higher Order Functions
* Timing Fibonacci algorithms
* XMP data
* Basic Authentication
* Validating a document
* Saving_and_Updating_Data
* Splitting_Files
* Generating xqDoc-based XQuery Documentation
* Installing the XSL-FO module
* Generating PDF from XSL-FO files
* XSL-FO Tables
* XSL-FO Images
* XSL-FO SVG
* Using Triggers to Log Events
* Using Triggers to assign identifiers
* Sending E-mail
* Inserting and Updating Attributes
* Updates and Namespaces
* URL Rewriting Basics
* Reindex a Collection
* eXist Replication
* eXist Crib sheet
Annexes
* DataDirect XQuery
* Microsoft SQL Server 2005
* NetKernel
* Oracle Berkeley DB XML
* Stylus Studio
* XQilla
* Gotchas
* Ah-has
* Introduction
* Installation
Exemples basiques
* HelloWorld
* Chargement de données
* Expression FLWOR
* Séquences
* Analyse syntaxique CSV
* Exemples XPath
* Expressions rationnelles
* Searching multiple collections
* Getting URL Parameters
* Getting POST Data
* Checking for Required Parameters
* Displaying Lists
* Extracting data from XHTML files
* Displaying data in HTML Tables
* Limiting Result Sets
* Filtering Words
* Saving and Updating Data
* Quantified Expressions
* Dates and Time
* Chaining Web Forms
Exemples intermédiaires
* Using XQuery Functions
* Creating XQuery Functions
* Returning the Longest String
* Net Working Days
* Tag Cloud
* String Analysis
* Manipulating URIs
* Parsing Query Strings
* Splitting Files
* Filling Portlets
* Filtering Nodes
* Limiting Child Trees
* Higher Order Functions
* Timing Fibonacci algorithms
* Using Intermediate Documents
* Formatting Numbers
* Uploading Files
* TEI Concordance
* Queries on Tables
* Namespace Constructors
Recherche
* Introduction to XML Search
* Basic Search
* Searching,Paging and Sorting
* Keyword Search
* Employee Search
* Incremental Search of the Chemical Elements
* Lucene Search
* Incremental Searching
* Advanced Search
* Open Search
* Auto-generation of Index Config Files
Interaction
* Adder
* Simple XForms Examples
* Navigating Collections
* Envoyer des e-mails

## Vues personnalisées

* HTML Table View
* Tree View
* Grouping Items
Transformation de documents XML complexes
* Transformation Styles
* Typeswitch Transformations
* Transformation idioms
* Generating Skeleton Typeswitch Transformation Modules
* Web XML Viewer
Rapports paginés
* Installing_the_XSL-FO_module
* Generating PDF from XSL-FO files
* XSL-FO Tables
* Converting HTML tables to XSL-FO tables
* XSL-FO Images

## Publication de contenu

* Publishing Overview
* Publishing to Subversion
Comparaison et fusion de XML
* Compare two XML files
* XML Differences
* Compare with XQuery
* Time Comparison with XQuery
* Synchronizing Remote Collections
* Finding Duplicate Documents

## Requêtes basées sur le temps

* Time Based Queries
* Timing a Query
Documents
* TEI Concordance
* TEI Document Timeline
* DocBook to HTML
* DocBook to PDF
* DocBook to ePub
* DocBook to Microsoft Word
* OpenOffice to HTML
* Office Open XML
XML Schemas
* XML Schema to Instance
* XML Schema to XForms
* XML Schema to SVG
* Caractères spéciaux
Liens avec d'autres langages
* Using intermediate MusicXML documents
* MusicXML to Arduino
* XQuery et Python
* XQuery SQL Module
* XQuery depuis SQL
* List OWL Classes
* Excel et XML
* AJAX Navigating Collections
* AJAX Employee Search
* AJAX Incremental Search of the Chemical Elements
* AJAX DOJO data
* XML vers SQL
* Simple RSS reader
* XHTML et Voice
* XQuery et XSLT
* Basic Authentication
* Digest Authentication
* OAuth
* Wikipedia Page scraping
* Wikipedia Lookup
* Wikipedia Events RSS
* Wiki weapons page
* Wikibook index page
* Wikibook list of code links
* Freebase
* Google Docs
Virtualisation
* Graph Visualization
* Graphing from RDF
* Dataflow diagrams
* Sequence Diagrams
* Example Sequencer
Google
* Google Charts
* Google Chart Sparkline
* Google Chart Bullet Bar
* Histogram of File Sizes
Page Scraping
* Overview of Page Scraping Techniques
* Page scraping and Yahoo Weather
* UK shipping forecast
* BBC Weather Forecast
* Page scraping and Mashup
* Simple RSS reader
* Multiple page scraping and Voting behaviour
* Link gathering
* REST interface definition
* Caching and indexes
Mapping
* Google Geocoding
* String Analysis#Location_Mapping
* Flickr GoogleEarth
* Nationalgrid and Google Maps
* SMS tracker

## Timelines

* Creating a Timeline
* Timelines of Resource
* TEI Document Timeline
Web sémantique
* DBpedia with SPARQL - Football teams
* DBpedia with SPARQL and Simile Timeline - Album Chronology
* DBpedia with SPARQL - Stadium locations
* The Emp-Dept case study
** XML to RDF
** SPARQL Tutorial
** SPARQL interface
* Graphing Triples
* SPARQLing Country Calling Codes
* Southampton Pubs
* Alphabet Poster
* Simile Exhibit
* Latent Semantic Indexing
Outils de développent
* Sitemap for Content Management System
* Uptime monitor
* XQuery IDE
* Image Library
* XML Schema to Instance
* Lorum Ipsum text
* XQuery and XML Schema
* Generating XQDocs
* Call Graphs
* System Properties
* Environment Variables
Validation
* Validating a document
* Validation using a Catalog
* Validating a hierarchy
* Validation with Schematron

## Path Analysis

* All Paths
* All Leaf Paths
Securité
* Login and Logout
* URL Driven Authorization
* Digital Signatures
* Changing Permissions on Collections and Resources

## Unit Testing Tools

* XUnit Testing
* XUnit Annotations
Études de cas
* Fizzbuzz
* Project Euler
* Topological Sort
* Slideshow
* Sudoku
* Pachube feed
* World Temperature records
* UWE StudentsOnline
Modules eXistdb
* Installing the XSL-FO module
* Setting HTTP Headers
* Database Utilities
* Get zipped XML file
* Unzipping an Office Open XML docx file
* Installing eXgit
* File Transfer Client
* FTP Client
* Digest Authentication
* UK shipping forecast
* Convert XML to JSON
* Lucene_Search
* Sending E-mail
* Basic Feedback Form
* Using the Math Module
* Using the Memcached Module
* Execute External Process
* Getting URL Parameters
* Getting POST Data
* Checking for Required Parameters
* Manipulating URIs
* Parsing Query Strings
* Adder
* XQuery Batch Jobs
* Sequences Module
* Basic Session Management
* Subversion
* String_Analysis
* Registered Modules
* Registered Functions
* Dynamic Module Loading
* Higher Order Functions
* Timing Fibonacci algorithms
* XMP data
* Basic Authentication
* Validating a document
* Saving_and_Updating_Data
* Splitting_Files
* Generating xqDoc-based XQuery Documentation
* Installing the XSL-FO module
* Generating PDF from XSL-FO files
* XSL-FO Tables
* XSL-FO Images
* XSL-FO SVG
* Using Triggers to Log Events
* Using Triggers to assign identifiers
* Sending E-mail
* Inserting and Updating Attributes
* Updates and Namespaces
* URL Rewriting Basics
* Reindex a Collection
* eXist Replication
* eXist Crib sheet
Annexes
* DataDirect XQuery
* Microsoft SQL Server 2005
* NetKernel
* Oracle Berkeley DB XML
* Stylus Studio
* XQilla
* Gotchas
* Ah-has
[ Modifier le sommaire ]

## Méthode

Pour créer un rapport contenant les éléments d'une séquence, on peut utiliser une expression FLWOR XQuery basique, afin d'itérer à travers chacun. Les cinq parties d'une expression FLWOR sont :
* for (optionnel) : spécifie les éléments de la séquence à sélectionner.
* let (optionnel) : crée temporairement les noms à utiliser en retour.
* where (optionnel) : limite les éléments retournés.
* order (optionnel) : change l'ordre des résultats.
* return (requis) : spécifie la structure des données retournées.
Soit l'échantillon du fichier de livres catalog.xml suivant :
Voici un exemple simple d'une expression FLWOR pour renvoyer les titres et prix des livres classés par titre :
Cette expression FLWOR XQuery retourne tous les livres qui ont un prix supérieur à 50,00 $ (l'exemple en contient juste un, mais deux après la boucle). Les clauses where restreignent les résultats aux livres au-dessus de 50,00 $. Les résultats sont classés par titre et le résultat est une nouvelle séquence d'éléments livre avec prix et titre.

## Utilisation de la fonction "to" pour générer une page de valeurs

Il est également possible d'exprimer une plage de valeurs d'un nombre à un autre en plaçant le mot clé "to" entre deux nombres dans une séquence.
Le code suivant génère une liste de valeurs entre 1 et 10 :

## Utilisation de la fonction "at" comme compteur

"at $compteur" ajoute un compteur pour chaque élément dans une boucle FLOWR :

## Comparaison de FLWOR avec la programmation procédurale pour les boucles

Dans la programmation procédurale traditionnelle (JavaScript, Java, .Net, Perl, PHP et Python), chaque boucle est exécutée séquentiellement, l'une après l'autre. Par contre la boucle FLWOR exécute chaque itération en parallèle, et aucune communication n'est autorisée entre les threads. Par conséquent il n'est pas possible d'incrémenter les variables "traditionnellement".