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