Lösungen zu Übung 9: Temperaturkurve Stuttgart 2015 (xsl:iterate)
Im Folgenden finden Sie die Lösungsdateien zu Übung 9 sowie zur Variante unter Temperaturkurve Stuttgart 2015.
Code-Beispiel: Lösungs-XSLT zu Übung 9.
<?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" xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result-prefixes="xs math" version="3.0">
<xsl:mode streamable="yes"/>
<xsl:output method="text"/>
<xsl:template match="year">
<!-- Columns header -->
<xsl:text>month; min temp; max temp; rainSum
</xsl:text>
<xsl:iterate select="month">
<xsl:param name="rain" select="0.00" as="xs:decimal"/>
<xsl:variable name="copy" select="copy-of(.)"/>
<!-- für Erweiterung mit Summe über Regen einkommentieren -->
<xsl:variable name="rainSum" select="$rain + xs:decimal($copy/raining/@value)"/>
<xsl:value-of select="@name"/>; <xsl:value-of select="$copy/temperature/@min"/>; <xsl:value-of select="$copy//@max"/>; <xsl:value-of select="$rainSum"/>
<xsl:text>
</xsl:text>
<xsl:next-iteration>
<xsl:with-param name="rain" select="$rainSum"/>
</xsl:next-iteration>
</xsl:iterate>
</xsl:template>
</xsl:stylesheet>
Code-Beispiel: Output-CSV zu Übung 9.
month; min temp; max temp; rainSum
january; -2.1; 3.2; 38
february; -1.2; 5.1; 73
march; 1.5; 9.2; 112
april; 4.5; 13.5; 166
may; 8.5; 18; 250
june; 11.7; 21; 343
july; 13.5; 23.3; 406
august; 13.3; 23; 482
september; 10.4; 19.8; 535
october; 6.4; 14.5; 576
november; 1.9; 8; 624
december; -1; 4.1; 665
Code-Beispiel: Lösungs-XSLT zu Übung 9 (Variante).
<?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" xmlns:math="http://www.w3.org/2005/xpath-functions/math" exclude-result-prefixes="xs math" version="3.0">
<xsl:mode streamable="yes"/>
<xsl:output method="text"/>
<xsl:template match="year">
<!-- Columns header -->
<xsl:text>year; avg. min temp; avg max temp; rainSum
</xsl:text>
<xsl:iterate select="month">
<xsl:param name="rain" select="0.00" as="xs:decimal"/>
<xsl:param name="min" select="0.00" as="xs:decimal"/>
<xsl:param name="max" select="0.00" as="xs:decimal"/>
<xsl:on-completion>
<xsl:text>2015</xsl:text>;<xsl:value-of select="$min div 12"/>;<xsl:value-of select="$max div 12"/>;<xsl:value-of select="$rain"/>
<xsl:text>
</xsl:text>
</xsl:on-completion>
<xsl:variable name="copy" select="copy-of(.)"/>
<!-- für Erweiterung mit Summe über Regen einkommentieren -->
<xsl:variable name="rainSum" select="$rain + xs:decimal($copy/raining/@value)"/>
<xsl:variable name="minSum" select="$min + xs:decimal($copy/temperature/@min)"/>
<xsl:variable name="maxSum" select="$max+ xs:decimal($copy/temperature/@max)"/>
<xsl:next-iteration>
<xsl:with-param name="rain" select="$rainSum"/>
<xsl:with-param name="min" select="$minSum"/>
<xsl:with-param name="max" select="$maxSum"/>
</xsl:next-iteration>
</xsl:iterate>
</xsl:template>
</xsl:stylesheet>
Code-Beispiel: Output-CSV zu Übung 9 (Variante).
year; avg. min temp; avg max temp; rainSum
2015;5.616666666666666667;13.558333333333333333;665
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |