klaus: rss feed st

hallo zusammen,
ich bin ein anfänger in sachen xsl…muss aber trotzdem ein rss feed auf eine homepage einbinden… dafür brauche ich die umsetzung von xml in xsl. die theorie soweit so gut.. mein einzubindendes feed ist http://feeds.feedburner.com/tapestrydilbert.
mein bisheriges (und wohl leider falsches) xsl ist das hier…

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  • <xsl:template match="/">
      <xsl:variable name="image" select="substring-before(substring-after(rss/channel/item/description,'src='), 'gif')" />
      <xsl:variable name="imgresult" select="concat(substring($image,2), 'gif')" />

<html>
<body>

<img src="{$imgresult}" />
<br />

</body>
</html>
</xsl:template>
</xsl:stylesheet>

ich dachte es sei nicht all zu schwer weil es ja "nur" ein bild beinhaltet aber da lag ich wohl falsch :)
kann mir bitte jemand helfen den/die fehler zu finden?
vielen dank,
klaus

  1. hmm, vielleicht muss ich die frage anders formulieren...
    ich moechte diesen teil

    • <item>
        <title>Comic for 27 Sep 2006</title>
        <link>http://www.dilbert.com/comics/dilbert/archive/dilbert-20060927.html</link>
        <description><img src="http://www.dilbert.com/comics/dilbert/archive/images/dilbert2002714660927.gif" border="0" /></description>
        <enclosure url="http://www.dilbert.com/comics/dilbert/archive/images/dilbert2002714660927.gif" length="30319" type="image/gif" />
        <pubDate>Wed, 27 Sep 2006 00:01:00 -0400</pubDate>
        </item>

    in ein xsl sheet packen aber ich verstehe nicht was an meinem ansatz falsch ist.

  2. Hallo,

    ich bin ein anfänger in sachen xsl…muss aber trotzdem ein rss feed auf eine homepage einbinden… dafür brauche ich die umsetzung von xml in xsl. die theorie soweit so gut.. mein einzubindendes feed ist http://feeds.feedburner.com/tapestrydilbert.
    mein bisheriges (und wohl leider falsches) xsl ist das hier…

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    • <xsl:template match="/">
        <xsl:variable name="image" select="substring-before(substring-after(rss/channel/item/description,'src='), 'gif')" />
        <xsl:variable name="imgresult" select="concat(substring($image,2), 'gif')" />

    <html>
    <body>

    <img src="{$imgresult}" />
    <br />

    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>

    ich dachte es sei nicht all zu schwer weil es ja "nur" ein bild beinhaltet aber da lag ich wohl falsch :)

    ------

    • <item>
        <title>Comic for 27 Sep 2006</title>
        <link>http://www.dilbert.com/comics/dilbert/archive/dilbert-20060927.html</link>
        <description><img src="http://www.dilbert.com/comics/dilbert/archive/images/dilbert2002714660927.gif" border="0" /></description>
        <enclosure url="http://www.dilbert.com/comics/dilbert/archive/images/dilbert2002714660927.gif" length="30319" type="image/gif" />
        <pubDate>Wed, 27 Sep 2006 00:01:00 -0400</pubDate>
        </item>
      --------

    Der Anweisung "substring-before(substring-after(rss/channel/item/description,'src='), 'gif')" such in _deinem: XML-Datei.
    Wenn du direkt auf die Feed-Datei zugreigen willst, geht das nur mit doucment()

    <xsl:variable name="feed" select="document(http://feeds.feedburner.com/tapestrydilbert)" />

    substring-before(substring-after($feed/rss/channel/item/description,'src='), 'gif')

    Grüße
    Thomas

    1. hi thomas,
      danke fuer die antwort.
      habe nun meinen
       "substring-before(substring-after(rss/channel/item/description,'src='), 'gif')"
      durch dein ausgetauscht... »» <xsl:variable name="feed" select="document(http://feeds.feedburner.com/tapestrydilbert)" />

      substring-before(substring-after($feed/rss/channel/item/description,'src='), 'gif')

      trotzdem bekomme ich nur eine leere html Seite zurueck...?!?
      Meine Variable image heisst nun feed und ich rufe sie auch mit $feed im html-teil auf.
      gruesse, klaus

      1. Hallo,

        trotzdem bekomme ich nur eine leere html Seite zurueck...?!?
        Meine Variable image heisst nun feed und ich rufe sie auch mit $feed im html-teil auf.

        OK ...
        Wie verbindst du das XML des Feed mit deiner XSL?
        Serverseitig z.B. durch ein PHP-Script?

        Oder hast du ein XML in dem z.B. nur die URL des Feed steht und verwendest dieses XML mit dem XSL?

        Wie sieht das XSL wirklich aus? (aus den kleinem Teil kann ich hier nicht sagen, was da sonst falsch ist)

        Grüße
        Thomas

        1. hi thomas,

          ich habe eine HTML

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
           "http://www.w3.org./TR/xhtml1/DTD/xhtml1-strict.dtd">

          <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

          <script language="JavaScript">
          <!-- top frame füllen -->
          var xml = new ActiveXObject("MSXML2.DOMDocument.3.0");
          var xsl = new ActiveXObject("MSXML2.DOMDocument.3.0");

          xml.async = false;
          xsl.async = false;

          xml.load("http://feeds.feedburner.com/tapestrydilbert");
          xsl.load("rss_dilbert.xsl");

          window.document.write(xml.transformNode(xsl));
          </script>
          -------------------------------------------------------------

          hier rufe ich die xml und die xsl auf.
          die xsl sieht so aus:

          -------------------------------------------------------------
           <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
            -

          • <xsl:template match="/">
              <xsl:variable name="feed" select="document(http://feeds.feedburner.com/tapestrydilbert)" />
              substring-before(substring-after($feed/rss/channel/item/description,'src='), 'gif')
          • <html>
          • <body>
              <img src="{$feed}" />
              <br />
              </body>
              </html>
              </xsl:template>
              </xsl:stylesheet>
            ------------------------------------------------------------
            ich will ja nur dieses eine .gif aus dem feed haben... keinen titel, kein datum usw...

          danke fuer deine hilfe!!
          klaus

          1. Hallo,

            ich habe eine HTML

            xml.load("http://feeds.feedburner.com/tapestrydilbert");

            Da habe ich schlechte Nachrichten für dich: die Browser verweigern den Zugriff wenn du von einem Domain auf eine andere zugreifen willst:
            Bsp. (quellcode gucken) http://www.unet.univie.ac.at/~a9105535/test/http_xml.html
            (wirst du nichts sehen ... eben deshalb)

            Das bezieht sich auch auf die document()-Funktion.
            (Das ganze ist etwas widersinnig, denn wenn man das Bild drekt so angibt <img src="http:// ... /x.gif" wird es ja ohne murren eingebunden)

            Dir bleibt nur übrig, dass du den Feed serverseitig bearbeitest (ob du die Feed-Datei immer wieder einfach nur am Server speicherst und dann diese Datei in deinem HTML-Ladest oder die Transformation gleich am Server machst).

            Grüße
            Thomas

            1. Uff, jetzt nochmal fuer dummies...

              Da habe ich schlechte Nachrichten für dich: die Browser verweigern den Zugriff wenn du von einem Domain auf eine andere zugreifen willst:
              Bsp. (quellcode gucken) http://www.unet.univie.ac.at/~a9105535/test/http_xml.html
              (wirst du nichts sehen ... eben deshalb)

              -> ich sehe den quellcode...

              Dir bleibt nur übrig, dass du den Feed serverseitig bearbeitest (ob du die Feed-Datei immer wieder einfach nur am Server speicherst und dann diese Datei in deinem HTML-Ladest oder die Transformation gleich am Server machst).

              -> heisst das jetzt fuer mich dass ich jeden tag das feed neu einspeichern muss? Was meinst Du mit Transformation gleich am Server machen...?
              Sorry fuer die dummen fragen ;) bin verwirrt weil mit den google-news und yahoo-wetter usw hat das alles prima geklappt...

              1. Hallo,

                Uff, jetzt nochmal fuer dummies...

                Da habe ich schlechte Nachrichten für dich: die Browser verweigern den Zugriff wenn du von einem Domain auf eine andere zugreifen willst:
                Bsp. (quellcode gucken) http://www.unet.univie.ac.at/~a9105535/test/http_xml.html
                (wirst du nichts sehen ... eben deshalb)

                -> ich sehe den quellcode...

                Darin sichst du, dass es dort versucht wird auf eine XML (und auch eine XSL) Datei an einem anderen Server zuzugreifen, was die Browser aus Sicherheitsgründen nicht erlauben.

                Dir bleibt nur übrig, dass du den Feed serverseitig bearbeitest (ob du die Feed-Datei immer wieder einfach nur am Server speicherst und dann diese Datei in deinem HTML-Ladest oder die Transformation gleich am Server machst).

                -> heisst das jetzt fuer mich dass ich jeden tag das feed neu einspeichern muss?

                Ja, entweder das, wobei du mit einem Script am Server steuern könntest (falls du z.B. Cron-Jobs am Server einrichten kannst).

                Was meinst Du mit Transformation gleich am Server machen...?

                Damit meine ich, dass du statt eine HTML-Datei z.P. eine PHP-Datei hast. Beim Aufruf der Datei holt der PHP-Script dann den Feed, führt die XML/XSL-Tranformation aus und sendendet das Ergebnis als HTML an den Browser.
                Es gibt eine meine freie PHP (oder auch Perl) Skripte im Netz für diesen Zweck (also dafür, um fremde Feeds in die eigene Seiten einbinden)

                Sorry fuer die dummen fragen ;) bin verwirrt weil mit den google-news und yahoo-wetter usw hat das alles prima geklappt...

                Dazu kann ich dir nichts sagen, da ich nicht weiss wie du das gemacht hast.

                Grüße
                Thomas