Announcement

Collapse
No announcement yet.

Zeilenumbruch

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Zeilenumbruch

    Hallo Zusammen,

    ich habe folgendes Problem:

    Ich erhalte aus einer Datenbank einen Text, der im XML CDATA geschützt ist. Der Text wurde in einer Textarea eingegeben.
    Nun kann es sein, dass der Text "\n" als Zeilenumbruch enthält. Wenn ich den Text auslese, wird im HTML das "\n" ignoriert. Ich möchte aber, dass an dieser Stelle ein Zeilenumbruch erfolgt.
    Weiss jemand, wie man das lösen kann.

    Das gleiche Problem stellt sich, wenn ich das Dokument mittels xsl:fo als PDF ausgeben möchte.

    Vielen Dank im Voraus

    Kai

  • #2
    Für HTML mußt Du \n durch &lt;br> ersetzen. Mit XSLT kannst Du \n durch <br/> ersetzen,damit Du xml-konform bleibst. Der HTML-Serialisier macht dann daraus <br>

    Bernwar

    Comment


    • #3
      Danke für den Tipp, Bernward.<br />
      Das wusste ich :-)<br />
      Das Problem war nur, dass der XSL Parser ein "\n" im XML-Strom nicht erkennt, da es als ASCII-Zeichen mitgeschickt wird.<br />
      Hab aber mittlerweile eine Lösung gefunden.<br />Mittels select="contains(node(),'
      ')" kann ich erkennen, ob solch ein Zeichen enthalten ist. Über eine rekursive Schleife kann ich dann alle Umbruch-Zeichen durch ein <br /> ersetzen.<br />
      So geht es.<br />
      Jetzt muss ich nur noch das Zeichen für einen Zeilenumbruch in xsl:fo rausfinden :-

      Comment


      • #4
        Zeichen für Zeilenumbruch:
        &#xA;

        Falls du deine xml vollständig übernehmen willst, also mit returns und leerzeichen, hilft dir auch
        white-space-collapse="false"
        also z.B.
        <fo:block white-space-collapse="false"><xsl:apply-templates /></fo:block&gt

        Comment


        • #5
          Um den manuellen Zeilenumbruch: "&#xA;" zu benutzen muss der block das Attribut: linefeed-treatment="preserve" erhalten.
          Also:

          Code:
          <fo:block linefeed-treatment="preserve">
             <!-- Zeilenumbruch -->
             <xsl:text>&#xA;</xsl:text>
          </fo:block>

          Comment

          Working...
          X