Vendredi 4 avril 2008
<?IUTprocessus exemple="fig1.xml?>"
cible = chaîne associée
A chaque noeud de l’arborescence XPATH est associée une chaîne de caractères ( String - Value ) et un nom étendu.
Un nom étendu est constitué d’une partie locale et d’une URI (Uniform Resource Identifer) d’espaces de nom.
Recherche dans un document XML
La recherche commence à partir d’un noeud de contexte.
tout les résultats d’une recherche sont relatifs à ce noeud.
Un axe indique quel ensemble de noeud, relativement ou noeud de contexte, peut être inclus dans le résultat d’une recherche. Cet axe impose également un ordre sur les noeuds.
Il y a deux types d’axes :
- Les axes en descendant (forward axes) séléctionnent les noeuds qui suivent le noeud de contexte.
- Les axes en montant (revers axes) séléctionnent les noeuds qui précèdent le noeud de contexte.
Chemin de localisation
Notation
Axe :: test_de_noeud[prédicat]
Exemples
- child :: * : séléctionne tous les éléments fils de type élément du noeud de contexte
- child :: text() : séléctionne tous les élement fils de type ’text’ du noeud de contexte
Combinaison de deux chemins de localisation
Avec le symbole : ‘/’
Exemple
child :: * / child :: text()
Séléctionne tous les petits - fils de type text du noeud de contexte.
La 2ième séléction s’applique sur l’ensemble des noeuds obtenu par la 1ère séléction.
Abréviation
/descendant_of_self :: node() / child :: body
// body : séléctionne tout les éléments body d’un document
/livres/livre/traduction[. = "japonais"]/../titre
Ce chemin séléctionne les titres de chaque libre ayant une traduction en japonais.
Remarque
[.=“japonais”] compare la chaîne associé du noeud courant à la chaîne “japonais”.
Fonctions et opérateurs d’ensemble de noeuds
head | body : séléctionne tous les noeuds head et body fils du noeud de contexte
last() : renvoie le dernier élément de l’ensemble de noeuds.
Exemples
head / title[last()]
Séléctionne le dernier élément title
livre[position()=3]
Séléctionne le 3ième livre, s’écrit aussi livre[3]
Count(*) renvoie le nombre d’éléments fils du noeud de contexte
Les fonctions de chaînes
Elles permettent de manipuler les chaînes associées aux noeuds de l’arborescence.
concat(chaîne1,chaîne2,chaîne3)
start_with(chaîne1,chaîne2) vrai si chaîne1 commence par la chaîne2.
XSL : Extensible Stylesheet Language Transformations (XSLT)
Un document XSLT est un document XML avec un élément racine “stylesheet”.
XSLT utilise les expressions Xpath pour localiser les noms dans le document XML.
Dans une transformation XSL il y a deux arbres de noeuds :
- L’arbre source (décrit dans le document XML)
- L’arbre résultat (document produit par la transformation)
Pour générer et sauvegarder le fichier résultat de la transformation XSL il faut utiliser la bibliothèque Xerces/Xalan.
java org.apache.xalan.xslt.Process -in fichier.xml -xsl fichier.xsl -out nouveaufichier
Les templates
Le template permet de traiter un ensemble d’éléments XML localisés grâce à une expression XPATH :
<xsl:template match = "expression_xpath">
</xsl:template>
Un template possède toujours un contenu. Ce contenu est placé dans l’arbre résultat chaque fois qu’un élément correspondant à l’expression Xpath spécifiée sera rencontrée dans l’arbre source.
Appliquer les modèles avec xsl:apply_templates.
Par défaut, un processus XSLT lit le document XML de haut en bas en commençant à l’élement racine et en descendant dans l’arborescence en suivant l’ordre d’apparition des éléments.
Cependant il est possible de modifier cet ordre grâce à xsl:apply_templates. C’est l’attribut select qui indique les éléments à traiter.
<xsl:template match="nom">
<xsl:value_of select="nom_famille" />
<xsl:value_of select="prenom" />
</xsl:template>
<xsl:template match="personne">
<xsl:apply_templates select="nom" />
<xsl:template>
Itération et tri
Itérations
<xsl:for_each select="expression_xpath">
</xsl:for_each>
Effectue une même opération sur tous les éléments d’un ensemble de noeuds renvoyés par l’expression XPATH.
Tri
<xsl:sort select######“expression_path” order"ascending | descending" />