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

Parâmetros

Descrição

nodes:node()

a sequência de nós

Exemplos

Os exemplos abaixo usam este documento de entrada:

<xsl:variable name="in-xml" as="item()*">
  <test>
    <child>1</child>
    <child>2</child>
    <child>3</child>
    <child>3</child>
  </test>
</xsl:variable>

XPath

Resultado

Explicação

functx:distinct-nodes(($in-xml/child, $in-xml/*))

<child>1</child> <child>2</child> <child>3</child> <child>3</child>

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/*))

<child>3</child> <child>1</child> <child>2</child> <child>3</child>

O 3 aparece primeiro porque é o primeiro da sequência de entrada.

Depende de

Veja também