Concept
XPath est une norme W3C conçue spécialement pour naviguer et rechercher des nœuds dans des documents XML ; c’est la base essentielle de XSLT. Toutes les expressions dans select="" et test="" au sein de XSLT utilisent XPath.
- Situer les nœuds au moyen d’expressions de chemin
- Plus de 100 fonctions standard intégrées : manipulation de chaînes, calculs numériques, comparaisons de dates, traitement des nœuds, opérations logiques, etc.
7 types de nœuds
Nœud document (nœud racine), nœud élément, nœud attribut, nœud texte, nœud commentaire, nœud instruction de traitement, nœud espace de noms.
Exemple :
<title lang="eng">Harry Potter</title>
<title>→ Nœud élémentlang="eng"→ Nœud attributHarry Potter→ Nœud texte
Concept
- Valeur atomique : contenu de nœud sans enfant ni parent, par exemple
eng,29.99 - Élément(Item) : Élément = nœud ou valeur atomique
Relations entre les nœuds XML
Prenons l’exemple <bookstore><book><title></title></book></bookstore>
- Parent : chaque élément et attribut n’a qu’un seul parent ;
bookest le parent detitle - Enfants : un élément peut posséder plusieurs nœuds enfants ;
titleetpricesont les enfants debook - Frères et sœurs(Sibling) : ils partagent le même nœud parent ; title et price au même niveau sont frères et sœurs l’un de l’autre
- Ancêtre(Ancestor) : le parent, le parent du parent et tous les nœuds supérieurs ; les ancêtres de
titlesont book et bookstore
Expressions de chemin
Sélectionner des nœuds XML à l’aide de chemins et d’étapes
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
</bookstore>Langage du code : HTML, XML (xml)
| Expression | Signification |
|---|---|
bookstore | Sélectionner l’élément bookstore sous la racine |
/bookstore | Chemin absolu, correspond à partir du nœud racine |
bookstore/book | Sélectionner tous les éléments enfants book sous bookstore |
//book | Éléments book à n’importe quel endroit du document (recherche globale) |
//@lang | Sélectionner tous les nœuds attribut nommés lang |
Fonction XPath:position()
<xsl:value-of select="position()" />Langage du code : HTML, XML (xml)
position() est une fonction intégrée XPath qui renvoie le numéro de séquence du nœud en cours dans l’ensemble de nœuds, le comptage commence à 1.
Exemple : afficher les numéros de séquence
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head></head>
<body>
<ul>
<!--Parcourir tous les étudiants class/student -->
<xsl:for-each select="class/student">
<xsl:sort select="age"/> <!--Tri croissant par âge-->
<!--Filtrer les étudiants dont la taille >160-->
<xsl:if test="height > 160">
<li>
<xsl:value-of select="position()" />、<!--Afficher le numéro de séquence-->
<xsl:value-of select="name"/>;
<!--Traitement à conditions multiples-->
<xsl:choose>
<xsl:when test="height > 200">
<b><xsl:value-of select="age"/></b>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="age"/>
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:if>
</xsl:for-each>
</ul>
</body>
</html>
</xsl:template>
</xsl:stylesheet>Langage du code : HTML, XML (xml)
XPath
Previous: Branchements multiples