XSLT/мюнхийская группировка

Мюнхианская группировка (или мюнхийский метод , названный в честь Стива Мюнха) — это алгоритм группировки данных , используемый в 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">
<!-- processing for elements in group -->
<!-- you can use xsl:sort here also, if necessary -->
</xsl:for-each>
</xsl:for-each>
</xsl:template>
Хотя мюнхенский метод продолжит работать в версии 2.0, for-each-group
Предпочтителен, поскольку он, вероятно, будет столь же эффективным, а возможно и более эффективным. Мюнхенский метод можно использовать только для группировки по ценностям.