Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

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

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

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.

Tabla 1: Ejemplos y pseudocódigo para instrucciones de programación XSLT

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 host-name instrucción se incluye en el [edit system] nivel de jerarquía, cambie el nombre de host a M320.

De lo contrario, emita el mensaje de advertencia: Missing [edit system host-name] M320.

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

Para cada interfaz de Gigabit Ethernet configurada en el [edit interfaces ge-fpc/pic/port unit logical-unit-number] nivel jerárquico.

<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 instrucciones de la siguiente forma:

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

E ignore todas las apply-macro declaraciones del formulario:

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

Si la host-name instrucción no se incluye en el [edit system] nivel de jerarquía.

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

Si la apply-macro instrucción denominada no-igp se incluye en el nivel de jerarquía actual.

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

Si la apply-macro instrucción con el nombre no-ldp no se incluye dos niveles de jerarquía por encima del nivel de jerarquía actual.