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