Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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: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.

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: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.

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.

Tableau 1 : Exemples et pseudocode pour les instructions de programmation XSLT

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 host-name est incluse au niveau de la [edit system] hiérarchie, remplacez le nom d’hôte en M320.

Sinon, envoyez le message d’avertissement : Missing [edit system host-name] M320.

<xsl:for-each select="interfaces/
interface[starts-with(name, 'ge-')]/unit">

Pour chaque interface Gigabit Ethernet configurée au niveau hiérarchique [edit interfaces ge-fpc/pic/port unit logical-unit-number] .

<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 déclarations de la forme suivante :

apply-macro apply-macro-name {
    parameter-name;
}

Et ignorer toutes les apply-macro déclarations du formulaire :

apply-macro apply-macro-name {
    parameter-name parameter-value;
}
<xsl:if test="not(system/host-name)">

Si l’instruction host-name n’est pas incluse au niveau de la [edit system] hiérarchie.

<xsl:if test="apply-macro[name = 'no-igp']

Si l’instruction apply-macro nommée no-igp est incluse au niveau de la hiérarchie actuelle.

<xsl:if test="not(../apply-macro[name = 'no-ldp'])

Si l’instruction apply-macro avec le nom no-ldp n’est pas incluse deux niveaux hiérarchiques au-dessus du niveau hiérarchique actuel.