nl2br in XSLT
Ich hab seit ewigkeiten nach einer Funktion für XSLT gesucht die wie Newline to Break in PHP funktioniert.
Durch Zufall bin ich eben durch Google auf eine sehr schöne Implementierung bei Javangelist gestoßen:
<!-- break arbeitet nur mit n -->
<xsl:template name="break">
<xsl:param name="text" select="."/>
<xsl:choose>
<xsl:when test="contains($text, '
')">
<xsl:if test="string-length(substring-before($text, '
')) > 0">
<xsl:value-of select="substring-before($text, '
')"/>
</xsl:if>
<br/>
<xsl:call-template name="break">
<xsl:with-param name="text" select="substring-after($text,'
')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:if test="string-length($text) > 0">
<xsl:value-of select="$text"/>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Das kann man sehr schön steuern und verwenden:
<xsl:call-template name="break">
<xsl:with-param name="text" select="detail[@name = 'comment']" />
</xsl:call-template>
Und schon wirds schön formatiert wie mit nl2br 🙂
Edit: Irgendwie is beim Kopieren in WordPress was schief gelaufen, probierts lieber mit 
 statt “ 🙂
Super! sowas suche ich auch schon länger, mit white-space: pre; und ähnlichem zerhauts einem bei langen Zeilen ja das layout. Jetzt fehlt nur noch ein Äquivalent zu str_replace()… -.-