Home
Über mich
Blog
Veröffentlichungen
IT-Trainings
Impressum


Arbeiten mit xsl:apply-templates

Alternativ zur Arbeit mit xsl:for-each besteht die Möglichkeit, dasselbe Ergebnis durch separate Templates ("xsl:template match") zu erzielen. In diesem Verfahren wird die Logik in diverse Einzeltemplates aufgesplittet, die sich dann mit xsl:apply-templates bzw. xsl:call-template gegenseitig aufrufen. Wie schon bei xsl:for-each, wird auch hier ganz eng am jeweiligen Kontextnode "Mensch" gearbeitet.

 <xsl:template match="/">
  <html>
   <head>
    <title></title>
   </head>
   <body>
    <table border="1" width="100%">
     <thead>
      <tr>
       <th>Nr</th>
       <th>Nachname</th>
       <th>Vorname</th>
       <th>Wohnort</th>
       <th>Einkommen</th>
       <th>Ausgaben</th>
       <th>Flensburger Punkte</th>
      </tr>
     </thead>
     <tbody>
      <xsl:apply-templates 
        select="Orte/Ort/Mensch">
       <xsl:sort 
        select="Gehalt" 
        data-type="number" 
        order="descending" />
      </xsl:apply-templates>
     </tbody>
    </table>
   </body>
  </html>
 </xsl:template>
 <xsl:template match="Mensch">
  <tr>
   <xsl:if test="position() mod 2 = 0">
    <xsl:attribute name="bgcolor">lightgrey</xsl:attribute>
   </xsl:if>
   <td>
    <xsl:value-of select="position()" />
   </td>
   <xsl:apply-templates select="vorname" />
   <xsl:apply-templates select="name" />
   <xsl:apply-templates select="../name" />
   <xsl:apply-templates select="Gehalt" />
   <xsl:call-template name="Ausgaben" />
   <td align="center">
    <xsl:call-template name="listimport">
     <xsl:with-param name="plistnr">1</xsl:with-param>
     <xsl:with-param name="pkey">
      <xsl:value-of select="id" />
     </xsl:with-param>
    </xsl:call-template>
   </td>
  </tr>
 </xsl:template>
 <xsl:template match="vorname | name">
  <td>
   <xsl:value-of select="." />
  </td>
 </xsl:template>
 <xsl:template match="Gehalt">
  <td align="right">
   <xsl:value-of 
     select="format-number(., '#.###,00 &#8364;', 'euro')" />
  </td>
 </xsl:template>
 <xsl:template name="Ausgaben">
  <td align="right">
   <xsl:choose>
    <xsl:when test="sum(Kauf/Gesamt) &gt; Gehalt">
     <xsl:attribute name="bgcolor">red</xsl:attribute>
    </xsl:when>
    <xsl:otherwise>
     <xsl:attribute name="bgcolor">yellow</xsl:attribute>
    </xsl:otherwise>
   </xsl:choose>
   <xsl:value-of
    select="format-number(sum(Kauf/Gesamt), '#.##0,00 &#8364;', 'euro')" />
  </td>
 </xsl:template>

qrpic/XSL_XML2HTML3.jpg

wg / 9. Oktober 2017




Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf (info10@wilfried-grupe.de).



Vielen Dank für Ihr Interesse an meiner Arbeit.


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

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