Thomas J.S.: Zeilenumbruch in XML erkennen und durch <br /> ersetzen

Beitrag lesen

Hallo,

ich habe folgendes Problem:

Ich erhalte als Vorgabe eine XML-Datei, die ein tag <content> enthält. Der Inhalt ist dort einfach "reingeschüttet" worden, d.h. es existiert kein tag, das Zeilenumbrüche angibt, so dass man mit einem template diese sauber ersetzen könnte.

Habt Ihr vielleicht eine Idee?

Hier im Archiv suchen ;-)

<xsl:template match="content">
  <xsl:apply-templates />
</xsl:template>

<xsl:template match="content/text()">
  <xsl:call-template name="cr2br">
   <xsl:with-param name="text" select="." />
  </xsl:call-template>
</xsl:template>

<xsl:template name="cr2br">
 <xsl:param name="text" />
 <xsl:variable name="textafterbreak" select="substring-after($text, '&#xA;')" />
 xsl:choose
  <xsl:when test="contains($text, '&#xA;')">
   <xsl:value-of select="substring-before($text, '&#xA;')" />
   <br />
   <xsl:call-template name="cr2br">
   <xsl:with-param name="text" select="$textafterbreak" />
   </xsl:call-template>
  </xsl:when>
  xsl:otherwise
   <xsl:value-of select="$text" />
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>

Grüße
Thomas