# XQuery/Introduction

* 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 ]

## XQuery et la recommandation W3C

XQuery est un langage de programmation fonctionnelle ce qui implique que ses variables sont immuables. Une autre limitation de la recommandation W3C est l'interdiction de passer une fonction en paramètre d'une autre, toutefois certaines implémentations comme eXist l'accepte.
Historiquement XQuery fût créé en 2007 car le XSLT apparu en 1999 était trop difficile à apprendre, conjointement avec XSLT 2.0 avec lequel il partage XPath 2.0.
Il faut savoir que comme beaucoup de systèmes XQuery exploitent les index des documents, ils sont significativement plus rapides que les transformations XSLT.
Par ailleurs, des études ont montré que les personnes connaissant SQL peuvent rapidement apprendre XQuery. Une fois que les développeurs ont compris la structure des instructions FLWOR, les classements et sélections de valeurs distinctes sont du gâteau.

## Bénéfices de XQuery

* Expressivité : XQuery fonctionne avec toutes sortes de structures de données et sa nature récursive le rend idéal pour les requêtes sur les arbres et les graphes.
* Concision : les instructions XQuery sont plus courte que les équivalentes en SQL et XSLT.
* Flexibilité : XQuery marche avec des données hiérarchiques et tabulaires.
* Consistance : XQuery possède une syntaxe consistante et peut être utilisé avec d'autres standards XML comme XML Schema.

## Avantages sur SQL

Les constructions XQuery sont similaires à SQL pour :
* Classement des résultats : XQuery et SQL proposent la clause order by.
* Sélection de valeurs distinctes : XQuery et SQL permettent de spécifier l'unicité des résultats.
* Lignes restreintes : XQuery et SQL ont une clause WHERE X=Y.
Toutefois, XQuery possède deux avantages sur SQL :
* Il ne renvoie pas juste des tables, mais des structures d'arbre arbitraires, comme des balises XHTML utilisables dans des pages web.
* Il permet des recherches sur des attributs simples, comme la recherche de noms de colonnes.

## Avantages sur XSLT

L'idée reçu que XQuery serait mieux pour les requêtes XML et XSLT pour les transformation XML est surfaite. En réalité les deux méthodes peuvent transformer les XML.
XSL exprime les règles de transformation en XML, au lieu de définir une syntaxe plus appropriée pour cela, ressemblant plus au PHP, Perl, Python, voire SQL. D'ailleurs, les serveurs XML comme eXistdb et MarkLogic utilisent XQuery pour les opérations des serveurs web.
La première technique de transformation en XML de XQuery est appelée typeswitch. Une expression typeswitch regarde rapidement le type du node, et en fonction de cela opère ce qui a été spécifié pour ce type. Cela veut dire que chaque élément distinct d'un document peut être soumis à sa propre règle, stockée dans les fonctions modulaires XQuery. Le typeswitch permet donc avec le même langage, de programmer les requêtes pour la base de données les opérations du serveur web, et les transformations de document. Ces routines sont de surcroit plus facile à construire, tester et maintenir que du XSLT.