SUR CETTE PAGE
Présentation de XPath
XSLT utilise la norme XPath ( XML Path Language ) pour spécifier et localiser les éléments dans la hiérarchie XML du document d’entrée. La puissante syntaxe d’expression de XPath vous permet de définir des critères complexes pour sélectionner des parties du document d’entrée XML.
Nœuds et axes
XPath considère chaque élément de la hiérarchie des documents comme un nœud. Pour les scripts de validation, les scripts op, les scripts d’événements et les scripts SNMP, les types de nœuds importants sont les nœuds d’élément, les nœuds de texte et les nœuds d’attribut. Considérez les balises XML suivantes :
<system>
<host-name>my-router</host-name>
<accounting inactive="inactive">
...
</accounting>
</system>
Ces éléments de balise XML montrent des exemples des types de nœuds XPath suivants :
-
<host-name>my-router</host-name>: nœud d’élément -
my-router: nœud de texte -
inactive="inactive": nœud d’attribut
XPath considère les nœuds comme étant disposés selon certains axes. La liste suivante comprend quelques axes communs. Cependant, XPath a de nombreux autres axes qui ne sont pas répertoriés ici.
-
ancestor : pointe d’un nœud vers le haut à travers sa série de nœuds parents
-
child : pointe à travers la liste des nœuds enfants directs d’un nœud d’élément
-
attribute : pointe à travers la liste de l’ensemble d’attributs d’un nœud d’élément
-
follow-sibling : pointe à travers les nœuds qui suivent un nœud, mais qui se trouvent sous le même parent
-
descendant : contient tous les descendants d’un nœud
XSLT évalue chaque expression XPath à partir d’un nœud particulier, appelé nœud de contexte (ou simplement contexte). Le nœud de contexte est le nœud sur lequel le processeur XSLT est actuellement en train de regarder. XSLT modifie le contexte lorsqu’il traverse la hiérarchie du document. Il évalue les expressions XPath à partir de ce nœud de contexte particulier.
Dans les scripts de validation Junos OS, le concept de nœud de contexte correspond aux niveaux hiérarchiques de Junos OS. Par exemple, l’expression /configuration/system/domain-name XPath définit le nœud de contexte au niveau de la [edit system domain-name] hiérarchie.
Nous vous recommandons d’inclure le <xsl:template match="configuration"> modèle dans tous les scripts de commit. Cet élément vous permet d’exclure l’élément /configuration/ racine de toutes les expressions XPath dans les instructions de programmation (telles que <xsl:for-each> ou <xsl:if>) dans le script. Ainsi, les expressions XPath peuvent commencer au niveau d’une hiérarchie Junos (par exemple, system/domain-name). Pour plus d’informations, consultez Boilerplate requis pour les scripts de validation.
Syntaxe des chemins et des prédicats
Une expression XPath contient deux types de syntaxe : une syntaxe de chemin et une syntaxe de prédicat. La syntaxe du chemin spécifie les nœuds à inspecter en fonction de leur emplacement sur l’un des axes de la hiérarchie du document à partir du nœud de contexte actuel. Voici quelques exemples de syntaxe de chemin :
accounting-options: sélectionne un noeud d’élément nomméaccounting-optionsqui est un enfant du contexte actuel.server/name: sélectionne un noeud d’élément nomménamequi est un enfant d’un élément nomméserverqui est un enfant du contexte actuel./configuration/system/domain-name: sélectionne un noeud d’élément nommédomain-namequi est l’enfant d’un élément nommésystemqui est l’enfant de l’élément racine du document (configuration).parent::system/host-name: sélectionne un noeud d’élément nomméhost-namequi est l’enfant d’un élément nommésystemqui est le parent du noeud de contexte actuel. Vous pouvez abréger l’axeparent::en deux points (..).
La syntaxe de prédicat vous permet d’effectuer des tests pour chaque nœud sélectionné par la syntaxe de chemin. Le jeu de résultats inclut uniquement les nœuds qui réussissent le test. Un prédicat apparaît entre crochets ([ ]) après un nœud de chemin. Voici quelques exemples de syntaxe de prédicat :
server[name = '10.1.1.1']: sélectionne un élément nomméserverqui est un enfant du contexte actuel et a un élément enfant nomménamedont la valeur est 10.1.1.1.*[@inactive]: sélectionne tout nœud (*correspond à n’importe quel nœud) qui est un enfant du contexte courant et qui a un attribut (@sélectionne les nœuds de l’axeattribute) nomméinactive.route[starts-with(next-hop, '10.10.')]: sélectionne un élément nomméroutequi est un enfant du contexte actuel et qui a un élément enfant nomménext-hopdont la valeur commence par la chaîne 10.10..La
starts-withfonction est l’une des nombreuses fonctions intégrées à XPath. XPath prend également en charge les tests relationnels, les tests d’égalité et bien d’autres fonctionnalités non répertoriées ici.
Opérateurs XPath
XPath prend en charge de nombreux opérateurs, par exemple :
-
Opérateurs logiques, tels que
ANDet|(ou) -
Les opérateurs de comparaison, tels que
=,<!=, et> -
Les opérateurs numériques, tels que
+,-et*
Les scripts XSLT sont des documents XML. En XSLT, vous devez représenter les signes inférieurs de la même manière qu’en XML. Par conséquent, vous devez représenter l’opérateur < inférieur à (<) comme et l’opérateur inférieur ou égal à (<=) comme <=.
Pour plus d’informations sur les fonctions et les opérateurs XPath, consultez un guide de référence XPath complet. XPath est entièrement décrit dans la spécification W3C à http://w3c.org/TR/xpath.