XSLT-date-Vergleich
Guten morgen,
ich habe viele Antworten zu diesem Thema, aber ohne Erfolg...sehr Leid...
ich habe ein xml-Dokument mit einem element 'Kurse' ("Sitzungen"), die hat 'natürlich' éléments ("seance") : (habe ich gelöscht, unnötige details)
....
<seances>
<seance date="2014-09-10T00:00:01">
...details in a 'seance'
</seance>
<seance date="2013-09-10T00:00:01">
...
</seance>
...other 'seance' elements
</seances>
und mein xslt-stylesheet erzeugt ein html-Dokument :
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
xmlns:date="http://exslt.org/dates-and-times"
extension-element-prefixes="date"
xmlns:gr="http://www.w3.org/2000/svg" >
<xsl:output method="html" encoding="iso-8859-1" indent="yes" />
<xsl:import href="date.xsl" />
zu merken, das Datum des Tages :
<xsl:variable name="ddj" as="xs:dateTime" select="date:date-time()"/>
möchte ich zeigen nur ein element, natürlich, wenn das Datum des Kurses ist ok (das Datum liegt nicht in der Zukunft) :
ich habe versucht, viele Bedingungen, wie diese aber es ist immer falsch :
<xsl:template match="seance">
<xsl:variable name="dateseance" as="xs:dateTime" select="@date"/>
<xsl:value-of select="$dateseance" /><xsl:value-of select="$ddj" />
<xsl:choose>
<xsl:when test="$ddj >= $dateseance">
<xsl:text>-OK-</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>-Not OK-</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Termin scheint ok zu sein, aber es druckt :
2014-09-10T00:00:012013-09-11T10:00:00.004+02:00.-Nicht OK- (nicht gedruckt !)
anderen Linien werden sollte "ok" :
2013-09-10T00:00:012013-09-11T10:00:00.004+02:00.-Nicht OK - 2012-09-10T00:00:012013-09-11T10:00:00.004+02:00.-Nicht OK - 2012-09-10T00:00:012013-09-11T10:00:00.004+02:00.-Nicht OK - 2012-09-10T00:00:012013-09-11T10:00:00.004+02:00.-Nicht OK - 2012-09-10T00:00:012013-09-11T10:00:00.004+02:00.-Nicht OK-
ich hoffe, dass es verstanden werden kann...
vielen Dank für jede Hilfe.
Einer Präzision : ich verarbeite es in mozilla/firefox
möglich, Duplikat der xslt 2.0 vergleichen, Aktuelles Datum, start-und end-Datum
InformationsquelleAutor Patrick Dezecache | 2013-09-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Folgenden sehen Sie ein XSLT 1.0-Lösung ignoriert, dass Zeit-Zonen und übernimmt sowohl Datum/Zeit-Werte werden in der gleichen Zeitzone:
Dies funktioniert, weil es konvertiert das Datum/Zeit-Werte in zahlen, die in XSLT 1.0, kann verglichen werden mit
>
und<
.InformationsquelleAutor G. Ken Holman
Scheint es kein problem bei der Verwendung der integrierten Funktionen in XSLT 2.0 für Datum und Uhrzeit:
Gibt es einen Grund, Sie fühlen die Notwendigkeit der Verwendung von exslt?
ok, ich habe Ihre Korrektur : verwenden Sie die Funktion : current-dateTime().
wenn ich deinem Beispiel, bekomme ich die Meldung von Mozilla/Firefox : "Erreur lors de la XLST-transformation : Une fonction d' Erweiterung von XPath-inconnue a été appelée.", ein inattended erweiterte Xpath-Funktion aufgerufen wurde...
Ich verwendet
current-dateTime()
weil Ihrem stylesheet, sagtversion="2.0"
und Sie mit XSLT 2.0-Funktionen wieas=
. Firefox keine Unterstützung für XSLT 2.0. XSLT 1.0 keine Termine und keine Unterstützung für den Vergleich von strings mit "<", nur die zahlen verglichen werden können mit "<".vielen Dank für diese Erklärung.
InformationsquelleAutor G. Ken Holman