# XQuery/HelloWorld

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

## Script XML

Pour exécuter ce script sur le serveur installé en introduction, le coller :
* Sur eXist, dans http://localhost:8080/exist/apps/eXide/index.html, et cliquer sur "Eval".
* Sur baseX, dans la fenêtre Editor, puis cliquer sur la flèche verte (play).
Sinon il est possible de le lancer sur un serveur distant : http://www.cems.uwe.ac.uk/xmlwiki/helloWorld.xq.

### Discussion

Le programme crée une variable temporaire appelée $message, et lui assigne la valeur chaine de caractère Hello World!. Le résultat représente la valeur de cette variable dans un XML de résultat.

### Remarques

* Si on oublie les accolades autour de la variable, on obtient son nom au lieu de sa valeur : http://www.cems.uwe.ac.uk/xmlwiki/helloWorld_1.xq.
* Si on omet les balises de résultat, elles ne figurent pas dans la réponse du serveur : http://www.cems.uwe.ac.uk/xmlwiki/helloWorld_2.xq.

## Texte brut

XQuery peut renvoyer du texte brut grâce aux options de sérialisation qui définissent le type MIME.
Par exemple pour afficher un message dans un fichier texte .xq, spécifier la méthode de sérialisation "text" et le type "text/plain" :
Résultat : http://www.cems.uwe.ac.uk/xmlwiki/Basics/helloWorld_3.xq.

### Résultat attendu

Selon le navigateur, cela va proposer de télécharger le fichier, ou l'afficher directement :

### Méthodes d'exécution

* Dans l'IDE oXygen cela peut être réalisé en sélectionnant l'icône "transform" de la barre d'outils.
* Dans eXist, le fait de copier un fichier via l'OS dans C:\eXist-db\webapp\WEB-INF\data\fs\db ne l'ajoutera pas au serveur. Il faut cliquer depuis le tableau de bord du logiciel dans "Collection", puis sur l'icône "Upload resources". Par exemple avec le fichier téléchargé précédemment, une fois importée on peut y accéder via : http://localhost:8080/exist/rest/db/helloWorld_3.xq.
    Cette URL est composée de trois éléments importants :
** Il s'agit du chemin par défaut de la configuration eXist.
** Le mot "rest" figurant avant "/db" dénote l'utilisation de l'interface REST (par opposition à WebDAV, Atom ou SOAP). Pour les modifier il faudrait utiliser l'URL rewriting du serveur web.
** Par contre, le port "8080" suivi du contexte "exist" peuvent être changés en éditant le fichier $EXIST_HOME/tools/jetty/etc/conf.xml, puis en redémarrant le serveur logiciel. Par exemple en forme courte : http://localhost/rest/db/helloWorld_3.xq.
* Dans BaseX, il faut créer une base, l'ouvrir, puis y ajouter du contenu :
Mais sur Windows, pour éviter les conversions de chemin avec le système de fichier, mieux vaut passer par le menu Database, puis New....