Wie baue ich mir einen Link in XSL zusammen? Die Frage wird immer wieder gestellt, dabei ist sie recht leicht zu beantworten. Zunächst... wie sieht denn unser Link in HTML aus?
<a href="http://www.devtrain.de">Devtrain</a>
Also ich benötige dazu ein Element "a", das Attribut "href" und den passenden Wert dazu.
Die Mehtode in XSL funktioniert über 2 XSL Befehle:
xsl:element
xsl:attribute
Verwendung:
<xsl:element name= "a"> ' Erstellt hier das Element "a" <xsl:attributename="href="> ' erstellt hier zum Element "a" das Attribut "href=" <xsl:value-of select="link"/> 'Aktueller Wert aus den XML Daten </xsl:attribute> <xsl:value-of select="link"/> 'Ausgabe des Links </xsl:element> |
ACHTUNG!
Leider bereitet die aktuelle Methode über den derzeitg gültigen Namespace http://www.w3.org/1999/XSL/Transform einige Schwierigkeiten bei der Verwendung von namespaces (hierauf möchte ich mich in einem anderen Artikeln auslassen).
Verwenden Sie hier bitte noch den alten namespace "http://www.w3.org/TR/WD-xsl.
Logischer Weise hätte an dieser Stelle auch ein einfaches <a>...</a> seinen Dienst getan, aber dann hätten nichts über xsl:element gelernt ;-)
Aus XML Daten holen wir uns den Titel und den Link.
Ein kleiner Ausschnitt aus der XML Struktur:
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://my.netscape.com/rdf/simple/0.9/"> <channel> <title>online news</title> <link>http://www.news.de</link> <description>Brandneue Nachrichten</description> </channel> <item> <title>XML Links leicht gemacht</title> <link>http://www.news.de/newsticker/artikel1.htm</link> </item> ..... |
So und nun unser dazugehöriges XSL file
<?xml version='1.0'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template match="/"> <html> <body> <table border="2" bgcolor="litegray"> <tr> <th>Title</th> <th>Link</th> </tr> <xsl:for-each select="rdf:RDF/item"> <tr> <td><xsl:value-ofselect="title"/></td><BR> <td><BR> <xsl:elementname="a"><BR> <xsl:attributename="href="><xsl:value-of select="link"/> </xsl:attribute><xsl:value-of select="link"/> </xsl:element> </td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
|