"Distinct" en XML

12/02/2004 - 12:47 por Oscar | Informe spam
Buenas.

Necesito saber si existe alguna instrucción que me permita
hacer un xsl:for-each pero que me devuelva filas como si
hiciera un DISTINCT en una SQL de Oracle. Es decir, si
tengo dos nodos con los mismos valores, que sólo devuelva
uno de ellos.

Gracias. Un saludo.
 

Leer las respuestas

#1 Marco A. Sánchez
16/02/2004 - 08:56 | Informe spam
Hola:

Para obtener este comportamiento debes filtrar el node-set sobre el que
quieres iterar.
Para ello, aplica un predicado a tu expresión XPath con el que tan sólo
incluyas aquellos elementos
que no tienen ningún predecesor, en el nivel considerado, igual al elemento
actual.

Más claro con un ejemplo. Supongamos que tenemos el siguiente documento XML:

<?xml version="1.0"?>
<empleados>
<empleado>
<nombre>Marco Antonio</nombre>
<apellidos>Sánchez</apellidos>
<cargo>Arquitecto</cargo>
</empleado>
<!--Otros elementos empleado omitidos-->
</empleados>

Si queremos iterar sobre el conjunto de elementos <empleado>, sin incluir
duplicados, utilizaríamos la siguiente expresión:

<xsl:for-each
select="//descendant::empleado[not(preceding::empleado = .)]">
</xsl:for-each>

Preguntas similares