Grupowanie XSLT/Muenchian

Podstawowe elementy i przebieg procesu XSLT

Grupowanie Muenchian (lub metoda Muenchian , nazwana na cześć Steve'a Muencha) to algorytm grupowania danych używany w XSL Transformations v1 , który identyfikuje klucze w wynikach, a następnie wysyła zapytanie do wszystkich węzłów z tym kluczem. Poprawia to tradycyjną alternatywę grupowania, w której każdy węzeł jest porównywany z poprzednimi (lub kolejnymi) węzłami w celu ustalenia, czy klucz jest unikalny (jeśli tak, oznaczałoby to nową grupę). W obu przypadkach klucz może przybrać postać atrybutu, elementu lub wyliczonej wartości.

Unikalny identyfikator jest nazywany kluczem ze względu na użycie funkcji „klucz” do identyfikacji i śledzenia zmiennej grupowej.

Technika ta nie jest konieczna w XSLT 2.0+, który wprowadza nowy tag for-each-group .

Ogólny aspekt transformacji

Metoda wykorzystywała zdolność XSLT do indeksowania dokumentów za pomocą klucza. Sztuczka polega na wykorzystaniu indeksu do skutecznego ustalenia zestawu unikalnych kluczy grupowania, a następnie użyciu tego zestawu do przetworzenia wszystkich węzłów w grupie:

   

 

   
     
                  
      <xsl:key  name=  "products-by-category"  match=  "product"  use=  "@category"  />  <xsl:template  match=  "/"  >  <xsl:for-each  select=  "//produkt[liczba (. | key('products-by-category', @category)[1]) = 1]"  > <xsl:   nazwa-  zmiennej =   "bieżący-klucz-grupowania"  select=  "@kategoria"  />  <xsl:zmienna  nazwa =  "aktualna grupa" 
                  

     
       
       
    
  

 select=  "key('products-by-category',  $current-grouping-key)"  />  <xsl:for-each  select=  "$current-group"  >  <!-- przetwarzanie elementów w grupie -->  <!-- tutaj również możesz użyć xsl:sort, jeśli to konieczne -->  </xsl:for-each>  </xsl:for-each>  </xsl:template> 

Chociaż metoda monachijska będzie nadal działać w wersji 2.0, preferowana jest metoda dla każdej grupy , ponieważ prawdopodobnie będzie równie wydajna, a prawdopodobnie bardziej. Metodę monachijską można stosować tylko do grupowania opartego na wartościach.