NESTA PÁGINA
key
Sintaxe
key name { match pattern; value expression; }
Descrição
Defina uma chave para uso com a key()
função XPath. As chaves são uma alternativa aos IDs e são usadas para indexar os nós em um documento XML. A chave deve ser definida como uma declaração de alto nível no script. Uma key
definição consiste no identificador-chave, nos nós para o índice e no valor emparelhado com o nome-chave para referenciar os nós correspondentes. A key()
função é então usada para localizar os nós apropriados.
A key()
função funciona com o documento XML do nó atual e usa a definição especificada key
para recuperar nós mencionados por um nome e valor específicos. Os argumentos de função são o nome-chave e o valor da chave desejada. O valor de devolução é um conjunto de nós que inclui todos os nós mencionados por esse nome e valor chave. Se o valor-chave desejado for fornecido como um conjunto de nós, em vez de uma corda, o conjunto de nó devolvido é uma união de todos os nós mencionados para os valores-chave expressos pelos nós dentro do conjunto de nós.
Por exemplo, se você definir a chave:
key func { match prototype; value @name; }
o código a seguir selecionaria <prototype>
elementos que tenham um name
atributo com um valor de "rastreamento", e então saída o valor do elemento <return-type>
infantil:
for-each ( key("func", "trace") ) { <out> return-type/.; }
Atributos
key name |
Identificador de chave, que identifica exclusivamente a chave dentro do script e é passado como o primeiro argumento para a |
match pattern |
Expressão XPath que seleciona o conjunto de nós para indexar. |
value expression |
Expressão XPath que define o valor da chave. |
Exemplo de SLAX
O script de operação a seguir cria duas key
definições enext-hop
, protocol
que são usadas para recuperar e exibir todas as rotas estáticas e todas as rotas com um próximo salto de ge-0/0/0.0 em um dispositivo. O script invoca o comando API get-route-information
Junos XML para obter as informações de rota do dispositivo. A for-each( $results )
declaração altera o nó atual para o $results
documento XML. Os loops subsequentes for-each
usam as chaves para recuperar todos os nós indexados de acordo com os principais nomes e valores.
A for-each( key( "protocol", "Static" )
declaração usa a protocol
definição chave, que corresponde aos route-table/rt
elementos, para recuperar os nós desejados. O rt-entry/protocol-name
valor-chave corresponde aos <protocol-name>
elementos infantis que têm o valor "estático". O bloco de código é executado usando-se <rt>
como nó de contexto. Para cada partida, o script gera o valor do <rt-destination>
elemento.
A for-each( key( "next-hop", "ge-0/0/0.0" )
declaração usa a definição chave "next-hop", que combina com route-table/rt
elementos, para recuperar os nós desejados. O rt-entry/nh/via
valor-chave corresponde aos <via>
elementos infantis que têm o valor "ge-0/0/0,0". O bloco de código é executado usando-se <rt>
como nó de contexto. Para cada partida, o script gera o valor do <rt-destination>
elemento.
version 1.1; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; key protocol { match route-table/rt; value rt-entry/protocol-name; } key next-hop { match route-table/rt; value rt-entry/nh/via; } match / { <op-script-results> { var $results = jcs:invoke("get-route-information"); for-each( $results ) { /* Display all static routes */ <output> "Static routes: "; for-each( key( "protocol", "Static" ) ) { <output> rt-destination; } /* Display all routes with next-hop of ge-0/0/0.0 */ <output> "Next-hop ge-0/0/0.0: "; for-each( key( "next-hop", "ge-0/0/0.0" ) ) { <output> rt-destination; } } } }
Informações de lançamento
Declaração introduzida na versão 1.1 da linguagem SLAX, que é suportada no Junos OS Release 12.2 e versões posteriores.