Was steht also heute auf dem Programm? "Labels ausgeben."
Nun denn. Man nehme sich einen RSS-Feed von Blogger.com - zum Beispiel diesen hier. In jedem "item"-Knoten findet man die vergebenen Labels jeweils als einzelner "category"-Knoten.
<category domain="http://www.blogger.com/atom/ns#">Spotlight</category>
<category domain="http://www.blogger.com/atom/ns#">Mac</category>
<category domain="http://www.blogger.com/atom/ns#">Apple</category>
Das die Labels zu schön getrennt zur Verfügung gestellt werden ist dahin gehend praktisch, weil man so keine wilden XPath-Konstrukte bauen muss. Möchte man nun also die Labels ausgeben, dann geht man diese Knoten am einfachsten mittels des xsl:for-each - Tags durch. Beim ersten Durchlauf (test="position() = 1") gibt man noch das Wort "Labels: " davor aus und bei allen Durchläufen - außer dem Letzten (test="position() != last()") - gibt man nach dem Label noch ein Komma aus. Das ganze kann man noch mit einem Link auf den Blog für das aktuelle Label garnieren. Und so schaut der dazugehörige XSLT-Quellcode aus:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="iso-8859-15" indent="no"/>
<xsl:template match="/">
<ul>
<xsl:for-each select="rss/channel/item[position()<5]">
<li>
<xsl:value-of select="title"/>
<xsl:for-each select="category">
<xsl:if test="position() = 1">
<br/>
<xsl:text>Labels: </xsl:text>
</xsl:if>
<a href="http://blog.dirkeinecke.de/search/label/{.}">
<xsl:value-of select="."/>
</a>
<xsl:if test="position() != last()">
<xsl:text>, </xsl:text>
</xsl:if>
</xsl:for-each>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
Na also - ist doch ziemlich einfach. Oder?
0 Kommentare:
Kommentar veröffentlichen