Ответив на большое количество вопросов XSLT здесь, в Stack Overflow, я более чем знаком с методом группировки по Мюнху для группировки узлов во время преобразования XSL.
Выражение, используемое в нем, обычно выглядит примерно так:
*[generate-id() =
generate-id(key('kSomeKey', .)[1])]
Он почти всегда содержит [1]
, но это всегда казалось мне странным.
Спецификация XSLT 1.0 определяет generate-id()
следующим образом:
Функция generate-id возвращает строку, однозначно идентифицирующую узел в наборе узлов-аргументов, который является первым в порядке документа.
(выделение добавлено)
В нем четко указано, что функция работает с первым узлом в порядке документа, и в этом контексте [1]
будет выбирать первый узел в наборе в порядке документа, поэтому кажется, что [1]
является избыточным.
Это [1]
используется так широко, что я не решаюсь его опустить, но оно кажется лишним. Может ли кто-нибудь прояснить это для меня?
generate-id
не разрешает набор узлов в качестве первого аргумента и выдает ошибку. Конечно, если бы вы использовали XSLT 2.0, вы, скорее всего, использовали быxsl:for-each-group
, а не мюнхенскую группировку. - person Tim C   schedule 19.12.2014