Markus: Datumsformat "Null hinzufügen"

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)&lt;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

  1. Hallo,

    <td class="spalte" width="300">
    <xsl:when test="string-length(Installation/D)&lt;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

    1. 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)&lt;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

  2. Hallo,

    vielleicht gleich bei der Eingabe die führende 0 verwenden.

    bydey

    --
    -- noch immer ein erfolgloser <DIV> Jünger --
  3. <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

    --
    „Weisheit ist nicht das Ergebnis der Schulbildung, sondern des lebenslangen Versuchs, sie zu erwerben.“ (Albert Einstein)