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


Arbeiten mit xsl:call-template

Ein nochmals anderer Ansatz basiert auf der kompletten Auslagerung der Implementierungslogik mit Hilfe von "xsl:template name". Diese Subroutinen werden direkt benannt und mit Parameterübergaben aufgerufen (obwohl allein schon der Aufruf von xsl:template name="Tabellenzeile" zeigt, daß ein Parameteraufruf nicht erforderlich ist, wenn hinter dem Einzelaufruf des Templates ein konkreter Node steht, der anderswo zugewiesen wird).

 <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:for-each select="Orte/Ort/Mensch">
       <xsl:sort select="Gehalt" 
                 data-type="number" 
                 order="descending" />
       <xsl:call-template name="Tabellenzeile" />
      </xsl:for-each>
     </tbody>
    </table>
   </body>
  </html>
 </xsl:template>
 <xsl:template name="Tabellenzeile">
  <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:call-template name="Einzelspalte">
    <xsl:with-param name="p" select="vorname" />
   </xsl:call-template>
   <xsl:call-template name="Einzelspalte">
    <xsl:with-param name="p" select="name" />
   </xsl:call-template>
   <xsl:call-template name="Einzelspalte">
    <xsl:with-param name="p" select="../name" />
   </xsl:call-template>
   <xsl:call-template name="Einzelspalte">
    <xsl:with-param name="p" select="Gehalt" />
   </xsl:call-template>
   <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 name="Einzelspalte">
  <xsl:param name="p" />
  <td>
   <xsl:choose>
    <xsl:when test="$p castable as xs:decimal">
     <xsl:attribute name="align">right</xsl:attribute>
     <xsl:value-of 
          select="format-number($p, '#.###,00 &#8364;', 'euro')" />
    </xsl:when>
    <xsl:otherwise>
     <xsl:value-of select="$p" />
    </xsl:otherwise>
   </xsl:choose>
  </td>
 </xsl:template>

qrpic/XSL_XML2HTML4.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