lang

Testa o idioma de um nó

Descrição

A função fn:lang testa o idioma de um nó, que é dado por um atributo xml:lang no próprio nó ou num ancestral. Funciona com qualquer nó, e não só com os que contêm strings. É muito usada em predicados de caminhos, para filtrar os dados de um idioma.

O argumento $testLang é o idioma a testar. A função devolve true se o atributo xml:lang que vale para o $node tiver um valor que corresponde a $testLang. Devolve false se esse atributo não corresponder a $testLang, ou se não houver atributo xml:lang que valha.

O atributo xml:lang que vale é o do próprio nó de contexto ou de um ancestral. Se houver mais de um entre o nó e os ancestrais, vale o mais próximo.

A comparação não diferencia maiúsculas de minúsculas: se $testLang for en, casa com o xml:lang EN, e vice-versa. Além disso, o valor de xml:lang pode ser uma variante do idioma de $testLang. Por exemplo, en-US, en-UK e en-US-UK são variantes de en. Então, se $testLang for en e xml:lang for en-US, o nó casa. O contrário não vale: se $testLang for en-US e xml:lang for en, não casa.

Parâmetros

Descrição

testlang:string()

o idioma a testar

node:node()

o nó a testar; se omitido, o nó de contexto

Exemplos

Os exemplos abaixo usam este documento de entrada:

<xsl:variable name="in-xml" as="item()*">
    <desclist xml:lang="en">
      <desc xml:lang="en-US">
         <line>A line of text.</line>
      </desc>
      <desc xml:lang="fr">
         <line>Une ligne de texte.</line>
      </desc>
    </desclist>

</xsl:variable>

XPath

Resultado

$in-xml// desc[lang('en')]

<desc xml:lang="en-US"> <line>A line of text.</line> </desc>

$in-xml// desc[lang('en-US')]

<desc xml:lang="en-US"> <line>A line of text.</line> </desc>

$in-xml// desc[lang('fr')]

<desc xml:lang="fr"> <line>Une ligne de texte.</line> </desc>

$in-xml// desc/line[lang('en')]

<line>A line of text.</line>

$in-xml[lang('en-US')]

()

$in-xml// desc[lang('FR')]

<desc xml:lang="fr"> <line>Une ligne de texte.</line> </desc>