Lösungen zu Übung 10: Auslesen der Tätigkeiten von Mitarbeitern (xsl:for-each)

Im Folgenden finden Sie die Lösungsdateien zu Übung 10 unter Auslesen der Tätigkeiten von Mitarbeitern.

Code-Beispiel: Lösungs-XSLT zu Übung 10.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="3.0">
  <xsl:mode streamable="yes" on-no-match="shallow-skip"/>
  <xsl:output method="xhtml"/>
  <!-- Erweiterung mit Accumulator als counter. -->
  <xsl:accumulator name="counterM" as="xs:integer" initial-value="1" streamable="yes">
    <xsl:accumulator-rule match="//Person/Name[@Gender = 'male']" select="$value + 1" />
  </xsl:accumulator>
  <xsl:accumulator name="counterF" as="xs:integer" initial-value="1" streamable="yes">
    <xsl:accumulator-rule match="//Person/Name[@Gender = 'female']" select="$value + 1" />
  </xsl:accumulator>
  <xsl:template match="html"> </xsl:template>
  <!-- Andere Unternehmen nutzen: Naugles, Stratapro -->
  <xsl:template match="Company[@Name = 'Matrix Architectural Service']">
    <html>
      <head> </head>
      <body>
        <h2>Liste von Mitarbeitern und ihren Tätigkeiten in der Firma: <xsl:value-of select="./@Name" /></h2>
        <table border="1">
          <tr bgcolor="#9acd32">
            <!-- Erweitern mit Nummerierung -->
            <th>Nr.</th>
            <th>Geschlecht</th>
            <th>Name</th>
            <th>Tätigkeit</th>
          </tr>
          <xsl:for-each select="Person">
            <xsl:variable name="copy" select="copy-of(.)" />
            <!-- Ändern der Abfrage bei Mann/Frau -->
            <xsl:if test="$copy//@Gender = 'female'">
              <tr>
                <!--  Erweitern mit counter: Ändern des counters bei Mann/Frau -->
                <td>
                  <xsl:value-of select="accumulator-before('counterF')" />
                </td>
                <td>
                  <xsl:value-of select="$copy//@Gender" />
                </td>
                <td>
                  <xsl:value-of select="$copy/Name/Firstname" /><xsl:text> </xsl:text> <xsl:value-of select="$copy/Name/Surname" />
                </td>
                <td>
                  <xsl:value-of select="$copy/Occupation" />
                </td>
              </tr>
            </xsl:if>
          </xsl:for-each>
        </table>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

Code-Beispiel: Output-HTML zu Übung 10.

<?xml version="1.0" encoding="UTF-8"?>
<html>
   <head></head>
   <body>
      <h2>Liste von Mitarbeitern und ihren Tätigkeiten in der Firma: Matrix Architectural Service</h2>
      <table border="1">
         <tr bgcolor="#9acd32">
            <th>Nr.</th>
            <th>Geschlecht</th>
            <th>Name</th>
            <th>Tätigkeit</th>
         </tr>
         <tr>
            <td>1</td>
            <td>female</td>
            <td>Stefanie Aachen</td>
            <td>Structural and reinforcing iron and metal worker</td>
         </tr>
         <tr>
            <td>2</td>
            <td>female</td>
            <td>Christin Baecker</td>
            <td>Heavy truck and tractor-trailer driver</td>
         </tr>
         <tr>
            <td>3</td>
            <td>female</td>
            <td>Jessika Bergmann</td>
            <td>Labor trainer</td>
         </tr>
         <tr>
            <td>4</td>
            <td>female</td>
            <td>Melanie Beyer</td>
            <td>Cutting and slicing machine tender</td>
         </tr>
         <tr>
            <td>5</td>
            <td>female</td>
            <td>Christine Brauer</td>
            <td>Condominium association manager</td>
         </tr>
         <tr>
            <td>6</td>
            <td>female</td>
            <td>Uta Dresner</td>
            <td>Orderlie</td>
         </tr>
         <tr>
            <td>7</td>
            <td>female</td>
            <td>Vanessa Durr</td>
            <td>Camera repairer</td>
         </tr>
         <tr>
            <td>8</td>
            <td>female</td>
            <td>Sandra Eberhardt</td>
            <td>Credit analyst</td>
         </tr>
         <tr>
            <td>9</td>
            <td>female</td>
            <td>Gabriele Ebersbach</td>
            <td>Foundry mold and coremaker</td>
         </tr>
         <tr>
            <td>10</td>
            <td>female</td>
            <td>Andrea Egger</td>
            <td>Benefits director</td>
         </tr>
         <tr>
            <td>11</td>
            <td>female</td>
            <td>Kathrin Eichel</td>
            <td>Gynecology nurse</td>
         </tr>
         <tr>
            <td>12</td>
            <td>female</td>
            <td>Maria Frey</td>
            <td>Credentials specialist</td>
         </tr>
         <tr>
            <td>13</td>
            <td>female</td>
            <td>Susanne Friedmann</td>
            <td>Stonemason</td>
         </tr>
         <tr>
            <td>14</td>
            <td>female</td>
            <td>Karolin Glockner</td>
            <td>Buyer</td>
         </tr>
         <tr>
            <td>15</td>
            <td>female</td>
            <td>Claudia Gloeckner</td>
            <td>Machine feeder</td>
         </tr>
         <tr>
            <td>16</td>
            <td>female</td>
            <td>Anna Gloeckner</td>
            <td>Genetics nurse</td>
         </tr>
         <tr>
            <td>17</td>
            <td>female</td>
            <td>Mandy Gottlieb</td>
            <td>Power distributor</td>
         </tr>
         <tr>
            <td>18</td>
            <td>female</td>
            <td>Christine Hirsch</td>
            <td>PBX operator</td>
         </tr>
         <tr>
            <td>19</td>
            <td>female</td>
            <td>Ulrike Hueber</td>
            <td>Animal control officer</td>
         </tr>
         <tr>
            <td>20</td>
            <td>female</td>
            <td>Karin Keller</td>
            <td>ATF agent</td>
         </tr>
         <tr>
            <td>21</td>
            <td>female</td>
            <td>Nicole Kluge</td>
            <td>Recreation supervisor</td>
         </tr>
         <tr>
            <td>22</td>
            <td>female</td>
            <td>Christina Koenig</td>
            <td>Gaming surveillance officer</td>
         </tr>
         <tr>
            <td>23</td>
            <td>female</td>
            <td>Barbara Koertig</td>
            <td>Economic geographer</td>
         </tr>
         <tr>
            <td>24</td>
            <td>female</td>
            <td>Anna Kohl</td>
            <td>Title examiner</td>
         </tr>
         <tr>
            <td>25</td>
            <td>female</td>
            <td>Jessika Köhler</td>
            <td>Lobbyist</td>
         </tr>
         <tr>
            <td>26</td>
            <td>female</td>
            <td>Doreen Lowe</td>
            <td>Log marker</td>
         </tr>
         <tr>
            <td>27</td>
            <td>female</td>
            <td>Sabine Mauer</td>
            <td>Personal secretary</td>
         </tr>
         <tr>
            <td>28</td>
            <td>female</td>
            <td>Sandra Mayer</td>
            <td>Tire builder</td>
         </tr>
         <tr>
            <td>29</td>
            <td>female</td>
            <td>Leah Muller</td>
            <td>Telecommunications specialist</td>
         </tr>
         <tr>
            <td>30</td>
            <td>female</td>
            <td>Ulrike Nussbaum</td>
            <td>Grader operator</td>
         </tr>
         <tr>
            <td>31</td>
            <td>female</td>
            <td>Doreen Papst</td>
            <td>Fish hatchery manager</td>
         </tr>
         <tr>
            <td>32</td>
            <td>female</td>
            <td>Klaudia Pfaff</td>
            <td>Mediator</td>
         </tr>
         <tr>
            <td>33</td>
            <td>female</td>
            <td>Anna Schultz</td>
            <td>General and operations manager</td>
         </tr>
         <tr>
            <td>34</td>
            <td>female</td>
            <td>Nadine Schweitzer</td>
            <td>Anthropologist</td>
         </tr>
         <tr>
            <td>35</td>
            <td>female</td>
            <td>Stefanie Seiler</td>
            <td>Education and development manager</td>
         </tr>
         <tr>
            <td>36</td>
            <td>female</td>
            <td>Yvonne Theiss</td>
            <td>Airline copilots</td>
         </tr>
         <tr>
            <td>37</td>
            <td>female</td>
            <td>Katrin Unger</td>
            <td>Forest fire inspector</td>
         </tr>
         <tr>
            <td>38</td>
            <td>female</td>
            <td>Ines Unger</td>
            <td>Ornamental ironworker</td>
         </tr>
         <tr>
            <td>39</td>
            <td>female</td>
            <td>Michelle Waechter</td>
            <td>Mixing and blending machine setter</td>
         </tr>
         <tr>
            <td>40</td>
            <td>female</td>
            <td>Sabrina Wagner</td>
            <td>Hotel desk clerk</td>
         </tr>
         <tr>
            <td>41</td>
            <td>female</td>
            <td>Janina Wagner</td>
            <td>Coil winder</td>
         </tr>
         <tr>
            <td>42</td>
            <td>female</td>
            <td>Lena Wechsler</td>
            <td>Tax examiner</td>
         </tr>
         <tr>
            <td>43</td>
            <td>female</td>
            <td>Doreen Wechsler</td>
            <td>Surveillance agent</td>
         </tr>
         <tr>
            <td>44</td>
            <td>female</td>
            <td>Stefanie Wexler</td>
            <td>Information designer</td>
         </tr>
         <tr>
            <td>45</td>
            <td>female</td>
            <td>Kerstin Winkel</td>
            <td>Transmitter operator</td>
         </tr>
         <tr>
            <td>46</td>
            <td>female</td>
            <td>Kathrin Wirth</td>
            <td>Education and training manager</td>
         </tr>
         <tr>
            <td>47</td>
            <td>female</td>
            <td>Annett Zweig</td>
            <td>Environmental chemist</td>
         </tr>
      </table>
   </body>
</html>
Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: