C#.NET * C++ * JAVASCRIPT * PYTHON * DIVERSES
XML * XML-SCHEMA * XPATH * XSL * XSL-FO * SVG * XQUERY * XPROC * ANT



XSL / Die XSLT - Struktur / xsl:for-each-group / Zusammengesetzte Schlüssel

Zusammengesetzte Schlüssel

Zusammengesetzte Schlüssel

➪ Daneben besteht die Möglichkeit, über die concat-Funktion zusammengesetzte Schlüssel zu erstellen.

In der ausgewählten Nodeliste "//Ort/Mensch/Kauf" haben Sie mit group-by='concat(bez, ' ', ../../name)' einen Schlüssel generiert, der seine Informationen aus dem Kauf-Childnode bez sowie aus dem "Ort/name" (ausgehend von "Kauf" erreichbar durch "../../name") bezieht. Auf diese Weise kommt jede relevante Kombination aus Ortsname und Artikelname zustande, die Sie mit <xsl:value-of select='current-grouping-key()' /> darstellen können.

pic/foreachgroup_schluessel2.jpg

Innerhalb dieser jeweiligen Gruppierung (<xsl:for-each select='current-group()'>, dessen aktueller Node immer noch Kauf ist) können Sie nun noch die Einzelinformationen ermitteln, etwa mit <xsl:value-of select='../vorname' />, das sich auf den Kauf-Parentnode Mensch bezieht.


<xsl:template match="/">
  <html>
   <body>
    <table border="1">
     <xsl:for-each-group 
     select="//Ort/Mensch/Kauf"
     group-by="concat(bez, ' ', ../../name)">
      <tr>
       <td valign="top">
        <xsl:value-of 
             select="current-grouping-key()" />
       </td>
       <td>
        <table>
         <xsl:for-each 
              select="current-group()">
          <xsl:sort select="anzahl" 
               data-type="number" 
               order="ascending" />
          <tr>
           <td>
            <xsl:value-of select="../vorname" />
           </td>
           <td>
            <xsl:value-of select="../name" />
           </td>
           <td>
            <xsl:value-of select="anzahl" />
           </td>
          </tr>
         </xsl:for-each>
        </table>
       </td>
      </tr>
     </xsl:for-each-group>
    </table>
   </body>
  </html>
</xsl:template>

wg / 10. August 2020



Fragen? Anmerkungen? Tipps?

Bitte nehmen Sie Kontakt zu mir auf.






Vielen Dank für Ihr Interesse an meiner Arbeit.



V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

☎ 0151. 750 360 61 * eMail: info10@wilfried-grupe.de

www.wilfried-grupe.de/XSL_for_each_group1.html