GraphClick
iLocalize
Unite
Barbouillon
xFractal
ProVoc
XS
AudioXplorer

Archives
Developpeurs

Online-Store
Support
home

Recherches XML

Les recherches XML offrent les mêmes fonctionnalités que les fonctions XML élémentaires, mais sous un format plus compact. Une recherche se présente sous forme de chaîne de caractère appliquée à une balise initiale.

Composantes

La chaîne peut être composée des éléments donnés dans le tableau suivant avec la fonction élémentaire correspondante:

* stringFromContentsOfTag:
.attr attribute:"attr" ofTag:
/name firstTagIn: named:"name"
//name tagsIn: named:"name"
../name parentTagOf: named:"name"
# count:

Exemples

>>date["../head/author*"]

Cicéron

 

>>date["../doc.style"]

Standard

est équivalent à:

>> x = parentTagOf:date named:"head"

>> y = firstTagIn:x named:"author"

>> stringFromContentsOfTag:y

Cicéron

 

>> x = parentTagOf:date named:"doc"

>> attribute:"style" ofTag:x

Standard

La chaîne d'une transformation peut également comprendre l'opérateur + ainsi que du texte '...':

>>a["/name* + ' : ' + /div.n"]

Nom : 1

Conditions

Il est également possible d'ajouter des conditions lors de la recherche de balises. La syntaxe (pour la recherche respectivement d'une ou de plusieurs balises) est la suivante:

/name[condition]

//name[condition]

Une condition est une expression logique composée d'une recherche, d'un opérateur et d'une valeur.

Exemples

//w[* = sur]

Recherche toutes les balises <w> dont le contenu est "sur".

/div[.n > 1]

Recherche la première balise <div> dont l'attribut n est supérieur à 1.

//body[../doc.style = Standard]//w

Recherche, dans les balises <body> dont l'attribut style de la balise <doc> parent vaut "Standard", toutes les balises <w>.

Opérateurs de comparaison

=
==

Comparaison exacte.

~

Comparaison avec une expression régulière.

Exemple

/w[* ~ a*e] recherche la première balise <w> dont le contenu correspond à "a*e", c'est-à-dire commence par "a" et finit par "e".

@
@=

Comparaison avec une sous-chaîne. La première variante ignore la casse, mais pas la seconde.

Exemple

//w[.lex @ ou] retourne les balises <w> dont l'attribut lex contient "ou" (sans tenir compte de la casse).

Il est également possible d'utiliser les opérateurs booléens suivants:

& « et » logique
| « ou » logique
! « non » logique

L'opérateur & est implicite.

Exemples

//w[.lex ~ *a & .morph = n.m.]
//w[.lex ~ *a .morph = n.m.]

Recherche des <w> dont l'attribut lex finit par "a" et dont l'attribut morph vaut "n.m.".

//w[.lex ~ *a & (.morph = n.m. | .genre = m)]

Recherche des <w> dont l'attribut lex finit par "a", et dont soit l'attribut morph vaut "n.m." ou l'attribut genre vaut "m".

Si une chaîne contient des espace, il faut délimiter celle-ci par des apostrophes (').

Exemple

/w[.lex = 'ad hoc']
/w[.lex = 'j\'ai']

Si la condition ne contient opérateur de comparaison, le condition est satisfaite si le résultat de la recherche est définie.

Exemples

//w[.lex]

Recherche des <w> dont l'attribut lex est défini.

//w[/abr]

Recherche des <w> contenant une balise <abr>.

Section suivante