xml xpath xpath-2.0

xml - ¿Cómo identifica los valores duplicados en una secuencia numérica usando XPath 2.0?



xpath-2.0 (4)

Calcule la diferencia entre su conjunto original y el conjunto de valores distintos. Este es el conjunto de números que ocurren más de una vez. Tenga en cuenta que los números en este conjunto de resultados no son necesariamente distintos si ocurren más de dos veces en la secuencia original, por lo tanto conviértalo de nuevo en un conjunto de valores distintos si es necesario.

Tengo una expresión XPath que me proporciona una secuencia de valores como la siguiente:

1 2 2 3 4 5 5 6 7

Es fácil convertir esto en un conjunto de valores únicos 1 2 3 4 5 6 7 usando distinct-values() . Sin embargo, lo que quiero extraer es la lista de valores duplicados = 2 5 . No puedo pensar en una manera fácil de hacer esto. ¿Alguien puede ayudar?


Qué pasa:

distinct-values( for $item in $seq return if (count($seq[. eq $item]) > 1) then $item else ())

Esto itera a través de los elementos en la secuencia y devuelve el elemento si el número de elementos en la secuencia que son iguales a ese elemento es mayor que uno. Luego debe usar distinct-values() para eliminar los duplicados de esa lista.


¿Qué hay de xsl? ¿Es aplicable a su solicitud?

<xsl:for-each select="/r/a"> <xsl:variable name="cur" select="." /> <xsl:if test="count(./preceding-sibling::a[. = $cur]) > 0 and count(./following-sibling::a[. = $cur]) = 0"> <xsl:value-of select="." /> </xsl:if> </xsl:for-each>