XPath 3.0, XPath 2.0, XPath 1.0 / XPath Funktionen / Zeit ist Geld / Toll, ein Kalender

Toll, ein Kalender

Toll, ein Kalender

Die XML Schema-Datentypen xs:date, xs:time und xs:dateTime haben einen klar definierten Aufbau. Die aktuelle Systemzeit ist ermittelbar durch current-dateTime(), current-date() bzw. current-time(). Wichtig sind noch Spezialfunktionen zur Formatierung. Diese können prozessorbedingt (auch bei unterschiedlichen Versionen desselben Anbieters) beträchtlich abweichen, so daß ein eingehendes Testen der Ergebnisse notwendig erscheint.

Rekursive Aufrufe können Tücken haben.

Das folgende Template ruft sich rekursiv selber auf und schreibt jeden Tag des Jahres 2017 formatiert in einen Ausgabestrom. Bei dem rekursiven Aufruf wird der jeweils nächste Tag berechnet ("$pheute + xs:dayTimeDuration('P1D')") und als Parameter für den nächsten Aufruf übergeben. Die Rekursion endet, sobald die Jahreszahl des jeweiligen Tages sich erhöht ("year-from-dateTime($vmorgen)").


  <xsl:template name="writeCalendar">
    <xsl:param name="pheute" as="xs:dateTime"/>
    <TAG>
      <xsl:value-of 
         select="format-dateTime($pheute, 
            'KW [W]: [F], [D1o] [MNn] [Y0001]')"/>
    </TAG>    
    <xsl:variable 
         name="vmorgen" 
         as="xs:dateTime" 
         select="$pheute + xs:dayTimeDuration('P1D')"/>
    <xsl:if 
         test="year-from-dateTime($vmorgen) &lt; 2018">
      <xsl:call-template 
           name="writeCalendar">
        <xsl:with-param 
             name="pheute" 
             select="$vmorgen"/>
      </xsl:call-template>
    </xsl:if>    
  </xsl:template>

Aufgerufen wird das Template mit


<xsl:call-template name="writeCalendar">
  <xsl:with-param 
       name="pheute" 
       select="current-dateTime()"/>
</xsl:call-template>

Resultat:


...
<TAG>KW 51: Samstag, 23. Dezember 2017</TAG>
<TAG>KW 51: Sonntag, 24. Dezember 2017</TAG>
<TAG>KW 52: Montag, 25. Dezember 2017</TAG>
<TAG>KW 52: Dienstag, 26. Dezember 2017</TAG>
<TAG>KW 52: Mittwoch, 27. Dezember 2017</TAG>
<TAG>KW 52: Donnerstag, 28. Dezember 2017</TAG>
<TAG>KW 52: Freitag, 29. Dezember 2017</TAG>
<TAG>KW 52: Samstag, 30. Dezember 2017</TAG>
<TAG>KW 52: Sonntag, 31. Dezember 2017</TAG>

wg / 28. November 2017



Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf:

Vorname
Nachname
Mailadresse







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: info2018@wilfried-grupe.de

www.wilfried-grupe.de/Zeitfunktionen1.html