Lösungen zu Übung 11: Mitarbeiterliste aufteilen (xsl:fork)

Im Folgenden finden Sie die Lösungsdateien zu Übung 11 unter Mitarbeiterliste aufteilen.

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

<?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"> 
  <!-- AUFGABE: Schreiben Sie eine XSLT-Transformation, um eine Personen-Liste in zwei XML-Dateien aufzuteilen. In einer Datei sollen alle männlichen Personen und in der anderen alle weiblichen enthalten sein. -->  
  <!-- AUSGABE:
    female.xml:
    <Females>
      <Name Title="Ms." Gender="female">
        <Firstname>Laura</Firstname>
        <Surname>Ackermann</Surname>
      </Name>
      <Name Title="Ms." Gender="female">
        <Firstname>Lena</Firstname>
        <Surname>Bar</Surname>
      </Name>
    </Females>
    male.xml
    <Males>
      <Name Title="Mr." Gender="male">
        <Firstname>René</Firstname>
        <Surname>Beckenbauer</Surname>
      </Name>
      <Name Title="Mr." Gender="male">
        <Firstname>Benjamin</Firstname>
        <Surname>Biermann</Surname>
      </Name>
    </Males>
  -->  
  <xsl:output indent="yes"/>
  <xsl:mode streamable="yes"/>  
  <!-- Root-Element auswählen -->
  <xsl:template match="Company">
    <!-- Bearbeitung in mehrere Prozesse aufteilen -->
    <xsl:fork>
      <!-- Prozess 1 -->
      <xsl:sequence>
        <!-- Ausgabe-Datei definieren für männliche Mitarbeiter -->
        <xsl:result-document href="male.xml">
          <Males>
            <!-- Über alle Personen itterieren und nur männliche Personen auswählen -->
            <xsl:for-each select="Person/Name[@Gender = 'male']">
              <xsl:copy-of select="."/>
            </xsl:for-each>
          </Males>
        </xsl:result-document>
      </xsl:sequence>   
      <!-- Prozess 2 -->
      <xsl:sequence>
        <!-- Ausgabe-Datei definieren für weibliche Mitarbeiter -->
        <xsl:result-document href="female.xml">
          <Females>
            <!-- Über alle Personen iterieren und nur weibliche Personen auswählen -->
            <xsl:for-each select="Person/Name[@Gender = 'female']">
              <xsl:copy-of select="."/>
            </xsl:for-each>
          </Females>
        </xsl:result-document>
      </xsl:sequence>
    </xsl:fork>
  </xsl:template>
</xsl:stylesheet>

Code-Beispiel: Output-XML zu Übung 11 - weibliche Mitarbeiter.

<?xml version="1.0" encoding="UTF-8"?>
<Females>
  <Name Title="Ms." Gender="female">
    <Firstname>Laura</Firstname>
    <Surname>Ackermann</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Lena</Firstname>
    <Surname>Bar</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Jennifer</Firstname>
    <Surname>Bayer</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Anna</Firstname>
    <Surname>Beckenbauer</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Anja</Firstname>
    <Surname>Bohm</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Jessika</Firstname>
    <Surname>Brauer</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Barbara</Firstname>
    <Surname>Eggers</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Juliane</Firstname>
    <Surname>Eisenberg</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Johanna</Firstname>
    <Surname>Faerber</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Leonie</Firstname>
    <Surname>Frey</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Christina</Firstname>
    <Surname>Gruenewald</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Sophia</Firstname>
    <Surname>Gärtner</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Maria</Firstname>
    <Surname>Hartmann</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Sandra</Firstname>
    <Surname>Jager</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Leah</Firstname>
    <Surname>Kalb</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Petra</Firstname>
    <Surname>Kirsch</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Michelle</Firstname>
    <Surname>Klug</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Barbara</Firstname>
    <Surname>Kohler</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Mandy</Firstname>
    <Surname>Lemann</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Birgit</Firstname>
    <Surname>Loewe</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Diana</Firstname>
    <Surname>Maier</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Silke</Firstname>
    <Surname>Pabst</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Ines</Firstname>
    <Surname>Schiffer</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Yvonne</Firstname>
    <Surname>Schreiner</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Maria</Firstname>
    <Surname>Schulz</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Daniela</Firstname>
    <Surname>Traugott</Surname>
  </Name>
  <Name Title="Mrs." Gender="female">
    <Firstname>Sabine</Firstname>
    <Surname>Waechter</Surname>
  </Name>
  <Name Title="Ms." Gender="female">
    <Firstname>Mandy</Firstname>
    <Surname>Wechsler</Surname>
  </Name>
</Females>

Code-Beispiel: Output-XML zu Übung 11 - männliche Mitarbeiter.

<?xml version="1.0" encoding="UTF-8"?>
<Males>
  <Name Title="Mr." Gender="male">
    <Firstname>René</Firstname>
    <Surname>Beckenbauer</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Benjamin</Firstname>
    <Surname>Biermann</Surname>
  </Name>
  <Name Title="Dr." Gender="male">
    <Firstname>Erik</Firstname>
    <Surname>Bumgarner</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Eric</Firstname>
    <Surname>Bumgarner</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Jörg</Firstname>
    <Surname>Drescher</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Tobias</Firstname>
    <Surname>Drescher</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Kristian</Firstname>
    <Surname>Ebersbach</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Jens</Firstname>
    <Surname>Eisenhauer</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Philipp</Firstname>
    <Surname>Finkel</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Maik</Firstname>
    <Surname>Gerste</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Dominik</Firstname>
    <Surname>Herz</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Lucas</Firstname>
    <Surname>Kirsch</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Torsten</Firstname>
    <Surname>Mehler</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Thorsten</Firstname>
    <Surname>Metzger</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Niklas</Firstname>
    <Surname>Nadel</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Ulrich</Firstname>
    <Surname>Pfeffer</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Martin</Firstname>
    <Surname>Rothschild</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Felix</Firstname>
    <Surname>Schmidt</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Marco</Firstname>
    <Surname>Shuster</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Mathias</Firstname>
    <Surname>Winkel</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Steffen</Firstname>
    <Surname>Ziegler</Surname>
  </Name>
  <Name Title="Mr." Gender="male">
    <Firstname>Jens</Firstname>
    <Surname>Zweig</Surname>
  </Name>
</Males>
Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: