.. _lang:
====
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.
.. list-table::
:widths: 40 60
:header-rows: 1
* - **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:
.. code-block:: xml
A line of text.
Une ligne de texte.
.. list-table::
:widths: 50 50
:header-rows: 1
* - **XPath**
- **Resultado**
* - $in-xml// desc[lang('en')]
- A line of text.
* - $in-xml// desc[lang('en-US')]
- A line of text.
* - $in-xml// desc[lang('fr')]
- Une ligne de texte.
* - $in-xml// desc/line[lang('en')]
- A line of text.
* - $in-xml[lang('en-US')]
- ()
* - $in-xml// desc[lang('FR')]
- Une ligne de texte.