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

XSL-FO Problem beim Schachteln

Dieses Thema im Forum "XML Technologien" wurde erstellt von danielandross, 21. August 2012.

  1. danielandross

    danielandross Erfahrenes Mitglied

    Hallo Community,

    ich bin gerade neu bei XSL-FO und habe ein Problem beim Schachteln von XSL-FO Elementen.

    Ausgangssituation ist, dass eine Anwendung den Usern erlaubt Texte mit einem WYSIWUG Editor zu formatieren. Dadurch landen html-elemente in der Datenbank. Diese Formatierungen sollen dann mit XSL-FO verarbeitet werden.

    Die Inputs sollen alle innerhalb eines Blocks dargestellt werden:
    HTML:
    1. <xsl:template name="outer">
    2.         <xsl:param name="text">xxx</xsl:param>
    3.         <xsl:param name="align">start</xsl:param>
    4.         <fo:block font-size="9pt" font-family="sans-serif" line-height="10pt" text-align="{$align}" linefeed-treatment="preserve">
    5.             <xsl:value-of select="$text"/>
    6.         </fo:block>
    7.     </xsl:template>
    Für die HTML Elemente wurden Templates gebaut, die dann ein inline Element einfügen, das für die Fettdruckdarstellung sorgt:

    HTML:
    1. <xsl:template match="strong">
    2.     <fo:inline font-weight="bold">
    3.         <xsl:apply-templates />
    4.     </fo:inline>
    5. </xsl:template>
    Aber anstatt es Fett zu drucken wird nur ein ungewollter carriage return im pdf dargestellt. Ich vermute es gibt da Probleme in der Schachtelung, sodass der äußere Block den inneren linefeed überschreibt, denn wenn ich im äußeren Block font-weight="bold" wird alles korrekt Fett dargestellt. Ich habe auch schon probiert statt inline einen geschachtelten Block zu verwenden, macht keinen Unterschied.

    Kann ich dem Block irgendwie sagen, dass er font-weight nicht überschreiben darf?

    Viele Grüße
    Daniel

    Update: Das Ausbleiben der Formatierung ist gelöst. Der Aufruf war bisher so:
    HTML:
    1. <xsl:call-template name="outer">
    2. <xsl:with-param name="text">
    3.     <xsl:apply-templates select="WYSISYG/Inhalt"/>
    4. </xsl:with-param>
    5. </xsl:call-template>
    Scheinbar ist es problematisch xsl:call-template mit xsl:apply-templates zu kombinieren, wenn letzteres im xsl:with-param des Ersteren steht. Ich habe jetzt das Template 'outer' an die Stelle ge-copypastet und die Formatierung erscheint wieder.

    Bleibt noch das Problem der ungewollten Zeilenumbrüche bei jeder Formatierung.
     
    Zuletzt bearbeitet: 21. August 2012
Die Seite wird geladen...