Présentation des instructions de programmation XSLT
XSLT contient un certain nombre d’instructions de programmation traditionnelles. Leur forme a tendance à être détaillée, car leur syntaxe est construite à partir d’éléments XML.
Les instructions de programmation XSLT les plus couramment utilisées dans les scripts de validation, d’opération, d’événement et SNMP, qui fournissent un contrôle de flux dans un script, sont décrites dans les sections suivantes :
<xsl:choose> programmation
L’instruction <xsl:choose>
est une construction conditionnelle qui entraîne le traitement de différentes instructions dans différentes circonstances. Il est similaire à une déclaration de commutateur dans les langages de programmation traditionnels. L’instruction <xsl:choose>
contient un ou plusieurs <xsl:when>
éléments, chacun testant une expression XPath . Si le test est jugé vrai, le processeur XSLT exécute les instructions de l’élément <xsl:when>
. Une fois que le processeur XSLT a trouvé une expression XPath dans un <xsl:when>
élément qui évalue à la vérité, le processeur XSLT ignore tous les éléments suivants <xsl:when>
contenus dans l’instruction <xsl:choose>
, même si leurs expressions XPath sont évaluées comme vraies. En d’autres termes, le processeur XSLT ne traite que les instructions contenues dans le premier <xsl:when>
élément dont test
l’attribut est évalué à true. Si aucun des attributs des <xsl:when>
test
éléments n’est évalué à vrai, le contenu de l’élément facultatif <xsl:otherwise>
, le cas échéant, est traité.
L’instruction <xsl:choose>
est similaire à une instruction de commutateur dans d’autres langages de programmation. L’élément <xsl:when>
est le « cas » de l’instruction de commutateur, et vous pouvez ajouter n’importe quel nombre d’éléments <xsl:when>
. L’élément <xsl:otherwise>
est « par défaut » de l’instruction du commutateur.
<xsl:choose> <xsl:when test="xpath-expression"> ... </xsl:when> <xsl:when test="another-xpath-expression"> ... </xsl:when> <xsl:otherwise> ... </xsl:otherwise> </xsl:choose>
<xsl:pour chaque instruction de programmation>
L’élément <xsl:for-each>
indique au processeur XSLT de rassembler un ensemble de nœuds et de les traiter un par un. Les nœuds sont sélectionnés par l’expression XPath spécifiée par l’attribut select
. Chacun des nœuds est ensuite traité selon les instructions contenues dans la <xsl:for-each>
construction.
<xsl:for-each select="xpath-expression"> ... </xsl:for-each>
Le code à l’intérieur de l’instruction <xsl:for-each>
est évalué de manière récursive pour chaque nœud qui correspond à l’expression XPath. En d’autres termes, le contexte actuel est déplacé vers chaque nœud sélectionné par la clause, et le <xsl:for-each>
traitement est relatif à ce contexte actuel.
Dans l’exemple suivant, la <xsl:for-each>
construction traite de manière récursive chaque nœud de la [system syslog file]
hiérarchie. Il met à jour le contexte actuel sur chaque nœud correspondant et imprime la valeur de l’élément, s’il name
en existe un, c’est-à-dire un enfant du contexte actuel.
<xsl:for-each select="system/syslog/file"> <xsl:value-of select=”name”/> </xsl:for-each>
<xsl:si> instruction de programmation
Une <xsl:if>
instruction de programmation est une construction conditionnelle qui entraîne le traitement des instructions si l’expression XPath contenue dans l’attribut test
évalue à true
.
<xsl:if test="xpath-expression"> ...executed if test expression evaluates to true </xsl:if>
Il n’y a pas de clause correspondante.
Exemple d’instructions de programmation XSLT et de pseudocode
Le tableau 1 présente des exemples qui utilisent plusieurs instructions de programmation XSLT ainsi que des explications pseudocode.
Instruction de programmation |
Explication du pseudocode |
---|---|
<xsl:choose> <xsl:when test="system/host-name"> <change> <system> <host-name>M320</host-name> </system> </change> </xsl:when> <xsl:otherwise> <xnm:error> <message> Missing [edit system host-name] M320. </message> </xnm:error> </xsl:otherwise> </xsl:choose> |
Lorsque l’instruction Sinon, envoyez le message d’avertissement : |
<xsl:for-each select="interfaces/ interface[starts-with(name, 'ge-')]/unit"> |
Pour chaque interface Gigabit Ethernet configurée au niveau hiérarchique |
<xsl:for-each select="data[not(value)]/name"> |
Sélectionnez un paramètre de macro qui ne contient pas de valeur de paramètre. En d’autres termes, faites correspondre toutes les apply-macro apply-macro-name { parameter-name; } Et ignorer toutes les apply-macro apply-macro-name { parameter-name parameter-value; } |
<xsl:if test="not(system/host-name)"> |
Si l’instruction |
<xsl:if test="apply-macro[name = 'no-igp'] |
Si l’instruction |
<xsl:if test="not(../apply-macro[name = 'no-ldp']) |
Si l’instruction |