Teilstring auswechseln
Raupe
- xsl
Hallo Zusammen,
ich habe folgendes Problem:
auf meiner Website möchte ich ein kleines Foto darstellen und wenn man drauf klickt, soll es groß werden. Das kleine Bild habe ich als gif abgespeichert und das große wäre dann ein jpg.
Im XML rufe ich das Bild folgendermassen auf:
<bildverzeichnis>
Hier sehen Sie: <bildlink>Isi.gif</bildlink>
</bildverzeichnis>
In meinem XSL sieht es folgendermaßen aus:
<xsl:template match="bildlink">
<a><xsl:attribute name="href"><xsl:value-of select="translate(substring-after(current(), '.'), 'gif', 'jpg')" /></xsl:attribute>
<img><xsl:attribute name="src"><xsl:value-of select="." /></xsl:attribute></img></a>
</xsl:template>
Das hat aber zur Folge, daß zwar das gif durch jpg ersetzt wird, aber der Anfang vom String auch abgeschnitten wird.
Wenn ich das substring-after rauslasse, dann wird das kleine i von Isi auch durch ein p von jpg ersetzt. Das will ich aber auch nicht...
Was kann ich tun? Oder liege ich einfach völlig falsch in meinem Plan das gif durch jpg zu ersetzen? Gibt es evtl. eine andere Möglichkeit?
Vielen Dank für Eure Hilfe
Raupe
Dann setze doch einfach den string dann wieder zusammen.
<xsl:value-of select="concat(substring-before(current(), '.'),'.',translate(substring-after(current(), '.'), 'gif', 'jpg'))"/>
Sofern du XSLT2.0 nutzen kannst, erleicht die replace() Funktion einiges.
Gruß, H.
Hallo Raupe,
In meinem XSL sieht es folgendermaßen aus:
<xsl:template match="bildlink">
<a><xsl:attribute name="href"><xsl:value-of select="translate(substring-after(current(), '.'), 'gif', 'jpg')" /></xsl:attribute>
<img><xsl:attribute name="src"><xsl:value-of select="." /></xsl:attribute></img></a>
</xsl:template>
Das lässt sich kompakter formulieren:
<xsl:template match="bildlink">
<a href="{concat(substring-before(.,'.gif'),'.jpg')}">
<img src="{.}" alt="" />
</a>
</xsl:template>
Grüße,
Thomas
Super!
das funktioniert beides.
Vielen Dank!
Raupe