GDeLTK

TCL/TK

Notepad++

Wine

Linux

XML

FOP

Guitare

Voyages?

Citations

Reste à faire

edit SideBar


Documentation

La décomposition d'un chemin Xpath

  • Un chemin absolu ou relatif
  • Se décompose en étapes
  • Une étape est constituée de trois parties :
    • direction
    • un test de noeud
    • un prédicat
  • Forme d’une étape :

direction::test[prédicat]
axe::filtre[condition1][condition2]...

  • Les étapes sont séparées par le caractère /

Les directions

les directions de Xpath

Exemples

  • Fils de l’élément courant qui contiennent au moins un élément loyer :

child::*[loyer]

  • Tous les éléments du document contenant soit un élément loyer soit un élément prix :

//*[loyer or prix]

  • Toutes les locations ayant un loyer en euro et supérieur à 400 :

//annonces-immobilieres/location[loyer/@monnaie="euro" and loyer>400]

  • Les éléments dont le prix ou le loyer est égale à 500 :

//*[(prix|loyer)=500]

Note : //*[prix=500 or loyer=500] marche aussi mais //*[(prix or loyer) = 500] est incorrecte !!!

  • Les noeuds sauf la racine qui ont un noeud texte comme fils contenant la chaîne "bonjour" :

/descendant::node()[child::text()[contains(string(),"bonjour")]]

  • Le noeud père du père du noeud courant (grand-père) :

ancestor::node()[position()=2]

  • Grand-père deuxième version :

parent::node()/parent::node()

  • L’attribut src du noeud courant (s’il existe) :

attribute::src

  • Les liens hypertexte d’une page HTML :

/descendant-or-self::a/@href

  • Les contacts dont l’email contient "@duchemin" :

//contact[contains(email,"@duchemin")]

  • Le contenu du document sauf le titre, le sous titre, le titre abrégé ou les éléments info ou bookinfo

node()[not(self::title or self::subtitle or self::titleabbrev or self::info or self::bookinfo)]

  • child::para sélectionne l'élément para enfant du noeud contextuel
  • child::* sélectionne tous les éléments enfant du noeud contextuel
  • child::text() sélectionne tous les noeuds textuels du noeud contextuel
  • child::node() sélectionne tous les enfants du noeud contextuel, quelque soit leur type
  • attribute::name sélectionne l'attribut name du noeud contextuel
  • attribute::* sélectionne tous les attributs du noeud contextuel
  • descendant::para sélectionne tous les descendants para du noeud contextuel
  • ancestor::div sélectionne tous les ancêtres div du noeud contextuel
  • ancestor-or-self::div sélectionne tous les ancêtres div du noeud contextuel et le noeud contextuel lui-même si c'est un div
  • descendant-or-self::para sélectionne tous les descendants para du noeud contextuel et le noeud contextuel lui-même si c'est un para
  • self::para sélectionne le noeud contextuel si c'est un élément para, et rien dans le cas contraire
  • child::chapter/descendant::para sélectionne les descendants para de l'element chapitre enfant du noeud contextuel
  • child::*/child::para sélectionne tous les petits enfants para du noeud contextuel
  • / sélectionne la racine du document (qui est toujours le parent de l'élément document)
  • /descendant::para sélectionne tous les éléments para descendants du document contenant le noeud contextuel
  • /descendant::olist/child::item sélectionne tous les éléments item qui ont un parent olist et qui sont dans le même document que le noeud contextuel
  • child::para[position()=1] sélectionne le premier enfant para du noeud contextuel
  • child::para[position()=last()] sélectionne le dernier enfant para du noeud contextuel
  • child::para[position()=last()-1] sélectionne l'avant dernier para enfant du noeud contextuel
  • child::para[position()>1] sélectionne tous les enfants para du noeud contextuel autres que le premier
  • following-sibling::chapter[position()=1] sélectionne le prochain chapter cible du noeud contextuel
  • preceding-sibling::chapter[position()=1] sélectionne le précédent chapter cible du noeud contextuel
  • /descendant::figure[position()=42] sélectionne le 42ième élément figure du document
  • /child::doc/child::chapter[position()=5]/child::section[position()=2] sélectionne la 2ième section du 5ième élément chapter de l'élément doc du document
  • child::para[attribute::type="warning"] sélectionne tous les enfants para du noeud contextuel qui ont un attribut type dont la valeur est warning
  • child::para[attribute::type='warning'][position()=5] sélectionne le 5ième enfant para du noeud contextuel qui a un attribut type dont la valeur est warning
  • child::para[position()=5][attribute::type="warning"] sélectionne le 5ième enfant para du noeud contextuel si celui-là a un attribut type de valeur warning
  • child::chapter[child::title='Introduction'] sélectionne l'enfant chapter du noeud contextuel qui a un ou plus enfant title avec un contenu textuel égal à 'Introduction'
  • child::chapter[child::title] sélectionne l'enfant chapter du noeud contextuel qui a un ou plus enfant title
  • child::*[self::chapter or self::appendix] sélectionne tous les enfants chapter et appendix du noeud contextuel
  • child::*[self::chapter or self::appendix][position()=last()] sélectionne le dernier enfant chapter ou appendix du noeud contextuel

Les fonctions

http://www.w3schools.com/XPath/xpath_functions.asp

  • Fonctions sur les ensembles de noeuds
    • number last()
    • number position()
    • number count(node-set)
    • node-set id(object)
    • string local-name(node-set?)

Si l'argument est omis, la valeur par défaut utilisée par la fonction est un ensemble de noeuds réduit au seul noeud contextuel.

Exemple : listitem/*[1][local-name()='para' or local-name()='simpara' or local-name()='formalpara']

  • string namespace-uri(node-set?)
  • string name(node-set?)
  • Fonctions sur les chaînes
    • string string(object?)
    • string concat(string,string,string*)
    • boolean starts-with(string,string)
    • boolean contains(string,string)
    • string substring-before(string, string)

Par exemple, substring-before("1999/04/01","/") retourne 1999.

  • string substring-after(string, string)*

Par exemple, substring-after("1999/04/01","/") retourne 04/01, et substring-after("1999/04/01","19") retourne 99/04/01.

  • string substring(string, number, number?)

Les exemples suivants illustrent différents cas de figures courants : substring("12345", 1.5, 2.6) retourne "234" substring("12345", 0, 3) retourne "12" substring("12345", 0 div 0, 3) retourne "" substring("12345", 1, 0 div 0) retourne "" substring("12345", -42, 1 div 0) retourne "12345" substring("12345", -1 div 0, 1 div 0) retourne ""

  • number string-length(string?)
  • string normalize-space(string?)
  • string translate(string, string, string)

La fonction translate retourne la première chaîne de caractères passée en argument dans laquelle les occurrences des caractères de la deuxième chaîne sont remplacées par les caractères correspondant aux mêmes positions de la troisième chaîne. Par exemple, translate("bar","abc","ABC") retourne la chaîne BAr. Si l'un des caractères du deuxième argument n'a pas de position correspondante dans le troisième (parce que le deuxième argument est plus long que le troisième), alors les occurrences de ce caractère sont supprimées du premier argument. Par exemple, translate("--aaa--","abc-","ABC") retourne "AAA". Si un caractère apparaît plus d'une fois dans la deuxième chaîne, alors c'est la première occurence de ce caractère qui détermine la règle de transformation. Si la chaîne passée en troisième argument est plus longue que la deuxième, alors, les caractères en trop sont ignorés.

  • Fonctions booléennes
    • boolean not(object)
    • boolean lang(string)
  • Fonctions numériques
    • number(object?)
    • number sum(node-set)
    • number floor(number)
    • number ceiling(number)
    • number round(number)