Подтвердить что ты не робот

Как определить повторяющиеся значения в числовой последовательности с помощью XPath 2.0?

У меня есть выражение XPath, которое предоставляет мне последовательность значений, подобных приведенной ниже:

1 2 2 3 4 5 5 6 7

Легко преобразовать это в набор уникальных значений 1 2 3 4 5 6 7 с помощью distinct-values(). Однако то, что я хочу извлечь, это список повторяющихся значений = 2 5. Я не могу придумать простой способ сделать это. Может ли кто-нибудь помочь?

4b9b3361

Ответ 2

Как насчет:

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

Это повторяется через элементы в последовательности и возвращает элемент, если количество элементов в последовательности, которая равна этому элементу, больше единицы. Затем вы должны использовать distinct-values() для удаления дубликатов из этого списка.

Ответ 3

Рассчитайте разницу между вашим исходным набором и множеством различных значений. Это набор чисел, которые встречаются более одного раза. Обратите внимание, что числа в этом результирующем наборе необязательно различаются, если они встречаются более чем в два раза в исходной последовательности, поэтому при необходимости повторно преобразуйте их в набор различных значений.

Ответ 4

Как насчет xsl? Это применимо к вашему запросу?

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