Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

Visão geral das instruções de programação XSLT

O XSLT tem várias instruções de programação tradicionais. Sua forma tende a ser verbosa, porque sua sintaxe é construída a partir de elementos XML.

As instruções de programação XSLT mais comumente usadas em scripts commit, op, event e SNMP, que fornecem controle de fluxo dentro de um script, são descritas nas seguintes seções:

<xsl:escolha> Instrução de programação

A <xsl:choose> instrução é uma construção condicional que faz com que diferentes instruções sejam processadas em circunstâncias diferentes. É semelhante a uma declaração de switch em linguagens de programação tradicionais. A <xsl:choose> instrução contém um ou mais <xsl:when> elementos, cada um dos quais testa uma expressão XPath . Se o teste avaliar a verdade, o processador XSLT executará as instruções do <xsl:when> elemento. Após o processador XSLT encontrar uma expressão XPath em um <xsl:when> elemento que avalia a verdade, o processador XSLT ignora todos os elementos subseqüentes <xsl:when> contidos na <xsl:choose> instrução, mesmo que suas expressões XPath avaliem a verdade. Em outras palavras, o processador XSLT processa apenas as instruções contidas no primeiro <xsl:when> elemento cujo test atributo avalia ser verdadeiro. Se nenhum dos <xsl:when> atributos dos test elementos avaliar a verdade, o conteúdo do elemento opcional <xsl:otherwise> , se um estiver presente, for processado.

A <xsl:choose> instrução é semelhante a uma declaração de switch em outras linguagens de programação. O <xsl:when> elemento é o "caso" da declaração do switch, e você pode adicionar qualquer número de <xsl:when> elementos. O <xsl:otherwise> elemento é o "padrão" da declaração do switch.

<xsl:para cada> Instrução de programação

O <xsl:for-each> elemento diz ao processador XSLT para reunir um conjunto de nós e processá-los um a um. Os nós são selecionados pela expressão XPath especificada pelo select atributo. Cada um dos nós é então processado de acordo com as instruções mantidas na construção <xsl:for-each> .

O código dentro da <xsl:for-each> instrução é avaliado recursivamente para cada nó que corresponda à expressão XPath. Ou seja, o contexto atual é movido para cada nó selecionado pela cláusula, e o <xsl:for-each> processamento é relativo a esse contexto atual.

No exemplo a seguir, a construção <xsl:for-each> processa recursivamente cada nó na [system syslog file] hierarquia. Ele atualiza o contexto atual para cada nó correspondente e imprime o valor do name elemento, se houver, que é uma criança do contexto atual.

<xsl:if> Instrução de programação

Uma <xsl:if> instrução de programação é uma construção condicional que faz com que as instruções sejam processadas se a expressão XPath mantida no test atributo avaliar a true.

Não há outra cláusula correspondente.

Exemplo de instruções de programação XSLT e Pseudocode

A Tabela 1 apresenta exemplos que usam várias instruções de programação XSLT, juntamente com explicações pseudocódigo.

Tabela 1: Exemplos e pseudocódigo para instruções de programação XSLT

Instrução de programação

Explicação 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>

Quando a host-name declaração for incluída no nível da [edit system] hierarquia, altere o nome de host para M320.

Caso contrário, emita a mensagem de aviso: Missing [edit system host-name] M320.

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

Para cada interface Ethernet Gigabit configurada no nível de [edit interfaces ge-fpc/pic/port unit logical-unit-number] hierarquia.

<xsl:for-each select="data[not(value)]/name">

Selecione qualquer parâmetro macro que não contenha um valor de parâmetro.

Em outras palavras, corresponda a todas as apply-macro declarações do seguinte formulário:

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

E ignore todas as apply-macro declarações do formulário:

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

Se a host-name declaração não for incluída no nível de [edit system] hierarquia.

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

Se a apply-macro declaração nomeada no-igp for incluída no nível de hierarquia atual.

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

Se a apply-macro declaração com o nome no-ldp não estiver incluída dois níveis de hierarquia acima do nível de hierarquia atual.