Thomas J.S.: Zeilenumbruch erzwingen

Beitrag lesen

Hallo,

Kann man unter XSL einen Zeilenumbruch eines Strings ohne Leerzeichen erzwingen?

man kann.

Ich habe ein Problem damit, da ich über eine xslt Datei eine fo Datei erzeuge und der fop mit dieser Datei eine pdf Datei baut. In dieser pdf Datei habe ich auch Tabellen. Wenn nun in einer der Zellen ein zu langer String drinsteht, zerschießt es mir das komplette Layout!!
Dann reicht der Text auch in die nächste Spalte hinein.

Daher würde ich gerne bei Strings einen Zeilenumbruch nach einer bestimmten Anzahl von Zeichen (z.B. 15) erzwingen...oder gibt es evtl. eine andere Lösung für mein Problem??

Die Lsung liegt in der Silbentrennung:
http://www.w3.org/TR/xsl/slice7.html#hyphenation-push-character-count

bzw.

http://www.w3.org/TR/xsl/slice7.html#hyphenation-remain-character-count

Ich weiss aber nicht in wieweit und ob FOP diese eigenschaften schon unterstützt.

sonst könnte <fo:block wrap-option="wrap"> gehen und falls dies auch nicht tut, kannst du so etwas versuchen:

<xsl:template match="deinElement">
   fo:block
      xsl:choose
         <xsl:when test="string-lenght(.) > 15">
            <xsl:value-of select="substring(., 1,15)" />
               <fo:character treat-as-word-space="true">&#160;</fo:character>
            <xsl:value-of select="substring(., 16)" />
         </xsl:when>
         xsl:otherwise
            <xsl:value-of select="." />
         </xsl:otherwise>
      </xsl:choose>
   </fo:block>
</xsl:template>

grüße
thomas