Datumsformat "Null hinzufügen"
Markus
- xsl
0 Thomas Meinike0 Markus
-1 dey0 Gunnar Bittersmann
Hallo,
Ich will eine Website erstellen, in welchem Datumsangaben wichtig sind.
Das Datum extrahiere ich aus einem XML Dokument, welches folgendes Format hat :
...
<Installation>
<DateiDatum>
<Y>2004</Y>
<M>5</M>
<D>27</D>
<H>11</H>
<MI>37</MI>
<S>32</S>
</DateiDatum>
</Installation>
...
<Installation>
<DateiDatum>
<Y>2005</Y>
<M>9</M>
<D>27</D>
<H>16</H>
<MI>4</MI>
<S>38</S>
</DateiDatum>
</Installation>
...
Aus ästhetischen Gründen soll bei Datum und Uhrzeit immer eine Null eingefügt werden, wenn die Ziffer einstellig ist.
Ich hatte folgendes versucht ( die Werte stehen in einer Tabelle drin):
<td class="spalte" width="300">
<xsl:when test="string-length(Installation/D)<2">
0<xsl:value-of select="Installation/D"/>
</xsl:when>
xsl:otherwise
<xsl:value-of select="Installation/D"/>
</xsl:otherwise>
</td>
Leider kommt nicht das gewünschte Ergebnis raus.
Für das XSL-Stylesheet kommt z.B. das hier raus "02727"
Danke schon mal im voraus !
Markus
Hallo,
<td class="spalte" width="300">
<xsl:when test="string-length(Installation/D)<2">
0<xsl:value-of select="Installation/D"/>
</xsl:when>
xsl:otherwise
<xsl:value-of select="Installation/D"/>
</xsl:otherwise>
</td>Leider kommt nicht das gewünschte Ergebnis raus.
Die Elemente xsl:when und xsl:otherwise sind Kindelemente von xsl:choose.
Für das XSL-Stylesheet kommt z.B. das hier raus "02727"
Kann ich mir gar nicht vorstellen, weil der Code a) so nicht funktioniert (wegen fehlendem xsl:choose) und b) ist D lt. XML-Fragment kein unmittelbares Kindelement von Installation.
MfG, Thomas
Kann ich mir gar nicht vorstellen, weil der Code a) so nicht funktioniert (wegen fehlendem xsl:choose) und b) ist D lt. XML-Fragment kein unmittelbares Kindelement von Installation.
MfG, Thomas
Du hattest natürlich recht.
Hatte die ältere Version des Stylesheets hier reinkopiert.
Hier die "richtige" :
<td class="spalte" width="300">
<xsl:when test="string-length(DateiDatum/D)<2">
0<xsl:value-of select="DateiDatum/D"/>
</xsl:when>
xsl:otherwise
<xsl:value-of select="DateiDatum/D"/>
</xsl:otherwise>
</td>
Aber ich hatte tatsächlich kein xsl:choose !
Das war der Knackpunkt !
Danke; jetzt läufts!
Grüsse,
Markus
Hallo,
vielleicht gleich bei der Eingabe die führende 0 verwenden.
bydey
<Installation>
<DateiDatum>
<Y>2004</Y>
<M>5</M>
<D>27</D>
<H>11</H>
<MI>37</MI>
<S>32</S>
</DateiDatum>
</Installation>
Markus,
Warum solch eine komplizierte Datenstruktur? Ein Zeitpunkt ist doch nur ein Datum (hier: Einzahl von Daten), nicht sechs. Warum nicht einfach
<Installation>
<DateiDatum>2004-05-27T11:37:32</DateiDatum>
</Installation>
oder
<foo xmlns:dc="http://purl.org/dc/elements/1.1/">
<Installation>
<dc:date>2004-05-27T11:37:32</dc:date>
</Installation>
<foo>
Die Angaben nach W3C Date/Time Format ([XMLSCHEMA-2-Datentypen] Abschnitt D) (siehe auch Datumsformat [Wikipedia]) lassen sich mit XSLT/XPath immer noch – wenn gewünscht – in ein anderes Format bringen.
Live long and prosper,
Gunnar