(XSL) Doppelte Leerzeichen mit br ersetzten

Stef4n

Grünschnabel
Hallo zusammen,

ich hab hier eine XML, das enthält meiner Meinung nach 2 Leerzeichen im Knoten Description, anstelle der 2 Leerzeichen möchte ich in der HTML Ausgabe ein <br />.

Code:
<Product>
<Texts>
<Text language="de">
<Name>NAME</Name>
<Description>Lorem Ipsum.  Dank der revolutionären Pigmenttinte entstehen Ausdrucke, die absolut wisch- und wasserfest sind.        Dorlores</Description>
</Text>
</Texts>
</Product>


Translate funktioniert nicht und anderes Ideen aus dem Netz haben nicht geklappt. Das ganze bitte in XSLT 1.0.

Danke euch schon mal.

Gruß Stef4n
 
Habe hier eine Lösung gefunden, die funktioniert aber nur wenn ich folgendes zeichen als Trennzeichen/Absatzzeichen nutze (musste überall leerzeichen reinsetzten weil es sonst zensiert wird): & # x D ;

Leider aber nicht mit " " oder "& # 1 6 0 ; & # 1 6 0 ;" oder "&nbsp;&nbsp;" oder "& # x 0 0 A 0 ; & # x 0 0 A 0 ;" wird nichts erkannt und otherwise setzt ein.

Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
	<xsl:output method="html" encoding="utf-8"
		doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
		doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>

	<xsl:template match="Product">
		<html>
			<head>
				<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
				<title>XML/XSLT Absatz</title>
				<style type="text/css">
					<!--
					body{
					    background-color:#ffffff;
					}-->
				</style>
			</head>
			<body bgcolor="#ffffff" style="background-color:#ffffff">
				<xsl:call-template name="add-br">
					<xsl:with-param name="text" select="Texts/Text[@language = 'de']/Description"/>
				</xsl:call-template>
			</body>
		</html>
	</xsl:template>

	<xsl:template name="add-br">
		<xsl:param name="text" select="."/>
		<xsl:choose>
			<xsl:when test="contains($text, '& # x D ;')">
				<xsl:value-of select="substring-before($text, '& # x D ;')"/>
				<br /><br />
				<xsl:call-template name="add-br">
					<xsl:with-param name="text" select="substring-after($text,'& # x D ;')"/>
				</xsl:call-template>
			</xsl:when>
			<xsl:otherwise>
				<xsl:value-of select="$text"/>
			</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
</xsl:stylesheet>
 
Zuletzt bearbeitet:
Hi.

Also bei mir funktioniert das problemlos. Welchen XSL Prozessor verwendest du denn?

XML:
   <xsl:template name="add-br">
        <xsl:param name="text" select="."/>
	<xsl:variable name='delim' select="'  '"/>
        <xsl:choose>
            <xsl:when test="contains($text, $delim)">
                <xsl:value-of select="substring-before($text, $delim)"/>
                <br /><br />
                <xsl:call-template name="add-br">
                    <xsl:with-param name="text" select="substring-after($text, $delim)"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$text"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
Ausgabe:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>XML/XSLT Absatz</title>
<style type="text/css"></style>
</head>
<body bgcolor="#ffffff" style="background-color:#ffffff">Lorem Ipsum.<br><br>Dank der revolution?ñren Pigmenttinte entstehen Ausdrucke, die absolut wisch
- und wasserfest sind.<br><br><br><br><br><br><br><br>Dorlores</body>
</html>
 
Zuletzt bearbeitet von einem Moderator:
Habs, musste nur die beiden Zeichen direkt aus der XML kopieren und einsetzen. Hab vorher selbst 2 Leerzeichen erstellt.. Manchmal ist es so einfach.
 
Zurück