Группировка Мюнхяна (или метод Мюнхяна , названный в честь Стива Мюнха) — это алгоритм группировки данных , используемый в XSL Transformations v1, который идентифицирует ключи в результатах, а затем запрашивает все узлы с этим ключом. Это улучшает традиционную альтернативу группировки, при которой каждый узел проверяется относительно предыдущих (или последующих) узлов, чтобы определить, является ли ключ уникальным (если это так, это будет указывать на новую группу). [1] В обоих случаях ключ может принимать форму атрибута, элемента или вычисляемого значения.
Уникальный идентификатор называется ключом из-за использования функции «ключ» для идентификации и отслеживания групповой переменной.
Этот метод не нужен в XSLT 2.0+, где представлен новый for-each-group
тег.
Метод использовал возможность XSLT индексировать документы с помощью ключа. Хитрость заключается в использовании индекса для эффективного определения набора уникальных группирующих ключей, а затем в использовании этого набора для обработки всех узлов в группе: [2]
<xsl:key name= "products-by-category" match= "product" use= "@category" /> <xsl:template match= "/" > <xsl:for-each select= "//product[count(. | key('products-by-category', @category)[1]) = 1]" > <xsl:variable name= "current-grouping-key" select= "@category" /> <xsl:variable name= "current-group" select= "key('products-by-category', $current-grouping-key)" /> <xsl:for-each select= "$current-group" > <!-- обработка элементов в группе --> <!-- при необходимости здесь также можно использовать xsl:sort --> </xsl:for-each> </xsl:for-each> </xsl:шаблон>
Хотя метод Мюнхена продолжит работать в версии 2.0, for-each-group
он предпочтительнее, поскольку он, вероятно, будет столь же эффективен, а возможно, и более. Метод Мюнхена может использоваться только для группировки на основе ценности.