Home > basteln, programmieren > nl2br in XSLT

nl2br in XSLT

24. Juli 2007

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, '&#x0D;')">
<xsl:if test="string-length(substring-before($text, '&#x0D;')) > 0">
<xsl:value-of select="substring-before($text, '&#x0D;')"/>
</xsl:if>
<br/>
<xsl:call-template name="break">
<xsl:with-param name="text" select="substring-after($text,'&#x0D;')"/>
</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 &#x0D; statt “ 🙂

Kategorienbasteln, programmieren Tags:
  1. ollo
    25. Januar 2009, 15:13 | #1

    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()… -.-

Kommentare sind geschlossen