Announcement

Collapse
No announcement yet.

Variablenzuweisung und Benutzung

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variablenzuweisung und Benutzung

    Hallo Leute.
    Ich habe heute mit XSLT angefangen und stehe vor einem Problem.

    Ich habe eine XML-Datei, die ein RSS-Feed ist und möchte diese formattieren, da der Feed in älteren Browsern nicht angezeigt wird.

    Hierzu möchte ich es hinkriegen, dass man den Titel anklicken kann, der Link soll dann auf die Seite weiterleiten die im <link>-Tag definiert ist.

    Hier ist mal ein Ausschnitt aus der XML-Datei:
    HTML Code:
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <?xml-stylesheet type="text/xsl" href="news_rss.xsl" ?>
    <rss version="2.0">
       <channel>
          <title>Der Titel</title>
          <link>http://meineseite.de</link>
          <description>Die Beschreibung</description>
          <language>de-DE</language>
          <lastBuildDate>Sat, 08 Sep 2007 18:52:10 +0200</lastBuildDate>
    
          <item>
             <title>der Newstitel</title>
    	 <author>[email protected] (Author) </author>
             <link>http://meienseite.de/news.php?eintrag=15</link>
    	 <description>Beschreibung</description>
    	 <pubDate>Sat, 08 Sep 2007 18:52:10 +0200</pubDate>
          </item>
    
          [ ...  - Insgesamt 50 items ]
       </channel>
    </rss>
    Das habe ich versucht mit XSLT zu realisieren, einiges hab ich auch schon geschafft, nur eben diesen Link nicht. Ich bekomme allerdings immer die Meldung, dass es fehlschlägt

    Hier ist die XSLT-Datei
    HTML Code:
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    	<xsl:output method="html"/>
    	
    	<xsl:template match="/">
    		<html>
    		<head>
    			<link rel="stylesheet" type="text/css" href="news_rss.css" />
    		</head>
    		<body>
    			<h1><xsl:value-of select="rss/channel/title"/></h1>
    			<xsl:value-of select="rss/channel/description"/>
    			<br />
    			<xsl:for-each select="rss/channel/item">
    				<xsl:variable name="linkurl" select="link" />
    				<div class="rss_entry">
    					<a href="{$link}"><xsl:value-of select="title" /></a>
    				</div>
    			</xsl:for-each>
    		</body>
    		</html>
    	</xsl:template>
    
    </xsl:stylesheet>
    In $link steht kein Wert, es wird noch nicht einmal geparst. Der Link wäre folglich nur {$link}... Auch wenn man versucht die Variable normal als Text darzustellen, wird nur {$link} ausgegeben.
    Wenn man den Inhalt des Links einfach so reinschreibt, kommt auch der Verarbeitungsfehler
    HTML Code:
    <a href="<xsl:value-of select='link'/>"><xsl:value-of select="title" /></a>
    Was mache ich falsch? Wäre nett, wenn jemand einen Tip für mich hätte.
    Vielen Dank schon mal im Voraus

  • #2
    Deine Variable heißt nicht $link, sondern $linkurl:

    Code:
    <a href="{$linkurl}"><xsl:value-of select="title" /></a>

    Comment


    • #3
      Ja, hab mich da vertippt, ging aber dennoch nicht

      Comment


      • #4
        Funktioniert bei mir mit dem angegebenen Datensatz unter IE 6+7, FF 2.0.0.7 und Opera 9.23 (auch mit x-fach geklonten item-Elementen).

        BTW: Die Variable ist nicht unbedingt nötig, denn ... href="{link}" ... führt ebenfalls zum Ziel.

        Ich empfehle, die Transformation serverseitig auszuführen, z. B. mittels PHP. Dann bekommt jeder Browser mit dem HTML-Ergebnis klar. Außerdem haben neuere Browser auch eigene RSS-/Atom-Vorlagen eingebaut.

        Comment


        • #5
          Ich weiß jetzt nicht genau, was du mit der serverseitigen Transformation meinst, allerdings geht jetzt der Link.
          Ich war einfach zu doof um nur mit dem {link} zu kommen....
          Vielen, vielen Dank

          Comment

          Working...
          X