INaLCO - M2 Traductique

Cours XML 2010-2011

Jean-François Perrot


Une brève introduction à XPath

  1. Définition
    1. Rappels sur XML
    2. Le langage XPath est fait pour décrire les chemins dans les arbres XML.

  2. Syntaxe de XPath

  3. Utilisation de XPath

  4. L'outil XPather intégré au navigateur Firefox
    1. But
    2. Documentation
    3. Une démo en images


  1. Définition

    XPath est un langage formellement indépendant de XML, mais qui s'applique exclusivement (?) à des documents XML.


  2. Syntaxe de XPath


    1. Pour une présentation sommaire, voir ici (partie du cours sur XSLT)

    2. Exposé plus détaillé (en anglais)

  3. Utilisation de XPath

    1. Les expressions XPath sont un ingrédient essentiel des feuilles de style XSLT et des requêtes XQUERY.
      Nous en reparlerons à propos de XSLT.

    2. On peut aussi les utiliser isolément, par exemple en Java ou en PHP.
      Essayez vous-mêmes !

      [Ne fonctionne que pour des documents sans namespace,
      et pour des expressions XPath dont la valeur est un ensemble d'objets XML, i.e. n'est ni un entier, ni un booléen ;
      en particulier, pas de count(...) ni de sum(...) - c'est dû à une faiblesse du procédé employé]

    3. L'outil Perl Web::Scraper, recommandé dans le cours de Pierre Marchal, permet d'extraire des fragments de documents HTML
      en les repérant par des expressions XPath.

    4. Exercices simples : Écrire (et faire fonctionner) des expressions XPath qui, appliquées au document Garage donnent
      1. la couleur des  carosseries
      2. l'état des capots
      3. le nombre de rapports des transmissions.

  4. L'outil XPather intégré au navigateur Firefox

    1. But

      Cet outil permet de créer une expression XPath en montrant son point d'arrivée plutôt qu'en la rédigeant "à la main".
      Pour cela, on a besoin de visualiser l'arbre du document XML (ou HTML) en utilisant l'outil DOM Inspector.
      On va donc
      • naviguer dans l'arbre d'une page XML/HTML (tel qu'affiché par DOM Inspector)
      • récupérer l'expression XPath correspondant à l'endroit de l'arbre atteint au cours de la navigation
      • manipuler l'expression obtenue ad libitum, la faire fonctionner, etc.

    2. Documentation

      http://xpath.alephzarro.com/documentation

    3. Une démo en images

      pour vous allécher... avec notre exemple favori Garage.xml.
      N.B. Toute la gamme d'outils qui entoure les navigateurs (en l'occurrence Firefox) est naturellement orientée vers le traitemnt de documents HTML.
      L'utiliser sur des documents XML représente donc un détournement d'usage, il est bon d'avoir cette circonstance présente à l'esprit.

      1. Ce que montre Firefox ouvert sur ce fichier.

        Firefox

        Pour développer un sommet de l'arbre marqué "+", cliquer sur ce signe.
        Pour contracter un sommet de l'arbre marqué "-", cliquer sur ce signe.

        Comme dans tout navigateur, le fichier n'est accessible qu'en lecture, vous ne pouvez pas le modifier !

      2. Pour comparaison, la vue de Firebug (menu Outils>Firebug>Ouvrir Firebug dans une nouvelle fenêtre)

        Firebug

        On voit que la syntaxe pour afficher l'arbre est légèrement différente.
        Parmi les multiples possibilités offertes, celle de modifier l'arbre (Editer) - mais ceci est une autre histoire.

      3. Ce que montre le couple DOM Inspector + XPather (menu Outils>DOM Inspector)

        XPather

        Encore une autre manière de visualiser l'arbre du document !

        • On note que ce dernier est "enveloppé" dans du HTML,
          à savoir la page Web dont nous avons vu la forme visible ci-dessus (produite automatiquement).

          Wrapper

        • La présence de XPather se voit à la barre XPath juste au-dessus de la zone d'affichage de l'arbre.

          1. On y lit l'expression XPath correspondant au sommet actif de l'arbre :
            /Garage/Voiture[1]/Moteur/Allumage/text()

            N.B. La distinction majuscules-minuscules et essentielle en XML, mais pas en HTML.
            Pour obtenir qu'elle soit respectée, veillez à ce que l'option to Lowercase soit désactivée,
            dans le menu de réglages (Settings) ouvert en cliquant sur le petit triangle pointe en bas, juste à droite de XPath.

            Réglages


          2. Le point d'interrogation à l'extrême droite ouvre une fenêtre d'aide rapide CheatSheet

            Aide

          3. Le bouton Eval, comme son nom l'indique, lance l'évaluation de cette expression dans le contexte courant,
            et il ouvre un navigateur XPather :

            Browser

            Grâce à ce navigateur nous allons pouvoir "travailler" notre expression.

      4. Exemples

        1. Généralisation
          Par nature, un cheminement concret dans un arbre, comme ceux que DOM Inspector nous permet de faire,
          est singulier.
          Ici, nous pointons l'état de l'allumage du moteur de la première voiture du garage,
          ce qui se voit au "prédicat" [1] qui suit Voiture dans notre expression XPath.

          Et si nous voulons une expression qui nous donne la même information pour toutes les voitures du garage ?
          Il suffit de supprimer ce prédicat, en intervenant dans la fenêtre où réside l'expression !
          Pour voir le résultat, Eval.

          Browser-2

          Notons que nous pouvons récupérer l'expression correspondant à notre choix :

          Browser2b

        2. Accès aux attributs

          Dans DOM Inspector :

          Attr - Inspector

          Dans le XPath Browser (après modification de l'expression) :

          Attr - XPath B.