Descripción general de las instrucciones de programación de XSLT
La XSLT tiene una serie de instrucciones de programación tradicionales. Su forma tiende a ser detallada, ya que su sintaxis está construida a partir de elementos XML.
Las instrucciones de programación de XSLT más utilizadas en los scripts commit, op, event y SNMP, que proporcionan control de flujo dentro de un script, se describen en las siguientes secciones:
<xsl:choose> instrucción de programación
La <xsl:choose>
instrucción es una construcción condicional que hace que diferentes instrucciones se procesen en diferentes circunstancias. Es similar a una instrucción de conmutador en los lenguajes de programación tradicionales. La <xsl:choose>
instrucción contiene uno o más <xsl:when>
elementos, cada uno de los cuales prueba una expresión XPath . Si la prueba se evalúa como true, el procesador XSLT ejecuta las instrucciones en el <xsl:when>
elemento. Después de que el procesador XSLT encuentra una expresión XPath en un <xsl:when>
elemento que evalúa como true, el procesador XSLT ignora todos los elementos subsiguientes <xsl:when>
contenidos en la <xsl:choose>
instrucción, incluso si sus expresiones XPath se evalúan como true. En otras palabras, el procesador XSLT procesa solo las instrucciones contenidas en el primer <xsl:when>
elemento cuyo test
atributo se evalúa como verdadero. Si ninguno de los atributos de los <xsl:when>
test
elementos se evalúa como true, se procesa el contenido del elemento opcional <xsl:otherwise>
, si uno está presente.
La <xsl:choose>
instrucción es similar a una instrucción de conmutador en otros lenguajes de programación. El <xsl:when>
elemento es el "caso" de la instrucción del conmutador, y puede agregar cualquier número de <xsl:when>
elementos. El <xsl:otherwise>
elemento es el "default" de la instrucción del conmutador.
<xsl:choose> <xsl:when test="xpath-expression"> ... </xsl:when> <xsl:when test="another-xpath-expression"> ... </xsl:when> <xsl:otherwise> ... </xsl:otherwise> </xsl:choose>
<xsl:for-each> instrucción de programación
El <xsl:for-each>
elemento indica al procesador XSLT que reúna un conjunto de nodos y los procese uno por uno. Los nodos se seleccionan mediante la expresión XPath especificada por el select
atributo. A continuación, cada uno de los nodos se procesa de acuerdo con las instrucciones que se mantienen en la <xsl:for-each>
construcción.
<xsl:for-each select="xpath-expression"> ... </xsl:for-each>
El código de la <xsl:for-each>
instrucción se evalúa recursivamente para cada nodo que coincida con la expresión XPath. Es decir, el contexto actual se mueve a cada nodo seleccionado por la cláusula y el <xsl:for-each>
procesamiento es relativo a ese contexto actual.
En el ejemplo siguiente, la <xsl:for-each>
construcción procesa recursivamente cada nodo de la [system syslog file]
jerarquía. Actualiza el contexto actual en cada nodo coincidente e imprime el valor del name
elemento, si existe, que es un hijo del contexto actual.
<xsl:for-each select="system/syslog/file"> <xsl:value-of select=”name”/> </xsl:for-each>
<xsl:if> instrucción de programación
Una <xsl:if>
instrucción de programación es una construcción condicional que hace que se procesen las instrucciones si la expresión XPath mantenida en el test
atributo se evalúa como true
.
<xsl:if test="xpath-expression"> ...executed if test expression evaluates to true </xsl:if>
No hay otra cláusula correspondiente.
Pseudocódigo y instrucciones de programación XSLT de ejemplo
La tabla 1 presenta ejemplos en los que se utilizan varias instrucciones de programación XSLT junto con explicaciones de pseudocódigo.
Instrucción de programación |
Explicación de pseudocódigo |
---|---|
<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> |
Cuando la De lo contrario, emita el mensaje de advertencia: |
<xsl:for-each select="interfaces/ interface[starts-with(name, 'ge-')]/unit"> |
Para cada interfaz de Gigabit Ethernet configurada en el |
<xsl:for-each select="data[not(value)]/name"> |
Seleccione cualquier parámetro de macro que no contenga un valor de parámetro. En otras palabras, haga coincidir todas las apply-macro apply-macro-name { parameter-name; } E ignore todas las apply-macro apply-macro-name { parameter-name parameter-value; } |
<xsl:if test="not(system/host-name)"> |
Si la |
<xsl:if test="apply-macro[name = 'no-igp'] |
Si la |
<xsl:if test="not(../apply-macro[name = 'no-ldp']) |
Si la |