Table des matières
XQuery: Foire aux Questions
Syntaxe
- Les mots clés doivent être en lettres minuscules (ex.
for
,in
,let
,where
,return
,and
,or
, … ) - La clause return s'écrit sans parenthèses, par exemple :
return expression
return <nom_element> {expression} </nom_element>
- la fonction
doc(“fichier.xml”)
permet de lire un fichier du répertoire conrant
- Une expression XPath peut contenir un prédicat entre crochets.
doc("bib.xml")//book[publisher=$p]
Commentaires
- accolade avec 2 tirets:
{-- un commentaire --}
- Dans l'outil BaseX le raccourci Ctrl-k commente/décommente une ligne
Distinct
- La fonction distinct-values(…) produit un ensemble de chaînes de caractères sans doubles.
Dans l'exemple suivant, $x est une chaine de caractères (concaténation du nom et du prénom d'un auteur), ce n'est pas un élément author.
for $x in distinct-values( document("bib.xml")//author )
Position
La fonction xpath position()
donne le rang d'un élément (i.e., le n-ième fils).
Requêtes imbriquées
Il est possible d'imbriquer des expressions FLWOR dans la clause return
d'une requête ou dans une clause let
.
Tri
- ajouter une clause
order by
nom_element, … avant la clause return.
A ne pas confondre avec l'opérateur sort by
(nom_element) servant à trier une collection. L'opérateur sort by est ajouté dans les clauses for ou let.
Comparaison de valeurs avec l'opérateur d'égalité: ''a eq b''
- si le type de a et b est simple (simpleType), alors
a eq b
est vrai ssi leur valeurs sont égales. - si le type de a et b est complexe (complexType), alors
a eq b
est vrai ssixs:string(a) eq xs:string(b)
Comparaison générale de deux ensembles : ''A = B''
Lorsque les opérandes A et B sont des ensembles. A = B est vrai ssi il existe au moins un elt a dans A et un elt b dans B tels que a eq b
Comparaison "en profondeur" de deux éléments:
utiliser la fonction deep-equal(a, b)
au lieu de l'opérateur d'égalité =
Comparaison des identifiants de 2 éléments
a is b
est vrai ssi a représente le même élément que b
Est-ce que Xquery a un prédicat exists comme en SQL?
Oui, la fonction s'écrit exists( expression )
Comment visualiser les données dans BaseX ?
Menu Visualization, cocher Folder. Possibilité de naviguer en zoomant. Cliquer sur le bouton “Home”(logo représentant une maison) pour revenir à la racine du document.
Message d'erreur rencontré: context item not defined
- erreur dans le noeud contextuel d'une expression xpath. Le premier terme d'une expression xpath est erroné.
- Vérifier la présence des guillemets dans les expressions xpath commençant par document(“ fichier “)
- Vérifier la présence du $ au début des expressions xpath commençant par un nom de variable.
Retour vers TME XQuery : séance 1 (ancienne page) ou TME XQuery : Séance 2 (ancienne page)