mark: pubDate

hallo zusammen,

ich habe eine frage zum pubDate.

mein xsl-code sieht folgendermassen aus:

  • <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  • <xsl:template match="/">
  • <HTML>
  • <BODY>
  • <table BORDER="0">
  • <xsl:for-each select="rss/channel/item[position() <= 15]">
  • <tr>
  • <td>
  • <a href="{link}" target="_new">
  • <b>
      <xsl:value-of select="title" />
      </b>
      </a>
      </td>
      </tr>
  • <tr>
  • <td>
      <xsl:value-of select="substring(pubDate, 1, 5)" />
      <xsl:value-of select="substring(pubDate, 9, 2)" />
      |
      <xsl:value-of select="substring(pubDate, 6, 2)" />
      |
      <xsl:value-of select="substring(pubDate, 12, 4)" />
      </td>
      </tr>
      </xsl:for-each>
      </table>
      </BODY>
      </HTML>
      </xsl:template>
      </xsl:stylesheet>

irgendwas muss mit dem datum falsch sein denn in der Ausgabe sieht es so aus:
Mon, Se| 25| 200
mir fehlt die "6" von 2006... kann mir jemand sagen woran das liegt?

danke und gruss,
mark

  1. Hallo Mark,

    es würde helfen, wenn Du das Format von pubDate mit angeben würdest.

    Du weisst, dass das erste Zeichen im String im Gegensatz zu anderen Sprachen nicht den Index 0, sondern 1 hat?

    Gruß
    Olaf Schneider

    1. es würde helfen, wenn Du das Format von pubDate mit angeben würdest.

      uff, du hast mich erwischt... kann man das Format nicht dem Quellcode entnehmen...?
      substring(pubDate, 1, 5)

      sorry, bin ratlos.

      1. es würde helfen, wenn Du das Format von pubDate mit angeben würdest.

        uff, du hast mich erwischt... kann man das Format nicht dem Quellcode entnehmen...?

        nein! Es gibt tausende Formatierungsmöglichketen für Datumsangaben. Welche benutzt Du? Bitte gib doch einfach ein Beispiel an.

        Beispiele: 2006-09-26 | 20060926 | Sept 26 2006 | Dienstag, der 26. September | 1159285351 …

        Gruß
        Olaf

        1. Ah, Ok, ich benutze

          September 25, 2006, amerikanisches Format.

          1. September 25, 2006, amerikanisches Format.

            Jetzt kommen wir der Sache schon näher. Die Längen der Monatsnamen sind natürlich verschieden. Da jedoch nach dem Monatsnamen ein Leerzeichen folgt, bieten sich die Funktionen substring-before und substring-after an. Mit festen Positionswerten hat man bei diesem Format keine Chance.

            Gruß
            Olaf

            1. ich koennte auch das hier verwenden

              Fri, Se| 15| 2006

              das ist immer gleich lang...
              momentan sieht die ausgabe so aus:
              Fri, Se| 15| 200  die "6" fehlt...
              wenn ich die "6" bekommen koennte waere ich gluecklich!

              1. Hallo mark,

                ich koennte auch das hier verwenden

                Fri, Se| 15| 2006

                das ist immer gleich lang...

                Dein xsl kann bei keinem Deiner vorgeschlagenen Formate diese Ausgabe produzieren, da Du mit Substring Zeichenketten vertauscht ausgibst. Daher ist mindestens eine Deiner hier im Forum gemachten Angaben falsch. Ohne ein aktuelles xsl, ein aktuelles xml (oder einen Ausschnitt) und die relevante Ausgabe kann ich Dir leider nicht helfen.

                Gruß
                Olaf

                1. wie gesagt, die momentane ausgabe ist

                  Mon, Se| 25| 200
                  ohne die "6"

                  meine xsl mit der das ganze laeuft ist folgende:

                  • <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
                  • <xsl:template match="/">
                  • <HTML>
                  • <BODY>
                  • <table BORDER="0">
                  • <xsl:for-each select="rss/channel/item[position() <= 15]">
                  • <tr>
                  • <td>
                  • <a href="{link}" target="_new">
                  • <b>
                      <xsl:value-of select="title" />
                      </b>
                      </a>
                      </td>
                      </tr>
                  • <tr>
                  • <td>
                      <xsl:value-of select="substring(pubDate, 1, 5)" />
                      <xsl:value-of select="substring(pubDate, 9, 2)" />
                      |
                      <xsl:value-of select="substring(pubDate, 6, 2)" />
                      |
                      <xsl:value-of select="substring(pubDate, 12, 4)" />
                      </td>
                      </tr>
                      </xsl:for-each>
                      </table>
                      </BODY>
                      </HTML>
                      </xsl:template>
                      </xsl:stylesheet>

                  und das feed das ich einbinden will ist

                  http://www.porsche.com/usa/rss/

                  wie gesagt, ich kann nur diese "6" nicht anzeigen lassen...
                  vielen dank fuer die hilfe!

                  1. Hallo Mark,

                    jetzt haben wir langsam die Informationen zusammen. Das Format von pubdate ist (beispielsweise)

                    Fri, 22 Sep 2006 00:00:00 GMT

                    Du hattest

                    September 25, 2006, amerikanisches Format.

                    geschrieben und damit wohl Deine Ausgabe gemacht.

                    Zählen wir doch einmal die Positionen:

                    Fri, 22 Sep 2006 00:00:00 GMT

                    00000000011111111112222222222
                    12345678901234567890123456789

                    dann siehst Du genau, an welcher Position das Jahr beginnt und kannst Dein xsl korrigieren.

                    Gruß
                    Olaf

                    P.S.: Versuche das nächste Mal von Anfang an alle relevanten Informationen zur Verfügung zu stellen; dann kann man sich so ein hin und her sparen.

                    1. Zählen wir doch einmal die Positionen:

                      Fri, 22 Sep 2006 00:00:00 GMT

                      00000000011111111112222222222
                      12345678901234567890123456789

                      nochmal DANKE fuer deine hilfe, jetzt hab ich meine "6".
                      die loesung ist
                      <xsl:value-of select="substring(pubDate, 12, 5)"/>

                      die 5 hab ich durch ausprobieren rausgefunden...
                      danke nochmal!

                      1. Fri, 22 Sep 2006 00:00:00 GMT

                        00000000011111111112222222222
                        12345678901234567890123456789

                        <xsl:value-of select="substring(pubDate, 12, 5)"/>

                        substring(pubDate, 13, 4) würde es auch tun, dann hat's allerdings ein Leerzeichen weniger.

                        Gruß
                        Olaf