Announcement

Collapse
No announcement yet.

Zeitstempel mittels XSLT 1.0 auf GMT+2 (+1) korrigieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeitstempel mittels XSLT 1.0 auf GMT+2 (+1) korrigieren

    Guten Tag!


    Ich habe gerade ein etwas kniffliges Problem, bei dem mir mit meinem begrenzten XSLT-Wissen leider noch keine Lösung einfällt:

    Innerhalb einer Webanwendung wird ein Web Service angesprochen, der eine SOAP-Nachricht zurückschickt, welche ich mittels XSLT in eine HTML-Ausgabe transformiere, was im Grunde auch gut funktioniert. Das SOAP-XML enthält jedoch auch Timestamps, welche folgendermaßen aussehen:


    HTML Code:
    <timestamp>2010-09-16T11:27:12.421Z</timestamp> // eigentlich ist es 13:27:12
    
    <timestamp>2010-09-16T11:27:12.421Z</timestamp> // same, same
    
    <timestamp>2010-09-16T11:59:16.203Z</timestamp> // ...

    Das Problem ist nun, dass diese Zeitstempel (offensichtlich GMT+0) im Gegensatz zur tatsächlichen Zeit um momentan 2 Stunden (Sommerzeit) im Rückstand sind. Zur Winterzeit ist es dann noch eine Stunde.

    Gibt es in XSLT 1.0 eine Möglichkeit, dies dynamisch so zu korrigieren, dass die Zeit immer stimmt? Hatte spaßenshalber mal mittels "substring()" alles aufgespalten und zur Stundenzahl jeweils 2 addiert, was aber natürlich eher witzig aussieht und ab einem bestimmten Punkt nichts mehr mit der Realität zu tun hat: Es ist dann mitunter "25 Uhr", es findet kein Datumssprung statt, etc.

    Vielleicht hat ja jemand eine Idee, wie man das umschiffen könnte.

  • #2
    Da XSLT und XPath 1.0 keinen Zeit- oder Datumsdatentypen haben, ist das eher schwierig. Je nach benutztem XSLT-Prozessor musst du nach Unterstützung durch Erweiterungsfunktionen suchen. Oder man muss nach Lösungen mit Sprachen suchen, die Unterstützung für Zeit- oder Datumsdatentypen und deren Formatierung haben, also etwa XSLT 2.0.

    Comment


    • #3
      Hallo und Dankeschön für Deine Antwort!

      Wir benutzen ausschließlich die browsereigenen XSLT-Prozessoren, die wohl alle nur den XSLT-1.0-Standard unterstützen. Dies soll laut Auftraggeber auch so bleiben. Hatte schon überlegt, ob man da mittels JavaScript noch irgendwas machen kann (da gibt's ja recht viele Methoden, mit denen sich Datumsangaben manipulieren lassen), aber das erscheint mir irgendwie ganz schön übertrieben für die Anpassung eines Strings...

      Comment


      • #4
        Mit IE, wo MSXML als XSLT-Prozessor benutzt wird, kann man Erweiterungsfunktionen in JScript oder VBScript schreiben, siehe http://msdn.microsoft.com/en-us/library/ms256042.aspx. Beachte, dass diese Dokumentation leider für MSXML als auch für die .NET Prozessoren gilt, man muss also aufpassen, dass man nur die Teile der Dokumentation benutzt, die für MSXML relevant sind, wenn es um IE geht.
        Ansonsten nützt natürlich die Fähigkeit von IE/MSXML, Erweiterungsfunktionen zu verarbeiten, gar nichts, wenn die Stylesheets auch in anderen Browsern laufen sollen. Aber da bleibt dann nur eine Websuche, ob jemand sich die Mühe gemacht hat, in XSLT 1.0 Datums- und/oder Zeitformatierung zu implementieren, oder man muss sich selbst die Mühe machen.

        Comment

        Working...
        X