Announcement

Collapse
No announcement yet.

carriage returns erhalten

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

  • carriage returns erhalten

    hallo,
    ich habe ein Xml-Dokument in dem Attributwerte Programmiercode enthalten.
    Mit XSLT erstelle ich ein Html-Dokument. Ich möchte im Htlm-Dokument die
    Zeilenwechsel des Codes erhalten. Ich kann zwar die Leerzeichen erhalten
    aber ansonsten habe ich den Code in einer ewig langen Zeile. Kann mir jemand einen Tipp geben?

    Tina

  • #2
    Hallo Tina,
    Attributwerte werden vom Parser normalisiert. (Mehrfache Whitespaces werden zu einem einzigen Whitespace...) Somit hat der XSL-Prozessor keine Chance mehr einen Zeilenumbruch zu erkennen. <br>
    Ich sehe da nur Chancen, wenn Du den Code in einem Element hälts und nicht in einem Attribut.
    <br>
    Bernwar

    Comment


    • #3
      Hallo,<br>
      das Problem liegt bei HTML. Im Queltext ist der Zeilenumbruch mit Sicherheit zu sehen. Im Browser aber nicht. Es muss also an Stelle des &amp;#10; ein &lt;br&gt; in den Text eingefügt werden. Mit der translate-Methode lassen sich aber immer nur einzelne Zeichen ersetzen. Also muss man entweder eine Script-Funktion schreiben oder folgendes Template nutzen:
      <pre>
      <xsl:template name="makeNewLines">
      <xslaram name="theText"/>
      <xsl:if test="string-length($theText)!=0">
      <xsl:choose>
      <xsl:when test="contains($theText,'
      ')">
      <xsl:value-of select="substring-before($theText,'
      ')"/><br/>
      <xsl:call-template name="makeNewLines">
      <xsl:with-param name="theText" select="substring-after($theText,'
      ')"/>
      </xsl:call-template>
      </xsl:when>
      <xsltherwise>
      <xsl:value-of select="$theText"/>
      </xsltherwise>
      </xsl:choose>
      </xsl:if>
      </xsl:template>
      </pre>
      aufgerufen wie folgt:<br>
      <pre>
      <xsl:call-template name="makeNewLines">
      <xsl:with-param name="theText" select="@value"/>
      </xsl:call-template>
      </pre>
      werden dann alle Zeilenumbrüche durch br-Tags ersetzt. Michae

      Comment

      Working...
      X