distinct-values

Os valores atômicos distintos de uma sequência

Descrição

A função fn:distinct-values devolve uma sequência com os valores atômicos únicos de $arg. Os valores são comparados pelo valor tipado. Valores de tipos numéricos diferentes podem ser iguais: por exemplo, o xs:integer 1 é igual ao xs:decimal 1.0, e a função devolve só um deles. Se dois valores forem de tipos que não se comparam, como xs:string e xs:integer, eles são considerados distintos, em vez de dar erro. Valores sem tipo são tratados como strings.

A sequência $arg pode ter valores atômicos, nós ou os dois. Dos nós é extraído o valor tipado, pelas regras normais de conversão de funções. Ou seja, só o conteúdo dos nós é comparado, e não outras propriedades, como o nome.

Como a especificação não diz qual dos repetidos fica de fora, a ordem e o tipo dos itens do resultado podem variar entre implementações.

Parâmetros

Descrição

arg:string()

a sequência de valores atômicos

collation:string()

a collation usada para comparar strings

Exemplos

Os exemplos abaixo usam este documento de entrada:

<xsl:variable name="in-xml" as="item()*">
  <in-xml>
    <a>3</a>
    <b>5</b>
    <b>3</b>
  </in-xml>
</xsl:variable>

XPath

Resultado

distinct-values( ('a', 'b', 'a') )

('a', 'b')

distinct-values( (1, 2, 3) )

(1, 2, 3)

distinct-values( ('a', 2, 3) )

('a', 2, 3)

distinct-values((xs:integer('1'), xs:decimal('1.0'), xs:float('1.0E0') ) )

1

distinct-values($in-xml/*)

(3, 5)

distinct-values( () )

()

Veja também