XSLT2 для каждой группы: есть ли способ ссылаться на последовательность представительных элементов? - PullRequest
3 голосов
/ 16 ноября 2011

Внутри оператора for-each-group в XSLT2 фокус меняется на набор репрезентативных элементов, по одному от каждой группы. Это означает, что, например, last () возвращает количество групп (потому что это равно количеству представительных элементов и, следовательно, «размеру» фокуса). Position () возвращает (по существу) номер группы, потому что это позиция репрезентативного элемента для обсуждаемой группы в последовательности репрезентативных элементов и т. Д.

Мой вопрос заключается в том, можно ли ссылаться на набор этих репрезентативных элементов в операторе Xpath2. Что-то вроде current-group (), за исключением того, что содержит набор всех представительных элементов (по одному из каждой группы), а не набор всех элементов из текущей группы.

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Используйте

current-group()[1]

или

current-group()[last()]
2 голосов
/ 16 ноября 2011

Хорошо внутри каждой группы вы обрабатываете каждую группу, а не все группы. Таким образом, чтобы найти первый пункт во всех группах, вам понадобится

<xsl:variable name="reps" as="node()*">
  <xsl:for-each-group select="foo" group-by="bar">
    <xsl:sequence select="."/>
  </xsl:for-each-group>
</xsl:variable>

в моем понимании.

...