.. _functx_distinct-nodes:
=====================
functx:distinct-nodes
=====================
Os nós XML distintos de uma sequência (pela identidade do nó)
Descrição
~~~~~~~~~
A função functx:distinct-nodes devolve os nós distintos (pela identidade) de uma
sequência. Ela faz isso sem reordenar os nós na ordem do documento: fica com a
primeira ocorrência de cada nó. É diferente da função fn:distinct-values, porque
devolve nós, e não valores atômicos, e não leva em conta o valor (conteúdo) dos
nós, só a identidade.
Observação: se você quer os nós reordenados na ordem do documento, ou se isso
não importa, basta usar a expressão "$nodes/." (sem as aspas). Funciona porque o
operador barra remove repetidos e reordena. O "." da expressão devolve o próprio
nó.
.. list-table::
:widths: 40 60
:header-rows: 1
* - **Parâmetros**
- **Descrição**
* - nodes:node()
- a sequência de nós
Exemplos
~~~~~~~~
Os exemplos abaixo usam este documento de entrada:
.. code-block:: xml
1
2
3
3
.. list-table::
:widths: 25 25 50
:header-rows: 1
* - **XPath**
- **Resultado**
- **Explicação**
* - functx:distinct-nodes(($in-xml/child, $in-xml/\*))
- 1 2 3 3
- Os dois elementos child que contêm 3 têm identidades diferentes, mesmo com o mesmo conteúdo.
* - functx:distinct-nodes(($in-xml/child[3], $in-xml/\*))
- 3 1 2 3
- O 3 aparece primeiro porque é o primeiro da sequência de entrada.
Depende de
~~~~~~~~~~
* :ref:`functx_is-node-in-sequence`.
Veja também
~~~~~~~~~~~
.. toctree::
:titlesonly:
:glob:
* :ref:`functx_distinct-deep`.
* :ref:`distinct-values`.