(XSL) Doppelte Leerzeichen mit br ersetzten

Stef4n

Grünschnabel
#1
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
 

Stef4n

Grünschnabel
#2
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:

deepthroat

Erfahrenes Mitglied
#3
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:

Stef4n

Grünschnabel
#4
Habs, musste nur die beiden Zeichen direkt aus der XML kopieren und einsetzen. Hab vorher selbst 2 Leerzeichen erstellt.. Manchmal ist es so einfach.
 

Neue Beiträge