Arbeiten mit Datumswerten
Wenn das Quelldokument Nodes für Datumswerte enthält, stehen Ihnen über die Datentypen xs:date oder xs:dateTime aus dem zugrundeliegenden XML-Schema die leistungsstarken XPath 2.0/3.0-Funktionen zur Bearbeitung von Datum und Uhrzeit zur Verfügung (siehe Beispiele unten). StyleVision bietet zur Unterstützung der Datentypen xs:date oder xs:dateTime über die Funktion Werteformatierung eine breite Palette an Funktionen zur Datenformatierung.
Anmerkung: Datums- und Uhrzeitwerte können mit XPath 1.0 nicht bearbeitet werden. Sie können jedoch auch mit XPath 1.0 die Datumswerte mit Hilfe der Werteformatierung formatieren.
Datumsberechnungen mit XPath 2.0
Datumswerte können in automatischen Berechnungen mit Hilfe von XPath 2.0-Ausdrücken bearbeitet werden. Im Folgenden finden Sie einige Beispiele dafür, welche Ergebnisse Sie mit XPath 2.0 Ausdrücken erhalten können.
•Mit Hilfe der XPath 2.0-Funktionen current-date() und current-dateTime() können Sie das aktuelle Datum bzw. das aktuelle Datum und die aktuelle Uhrzeit erhalten.
•Datumswerte können voneinander subtrahiert werden. Z.B.: current-date() - DueDate hätte als Ergebnis den Wert xdt:dayTimeDuration; z,B. den Wert P24D, d.h. eine positive Differenz von 24 Tagen.
•Mit Hilfe von XPath 2.0-Funktionen können Zeiteinheiten aus einer Zeitdauer extrahiert werden. Das Ergebnis von: days-from-duration(xdt:dayTimeDuration('P24D')) wäre die Ganzzahl 24.
Hier sehen Sie einen XPath 2.0 Ausdruck in einer automatischen Berechnung. Berechnet wird ein Zinssatz von 4 % für einen ausstehenden Betrag pro Tag. Das Ergebnis ist die Summe des ursprünglichen Betrags plus die angefallenen Zinsen:
if (current-date() gt DueDate)
then (round-half-to-even(InvoiceAmount +
(InvoiceAmount*0.04 div 360 *
days-from-duration((current-date() - DueDate))), 2))
else InvoiceAmount
Eine solche Berechnung wäre mit XPath 2.0 nur dann möglich, wenn das Element DueDate z.B. als Datentyp xs:date definiert wäre und wenn der Inhalt des Elements in lexikalisch korrekter Form eingegeben würde, also JJJJ-MM-TT[±HH:MM], wobei die Zeitzonenkomponente (durch das Präfix ±) optional ist.