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( () ) |
() |