Funciones XSLT y XPath

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

distinct-values

XPath

 

La función fn:distinct-values devuelve cada uno de los distintos valores de la secuencia de entrada sin tener en cuenta los valores que se repiten. Los valores de la secuencia son comparados mediante un operador de igualdad. Cuando dos valores se reconocen como iguales se devuelve uno solo en la secuencia de salida. Valores numéricos de diferentes tipos pueden ser reconocidos como iguales, de manera que si aparecen por ejemplo el valor 5.0E0 de tipo xs:float y el valor 5.0 de tipo xs:decimal, estos son reconocidos como el mismo y se devuelve por ello una sola vez.

Si la secuencia de entrada contiene distintos tipos de valores que no pueden ser comparados entre sí, como por ejemplo xs:date y xs:string, la función devolverá ambos valores. La secuencia de entrada puede contener una combinación de nodos y valores. Los nodos de la secuencia se convertirán en valores mediante las reglas de conversión habituales. Esto significa que sólo se tiene en cuenta el contenido de los nodos y no, por ejemplo, el nombre de los mismos.

Por lo general el orden de la secuencia de salida es el mismo que el de la secuencia de entrada. Así, en el resultado aparecerán cada uno de los elementos en el lugar donde estos aparecen por primera vez. Sin embargo, debido a que XQuery no puede establecer de manera exacta, qué valores son los que aparecen repetidos, pueden aparecer diferencias en el orden de la secuencia de salida.

 

Argumentos

Secuencia de valores atómicos

Es obligatorio, pero puede ser una secuencia vacía.

Tipo: xs:anyAtomicType

 

URI con el criterio de comparación

Opcional

Tipo: xs:string

 

Valor de salida

Secuencia de todos los valores sin repeticiones.

Tipo: xs:anyAtomicType

 

 

Ejemplo

distinct-values((2,3,4,5,6,5,4,3,2,1))

Resultado: 2 3 4 5 6 1

 

 

Ejemplo

distinct-values((xs:float('2.0E1'),xs:decimal('20.0'),xs:integer('20'),xs:integer('230'),xs:float('2.3E2')))

Resultado: 20 230

 

 

Ejemplo

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

Resultado: a b c

 

 

Ejemplo

distinct-values(('alfons', 'peter', 'peter', 'albert'))

Resultado: alfons peter albert

 

 

Ejemplo

distinct-values((3+5, 2*8, (), 2*4, 32 div 2))

Resultado: 8 16

 

 

Ejemplo

distinct-values(())

Ergebnis:

 

 

Ejemplo

distinct-values(doc('ejemplos/ejemplos2.xml')/funciones/funcion/@cat)

Resultado: nombre completo; operación matemática; fecha y hora;

  > Volver a la referencia alfabética de XSLT y XPATH