Zum Inhalt springen

[XSL/XML] <a href="">...</a> als Link


freq.9

Empfohlene Beiträge

Ich habe mir eine RSS-Klasse in PHP5 geschrieben und wollte den Output (XML) nun mit XSL "stylen". Nun habe ich in einem der Einträge ein Link in Form von:

<a href="url.ext">text</a>

aber dies soll auch als Link angezeigt werden und nicht als Plaintext. Wie mache ich das? Habe in meinem XSL-Buch geguckt und auch schon im Netz rumgesucht aber keine passende Hilfen gefunden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mit euren Antworten kann ich bis jetzt leider nichts anfangen o_O...

@kills:

Das in dem anderen Thread hat eher was mitm DTD zutun und weniger direkt mit XSL.

@Enrico P.:

Wie meinst du das? Wie soll ich denn ein Template für die Links erstellen?

Fakt ist bis jetzt, dass die Links in meiner XML Datei, die durch XSL gestyled wird als Plaintext und nicht als Link dargestellt werden. Somit kann ich die Links nicht klickt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

@kills:

Das in dem anderen Thread hat eher was mitm DTD zutun und weniger direkt mit XSL.

Der Doctype ist nichts anderes wie jedes andere HTML Element...

------------------------------------------

könntest du mal bitte ein beispiel posten, wie dein XML u. XSL aussieht, was dabei rauskommt u. was eigentlich rauskommen sollte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hmmm da war was falsch und nun isses noch dümmer :!

Ich habe gemerkt, dass < und > als < und > angezeigt wurden. Nun hab ich daraus mal < und > gemacht und nun sind die Links garnicht mehr da, da es halt XML ist und es aussieht wie ein normales Element.

-----------------------------------------------------------------------

Zu stylen ist eine einfache XML Datei mit RSS 2.0 Format:

<?xml version="1.0"?>

<?xml-stylesheet href="./rss2.xsl" type="text/xsl"?>

<rss version="2.0">

 <channel>

  <title>Liftoff News</title>

  <link>http://liftoff.msfc.nasa.gov14.02.2005</link>

  <description>Liftoff to Space Exploration.</description>

  <language>en-us</language>

  <pubDate>Tue, 10 Jun 2003 04:00:00 GMT</pubDate>

  <lastBuildDate>Tue, 10 Jun 2003 09:41:01 GMT</lastBuildDate>

  <docs>http://blogs.law.harvard.edu/tech/rss</docs>

  <generator>Weblog Editor 2.0</generator>

  <managingEditor>editor@example.com</managingEditor>

  <webMaster>webmaster@example.com</webMaster>


  <item>

   <title>Star City</title>

   <link>http://liftoff.msfc.nasa.gov/news/2003/news-starcity.asp</link>

   <description>How do Americans get ready to work with Russians aboard the International Space Station? They take a crash course in culture, language and protocol at Russia's <a href="http://howe.iki.rssi.ru/GCTC/gctc_e.htm">Star City</a>.</description>

   <pubDate>Tue, 03 Jun 2003 09:39:21 GMT</pubDate>

   <guid>http://liftoff.msfc.nasa.gov/2003/06/03.html#item573</guid>

  </item>

  <item>

   <description>Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a <a href="http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm">partial eclipse of the Sun</a> on Saturday, May 31st.</description>

   <pubDate>Fri, 30 May 2003 11:06:42 GMT</pubDate>

   <guid>http://liftoff.msfc.nasa.gov/2003/05/30.html#item572</guid>

  </item>

  <item>

   <title>The Engine That Does More</title>

   <link>http://liftoff.msfc.nasa.gov/news/2003/news-VASIMR.asp</link>

   <description>Before man travels to Mars, NASA hopes to design new engines that will let us fly through the Solar System more quickly.  The proposed VASIMR engine would do that.</description>

   <pubDate>Tue, 27 May 2003 08:37:32 GMT</pubDate>

   <guid>http://liftoff.msfc.nasa.gov/2003/05/27.html#item571</guid>

  </item>

  <item>

   <title>Astronauts' Dirty Laundry</title>

   <link>http://liftoff.msfc.nasa.gov/news/2003/news-laundry.asp</link>

   <description>Compared to earlier spacecraft, the International Space Station has many luxuries, but laundry facilities are not one of them.  Instead, astronauts have other options.</description>

   <pubDate>Tue, 20 May 2003 08:56:02 GMT</pubDate>

   <guid>http://liftoff.msfc.nasa.gov/2003/05/20.html#item570</guid>

  </item>

 </channel>

</rss>
und hier mal die rss2.xsl
<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"

	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output

  omit-xml-declaration="yes"

   method="html"

   media-type="text/html"

   encoding="UTF-8"

   doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"

   doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />

 <xsl:output method="html" />

 <xsl:template match="/rss/channel">

  <html>

  <head>

   <title><xsl:value-of select="title" /></title>

   <link rel="stylesheet" type="text/css" href="rss.css" />

  </head>

  <body>

   <xsl:for-each select="item">

    <xsl:sort select="title" />

    <div class="item">

     <xsl:choose>

      <xsl:when test="title!=''">

       <xsl:value-of select="title" />

      </xsl:when>

      <xsl:otherwise>

       <i><NULL></i>

      </xsl:otherwise>

     </xsl:choose>

     <span class="pubDate">___(<xsl:value-of select="pubDate" />)</span>

     <div class="descr">

      <xsl:value-of select="description" /><br />

      <xsl:if test="link!=''">

       <br />

       <b>Link:</b><xsl:value-of select="link" /><br />

      </xsl:if>

      <xsl:if test="guid!=''">

       <xsl:choose>

        <xsl:when test="link!=''">

         <b>GUID:</b><xsl:value-of select="guid" /><br />

        </xsl:when>

        <xsl:otherwise>

         <br />

         <b>GUID:</b><xsl:value-of select="guid" /><br />

        </xsl:otherwise>

       </xsl:choose>

      </xsl:if>

     </div>

    </div>

   </xsl:for-each>

  </body>

  </html>

 </xsl:template>

</xsl:stylesheet>
Damit es besser aussieht hier auch mal die rss.css:
body {

	background-color: rgb(255, 255, 255);

	color: rgb(0, 0, 0);

	font-family: Courier New;

	font-size: 9.5pt;

}


div.item {

	width: 50%;

	background-color: rgb(240, 240, 240);

	border: 1px solid rgb(0, 0, 0);

	padding: 0.5em;

	margin: 0 auto 1em;

	font-weight: bold;

}


div.descr {

	background-color: rgb(250, 250, 250);

	border: 1px solid rgb(100, 100, 100);

	padding: 0.2em;

	margin: 0.2em 0 0.2em 0;

	font-weight: normal;

}


span.pubDate {

	font-weight: normal;

	font-size: 8pt;

	font-style: italic;

}

Link zu diesem Kommentar
Auf anderen Seiten teilen

Und wenn ich so mach, dann geht garnichts mehr, ausser ich mach was falsch. Hier mal die neue XSL Datei:

<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"

	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output

  omit-xml-declaration="yes"

   method="html"

   media-type="text/html"

   encoding="UTF-8"

   doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"

   doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />

 <!-- <xsl:output method="html" /> -->

 <xsl:template match="/rss/channel">

  <html>

  <head>

   <title><xsl:value-of select="title" /></title>

   <link rel="stylesheet" type="text/css" href="rss.css" />

  </head>

  <body>

   <xsl:for-each select="item">

    <xsl:sort select="title" />

    <div class="item">

     <xsl:choose>

      <xsl:when test="title!=''">

       <xsl:value-of select="title" />

      </xsl:when>

      <xsl:otherwise>

       <i><NULL></i>

      </xsl:otherwise>

     </xsl:choose>

     <span class="pubDate">___(<xsl:value-of select="pubDate" />)</span>

     <div class="descr">

      <xsl:text disable-output-escaping="yes"> <!-- ANFANG NEU -->

       <xsl:value-of select="description" /><br />

      </xsl:text> <!-- ENDE NEU -->

      <xsl:if test="link!=''">

       <br />

       <b>Link:</b><xsl:value-of select="link" /><br />

      </xsl:if>

      <xsl:if test="guid!=''">

       <xsl:choose>

        <xsl:when test="link!=''">

         <b>GUID:</b><xsl:value-of select="guid" /><br />

        </xsl:when>

        <xsl:otherwise>

         <br />

         <b>GUID:</b><xsl:value-of select="guid" /><br />

        </xsl:otherwise>

       </xsl:choose>

      </xsl:if>

     </div>

    </div>

   </xsl:for-each>

  </body>

  </html>

 </xsl:template>

</xsl:stylesheet>

Ich bekomme lediglich:

Error loading stylesheet: Parsing an XSLT stylesheet failed.
Link zu diesem Kommentar
Auf anderen Seiten teilen

hast du nicht gesagt das problem ist bei den links?!


<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"

	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output

  omit-xml-declaration="yes"

   method="html"

   media-type="text/html"

   encoding="UTF-8"

   doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"

   doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />

 <!-- <xsl:output method="html" /> -->

 <xsl:template match="/rss/channel">

  <html>

  <head>

   <title><xsl:value-of select="title" /></title>

   <link rel="stylesheet" type="text/css" href="rss.css" />

  </head>

  <body>

   <xsl:for-each select="item">

    <xsl:sort select="title" />

    <div class="item">

     <xsl:choose>

      <xsl:when test="title!=''">

       <xsl:value-of select="title" />

      </xsl:when>

      <xsl:otherwise>

       <i><NULL></i>

      </xsl:otherwise>

     </xsl:choose>

     <span class="pubDate">___(<xsl:value-of select="pubDate" />)</span>

     <div class="descr">

      <xsl:text>

       <xsl:value-of select="description" /><br />

      </xsl:text>

      <xsl:if test="link!=''">

       <br />

       <b>Link:</b><xsl:value-of select="link" disable-output-escaping="yes"/><br />

      </xsl:if>

      <xsl:if test="guid!=''">

       <xsl:choose>

        <xsl:when test="link!=''">

         <b>GUID:</b><xsl:value-of select="guid" disable-output-escaping="yes"/><br />

        </xsl:when>

        <xsl:otherwise>

         <br />

         <b>GUID:</b><xsl:value-of select="guid" disable-output-escaping="yes"/><br />

        </xsl:otherwise>

       </xsl:choose>

      </xsl:if>

     </div>

    </div>

   </xsl:for-each>

  </body>

  </html>

 </xsl:template>

</xsl:stylesheet>

ausserdem würde ich hier unten das so schreiben. Hat aber nichts mit dem aktuellen Problem zu tun anstatt:

<xsl:choose>

        <xsl:when test="link!=''">

         <b>GUID:</b><xsl:value-of select="guid" disable-output-escaping="yes"/><br />

        </xsl:when>

        <xsl:otherwise>

         <br />

         <b>GUID:</b><xsl:value-of select="guid" disable-output-escaping="yes"/><br />

        </xsl:otherwise>

       </xsl:choose>

so:

<xsl:if test="guid!=''">

  <xsl:if test="link==''">

       <br />

  </xsl:if>

  <b>GUID:</b><xsl:value-of select="guid" disable-output-escaping="yes"/><br />

</xsl:if>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also nochmal ganz von vorne... Ich habe, wie du bereits gesehen haben solltest, News (als RSS-Feed) in einer XML Datei (RSS 2.0 Format) und in der Beschreibung (<description>...</description>) sind bei mir Links in so einem Format:

<a href="http://www.moep.de">Wong</a>

Nun werden diese nicht angezeigt, da diese als Element erkannt werden. Ich möchte jedoch dass diese Teile als normales Link, wie es bei HTML auch so ist, angezeigt werden.

Ich hoffe es ist jetzt ein wenig klarer geworden... Bei GUID, Link etc. ists mir erstmal egal.

Link zu diesem Kommentar
Auf anderen Seiten teilen

dann eben so:


<?xml version="1.0" encoding="utf-8"?>

<xsl:stylesheet version="1.0"

	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 <xsl:output

  omit-xml-declaration="yes"

   method="html"

   media-type="text/html"

   encoding="UTF-8"

   doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"

   doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" />

 <!-- <xsl:output method="html" /> -->

 <xsl:template match="/rss/channel">

  <html>

  <head>

   <title><xsl:value-of select="title" /></title>

   <link rel="stylesheet" type="text/css" href="rss.css" />

  </head>

  <body>

   <xsl:for-each select="item">

    <xsl:sort select="title" />

    <div class="item">

     <xsl:choose>

      <xsl:when test="title!=''">

       <xsl:value-of select="title" />

      </xsl:when>

      <xsl:otherwise>

       <i><NULL></i>

      </xsl:otherwise>

     </xsl:choose>

     <span class="pubDate">___(<xsl:value-of select="pubDate" />)</span>

     <div class="descr">

      <xsl:text>

       <xsl:value-of select="description" disable-output-escaping="yes"/><br />

      </xsl:text>

      <xsl:if test="link!=''">

       <br />

       <b>Link:</b><xsl:value-of select="link"/><br />

      </xsl:if>

      <xsl:if test="guid!=''">

       <xsl:choose>

        <xsl:when test="link!=''">

         <b>GUID:</b><xsl:value-of select="guid"/><br />

        </xsl:when>

        <xsl:otherwise>

         <br />

         <b>GUID:</b><xsl:value-of select="guid"/><br />

        </xsl:otherwise>

       </xsl:choose>

      </xsl:if>

     </div>

    </div>

   </xsl:for-each>

  </body>

  </html>

 </xsl:template>

</xsl:stylesheet>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also... Der Eintrag in meiner XML Datei sieht wie folgt aus:

Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a <a href="http://science.nasa.gov/headlines/y2003/30may_solareclipse.htm">partial eclipse of the Sun</a> on Saturday, May 31st.

Wenn ich dies nun normal per XSL style etc. siehts am Ende so aus:

Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a on Saturday, May 31st.

Aber es soll so aussehen:

Sky watchers in Europe, Asia, and parts of Alaska and Canada will experience a partial eclipse of the Sun on Saturday, May 31st.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...