23 Stimmen

Wie wandelt man mit XSLT einen Zeilenumbruch in <br/> um?

Mögliches Duplikat:
Interpretation von Zeilenumbrüchen mit XSLT xsl:text?

Wie wird ein Zeilenumbruch in <br/> mit XSLT?

Ich habe das hier:

<text>
some text with 
new lines
</text>

Ich möchte das haben:

<p> some text with <br /> new lines </p>

36voto

Dimitre Novatchev Punkte 234995

Diese Transformation:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

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

 <xsl:template match="text()" name="insertBreaks">
   <xsl:param name="pText" select="."/>

   <xsl:choose>
     <xsl:when test="not(contains($pText, '&#xA;'))">
       <xsl:copy-of select="$pText"/>
     </xsl:when>
     <xsl:otherwise>
       <xsl:value-of select="substring-before($pText, '&#xA;')"/>
       <br />
       <xsl:call-template name="insertBreaks">
         <xsl:with-param name="pText" select=
           "substring-after($pText, '&#xA;')"/>
       </xsl:call-template>
     </xsl:otherwise>
   </xsl:choose>
 </xsl:template>
</xsl:stylesheet>

bei Anwendung auf dieses XML-Dokument :

<t>Line1
Line2
Line3
</t>

führt zu dem gewünschten, korrekten Ergebnis:

<p>Line1<br />Line2<br />Line3<br /></p>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X