Auslesen der Tätigkeiten von Mitarbeitern
Übung 10
Als praktischer Anwendungsfall soll in dieser Übung eine XSLT-Transformation durchgeführt werden, um darzustellen, welche Tätigkeiten Männer und Frauen in einem Unternehmen ausführen. Dazu sollen die Daten in eine HTML-Tabelle überführt werden. Nutzen Sie dazu die Eingabedatei 5-Companies.xml und lesen Sie die folgenden Daten aus:
- Geschlecht
- Name
- Tätigkeit
Beachten Sie bei der Umsetzung den Tipp zur Verwendung von xsl:for-each im Streaming-Modus!
Nutzen Sie für die Umsetzung die unten aufgeführte XSLT-Datei. Diese enthält das HTML-Grundgerüst für die Tabelle. Wählen Sie die Eingabedatei 5-Companies.xml und das Transformationsszenario [Übung 10] xsl:for-each - Tätigkeiten der Mitarbeiter (XML >> HTML) (siehe die Erläuterungen zu den Übungen), um die erstellten XSLT-Anweisungen auf die XML-Datei anzuwenden. Es ist zu beachten, dass entweder die männlichen oder weiblichen Mitarbeiter eines Unternehmens in eine Tabelle geschrieben werden sollen. Die Ausgabe ist in der folgenden Abbildung dargestellt:
Abbildung: Output-Vorgabe zu Auslesen der Tätigkeiten von Mitarbeitern.
Darstellung weiblicher Mitarbeiter in einem Unternehmen.
Tipp
Sequenzen mit Streaming verarbeiten
Benutzen Sie <xsl:variable name="copy" select="copy-of(.)"/>, damit Sie auf die Kind-Elemente von person zugreifen können. Genauere Informationen zu den Besonderheiten von Streaming sind unter Streamability-Regeln zu finden.
Code-Beispiel: Stylesheet zu Übung 10: Auslesen der Tätigkeiten von Mitarbeitern.
<?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 -->
<!--ACCUMULATOR-->
<!--Aufgabe: Erstellen Sie 2 Accumulators, um die Anzahl der männlichen oder weiblichen Mitarbeiter zu zählen. -->
<xsl:template match="html"> </xsl:template>
<!-- AUFGABE: Erstellen Sie ein Template, das auf eine bestimmte Company anhand des Namens zugreift. -->
<!-- Vorhandene Unternehmen: Matrix Architectural Service Naugles, Stratapro -->
<xsl:template match="MATCH-EINTRAGEN">
<!-- Inhalt des erstellten Templates -->
<html>
<head> </head>
<body>
<h2>Liste von Mitarbeitern und ihren Tätigkeiten in der Firma: <!-- AUFGABE: Lesen Sie den Namen des aktuellen Knotens aus. --></h2>
<table border="1">
<tr bgcolor="#9acd32">
<!-- ERWEITERUNG: Nummerierung, dafür <th>-Element einkommentieren -->
<!--<th>Nr.</th>-->
<th>Geschlecht</th>
<th>Name</th>
<th>Tätigkeit</th>
</tr>
<!-- AUFGABE: Lassen Sie sich die Sequenz von Personen mit for-each ausgeben. -->
<!--TIPP: Streaming-Modus und dessen Besonderheiten beachten -->
<!-- AUFGABE: Schreiben Sie in der for-each die Abfrage männlich oder weiblich und befüllen Sie die Tabelle mit den gewünschten Werten. -->
<tr>
<!-- ERWEITERUNG: Counter, dafür <td>-Element einkommentieren und dann den Wert des Counters abfragen. -->
<!-- <td> </td> -->
<td> <!-- AUFGABE: Ersetzen durch Ihre Abfrage. --> </td>
<td> <!-- AUFGABE: Ersetzen durch Ihre Abfrage. --> </td>
<td> <!-- AUFGABE: Ersetzen durch Ihre Abfrage. --> </td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Erweiterung
Als eine kleine Erweiterung der Übung soll nun zusätzlich zu den bisherigen Angaben eine Nummerierung hinzugefügt werden. Das Ergebnis sieht dann so wie in der folgenden Abbildung aus:
Abbildung: Output-Vorgabe zu Auslesen der Tätigkeiten von Mitarbeitern (Erweiterung).
Darstellung der weiblichen Mitarbeiter eines Unternehmens in einer nummerierten Liste.
Tipp
Denken Sie daran, dass im Streaming-Modus number und count nicht genutzt werden können! Benutzen Sie beim Streaming Accumulators, um die Elemente zu nummerieren. Orientieren Sie sich dazu an dem Beispiel unter Accumulators.
Lösung
Das vollständige Output-HTML und das Lösungsstylesheet finden Sie unter Lösungen zu Übung 10: Auslesen der Tätigkeiten von Mitarbeitern.
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |