Hallo,
ich möchte gerne bei einem XML Text mithilfe eines XSL Stylesheets die Absätze mit <Text> Elementen umschließen, d.h.
Eingabe:
<?xml version="1.0"?>
<TextArea>
Titel
Das ist ein Text mit mehreren Abschnitten.
Hier kommt wieder ein Abschnitt, welcher auch noch einzelne
Zeilenumbrüche enthält, die ebenfalls erhalten bleiben
sollen.
Und zum Schluss noch ein Absatz.
</TextArea>
Ausgabe soll sein:
<?xml version="1.0"?>
<TextArea>
<Text>Titel
</Text>
<Text>
Das ist ein Text mit mehreren Abschnitten.
</Text>
<Text>
Hier kommt wieder ein Abschnitt, welcher auch noch einzelne
Zeilenumbrüche enthält, die ebenfalls erhalten bleiben
sollen.
</Text>
<Text>
Und zum Schluss noch ein Absatz.
</Text>
</TextArea>
Ich habe es schon versucht mit diesem XSL:
<xsl:template match="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, ' ')" />
xsl:choose
<xsl:when test="contains($text, ' ')">
<xsl:element name="text">
<xsl:value-of select="substring-before($text, ' ')" />
</xsl:element>
<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>
Das brachte aber nicht das gewünscht Ergebnis, da es bei jedem Zeilenumbruch die <Text> Elemente setze.
Und die Suche nach "substring-after($text, ' ') bzw. "substring-before($text, ' ')" hat mir gar keine Ergebnisse geliefert.
Kann mir bitte jemand von euch vielleicht helfen?
Gruß
Joy