1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

(XSL) Doppelte Leerzeichen mit br ersetzten

Dieses Thema im Forum "XML Technologien" wurde erstellt von Stef4n, 31. Juli 2013.

  1. Stef4n

    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 (Text):
    1. <Product>
    2. <Texts>
    3. <Text language="de">
    4. <Name>NAME</Name>
    5. <Description>Lorem Ipsum.  Dank der revolutionären Pigmenttinte entstehen Ausdrucke, die absolut wisch- und wasserfest sind.        Dorlores</Description>
    6. </Text>
    7. </Texts>
    8. </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
     
  2. Stef4n

    Stef4n Grünschnabel

    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 (Text):
    1. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    2.     <xsl:output method="html" encoding="utf-8"
    3.         doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
    4.         doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
    5.  
    6.     <xsl:template match="Product">
    7.         <html>
    8.             <head>
    9.                 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    10.                 <title>XML/XSLT Absatz</title>
    11.                 <style type="text/css">
    12.                     <!--
    13.                     body{
    14.                         background-color:#ffffff;
    15.                     }-->
    16.                 </style>
    17.             </head>
    18.             <body bgcolor="#ffffff" style="background-color:#ffffff">
    19.                 <xsl:call-template name="add-br">
    20.                     <xsl:with-param name="text" select="Texts/Text[@language = 'de']/Description"/>
    21.                 </xsl:call-template>
    22.             </body>
    23.         </html>
    24.     </xsl:template>
    25.  
    26.     <xsl:template name="add-br">
    27.         <xsl:param name="text" select="."/>
    28.         <xsl:choose>
    29.             <xsl:when test="contains($text, '& # x D ;')">
    30.                 <xsl:value-of select="substring-before($text, '& # x D ;')"/>
    31.                 <br /><br />
    32.                 <xsl:call-template name="add-br">
    33.                     <xsl:with-param name="text" select="substring-after($text,'& # x D ;')"/>
    34.                 </xsl:call-template>
    35.             </xsl:when>
    36.             <xsl:otherwise>
    37.                 <xsl:value-of select="$text"/>
    38.             </xsl:otherwise>
    39.         </xsl:choose>
    40.     </xsl:template>
    41. </xsl:stylesheet>
     
    Zuletzt bearbeitet: 31. Juli 2013
  3. deepthroat

    deepthroat Erfahrenes Mitglied

    Hi.

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

    Code (XML):
    1.    <xsl:template name="add-br">
    2.         <xsl:param name="text" select="."/>
    3.     <xsl:variable name='delim' select="'  '"/>
    4.         <xsl:choose>
    5.             <xsl:when test="contains($text, $delim)">
    6.                 <xsl:value-of select="substring-before($text, $delim)"/>
    7.                 <br /><br />
    8.                 <xsl:call-template name="add-br">
    9.                     <xsl:with-param name="text" select="substring-after($text, $delim)"/>
    10.                 </xsl:call-template>
    11.             </xsl:when>
    12.             <xsl:otherwise>
    13.                 <xsl:value-of select="$text"/>
    14.             </xsl:otherwise>
    15.         </xsl:choose>
    16.     </xsl:template>
    Ausgabe:
    Code (HTML5):
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    3. <title>XML/XSLT Absatz</title>
    4. <style type="text/css"></style>
    5. </head>
    6. <body bgcolor="#ffffff" style="background-color:#ffffff">Lorem Ipsum.<br><br>Dank der revolution?ñren Pigmenttinte entstehen Ausdrucke, die absolut wisch
    7. - und wasserfest sind.<br><br><br><br><br><br><br><br>Dorlores</body>
    8. </html>
     
    Zuletzt von einem Moderator bearbeitet: 23. Mai 2014
  4. Stef4n

    Stef4n Grünschnabel

    Habs, musste nur die beiden Zeichen direkt aus der XML kopieren und einsetzen. Hab vorher selbst 2 Leerzeichen erstellt.. Manchmal ist es so einfach.
     
Die Seite wird geladen...