XSL-FO: Fehler in Tabelle?

Kikko

Grünschnabel
Hallo,

ich suche seit 2 Tagen den Fehler in dieser Tabelle und finde ihn einfach nicht. Ich habe andere Tabellen, die fast genauso aufgebaut sind und die funktionieren. Bin langsam am Verzweifeln, ich hoffe, ihr könnt mir helfen.

Diese Tabelle und eine andere werden innerhalb eines Templates für ein Element erzeugt. Die XPath-Angaben stimmen, die habe ich schon öfters geprüft.
Ich benutze XEP und die Fehlermeldung ist diese:

(sequence [master-reference Seitenformat]
(flow [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20][21][22][23][24][25][26][27][28][29][30][31][32][33][34][35][36][37][38][39][40][41][42][43][44][45][46][47][48][49][50][51][52][53][54][55][56][57][58][59][60][61][62]))Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at com.renderx.xep.fmt.LineBuffer.<init>(Unknown Source)
at com.renderx.xep.fmt.MTF.addToPhrase(Unknown Source)
at com.renderx.xep.fmt.MTF.process(Unknown Source)
at com.renderx.xep.cmp.Item$Text.pass(Unknown Source)
at com.renderx.xep.fmt.MTF.fmt(Unknown Source)
at com.renderx.xep.fmt.BkMaker.mkStream(Unknown Source)
at com.renderx.xep.fmt.BkMaker.mkBody(Unknown Source)
at com.renderx.xep.fmt.BkMaker.mkFlow(Unknown Source)
at com.renderx.xep.fmt.BkMaker.mkBook(Unknown Source)
at com.renderx.xep.FormatterCore$ContentHandlerDriver.endDocument(Unknown Source)
at com.icl.saxon.aelfred.SAXDriver.parse(SAXDriver.java:334)
at com.renderx.xep.FormatterCore.render(Unknown Source)
at com.renderx.xep.FormatterImpl.render(Unknown Source)
at com.renderx.xep.FormatterImpl.render(Unknown Source)
at com.renderx.xep.FormatterImpl.render(Unknown Source)
at com.renderx.xep.XSLDriver.main(Unknown Source)
Process ended with exit code: 0

Die PDF wird erzeugt, aber ist fehlerhaft und kann nicht geöffnet werden. Wenn ich die Tabelle rausnehme, wird die PDF korrekt erzeugt.



Code:
<fo:table table-layout="fixed">
                <fo:table-column column-width="20%"/>
                <fo:table-column column-width="30%"/>
                <fo:table-column column-width="15%"/>
                <fo:table-column column-width="35%"/>

                <fo:table-body>

                    <fo:table-row keep-with-previous="always">

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard_fett">x</fo:block>
                        </fo:table-cell>

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard">
                                <xsl:value-of select="x"/>
                            </fo:block>
                        </fo:table-cell>

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard_fett">
                                x
                            </fo:block>
                        </fo:table-cell>

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard">
                                <xsl:value-of select="x"/>
                            </fo:block>
                        </fo:table-cell>

                    </fo:table-row>

                    <fo:table-row keep-with-previous="always">

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard_fett">x</fo:block>
                        </fo:table-cell>

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard">
                                <xsl:value-of select="x"/> y</fo:block>
                        </fo:table-cell>

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard_fett">x</fo:block>
                        </fo:table-cell>

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard">
                                <xsl:value-of select="x"/> y</fo:block>
                        </fo:table-cell>

                    </fo:table-row>

                    <fo:table-row keep-with-previous="always">

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard_fett">x</fo:block>
                        </fo:table-cell>

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard">
                                <xsl:value-of select="x"/>
                            </fo:block>
                        </fo:table-cell>

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard_fett">
                                x
                            </fo:block>
                        </fo:table-cell>

                        <fo:table-cell padding=".03in">
                            <fo:block xsl:use-attribute-sets="Standard">
                                <xsl:value-of select="x"/>
                            </fo:block>
                        </fo:table-cell>

                    </fo:table-row>
                </fo:table-body>
            </fo:table>

Viele Grüße
Kikko
 
Zuletzt bearbeitet:
Willkommen auf tutorials.de!

2 Sachen:

  • Fehlerbeschreibung. Das es nicht funktioniert sagt überhaupt nichts aus. Wie äußert sich das? Wann, wo, wie tritt der Fehler auf? Nicht jeder besitzt eine Glasskugel... ;)
  • Bitte Codeschnipsel immer in die entsprechenden Code Tags einbetten. (der # Button im Editor)
Gruß
 
Sorry :)

Ich habe noch ein Problem mit anderen 2 Tabellen: Die Transformation mit jeder Tabelle einzeln funktioniert, die PDF wird korrekt ausgegeben. Setzte ich jedoch beide Tabellen zusammen hintereinander ein, bekomme ich dieselbe Fehlermeldung wie oben genannt und die PDF kann nicht angezeigt werden, weil sie fehlerhaft ist.

Muss man da irgendwas bestimmtes beachten, wenn man mehrere Tabellen hintereinander verwendet? Oder woran kann es sonst liegen?

Ich würde mich sehr über eure Hilfe freuen!

Code:
<fo:block space-before="4mm">
            <fo:table table-layout="fixed" width="100%">
                
                <fo:table-column column-width="100%"/>
                
                <fo:table-body>

                    <fo:table-row>

                        <fo:table-cell padding=".03in">
                            <fo:block font-weight="bold">Ziel</fo:block>
                        </fo:table-cell>

                    </fo:table-row>

                    <fo:table-row keep-with-previous="always">

                        <fo:table-cell padding=".03in">
                            <fo:block>
                                <xsl:value-of select="fpziel"/>
                            </fo:block>
                        </fo:table-cell>

                    </fo:table-row>

                    <fo:table-row keep-with-previous="always">

                        <fo:table-cell padding=".03in">
                            <fo:block font-weight="bold">x</fo:block>
                        </fo:table-cell>

                    </fo:table-row>

                    <fo:table-row keep-with-previous="always">

                        <fo:table-cell padding=".03in">
                            <fo:block>
                                <xsl:value-of select="x"/>
                            </fo:block>
                        </fo:table-cell>

                    </fo:table-row>

                </fo:table-body>
            </fo:table>
       </fo:block>
        
       
    <fo:block space-before="4mm">
        <fo:table table-layout="fixed" width="100%">
            
            <fo:table-column column-width="18%"/>
            <fo:table-column column-width="15%"/>
            <fo:table-column column-width="18%"/>
            <fo:table-column column-width="15%"/>
            <fo:table-column column-width="20%"/>
            
            
            <fo:table-body>
                
                <fo:table-row>
                    
                    <fo:table-cell padding=".03in">
                        <fo:block font-weight="bold">x</fo:block>
                    </fo:table-cell>
                    
                    <fo:table-cell padding=".03in">
                        <fo:block><xsl:value-of select="x"/></fo:block>
                    </fo:table-cell>
                    
                    <fo:table-cell padding=".03in">
                        <fo:block font-weight="bold">x</fo:block>
                    </fo:table-cell>

                    <fo:table-cell padding=".03in">
                        <fo:block><xsl:value-of select="x"/></fo:block>
                    </fo:table-cell>
   
                    <fo:table-cell padding=".03in">
                        <fo:block font-weight="bold">
                        x
                        </fo:block>
                    </fo:table-cell>

                    <fo:table-cell padding=".03in">
                        <fo:block>
                        <xsl:value-of select="x"/> bis <xsl:value-of select="x"/>
                        </fo:block>
                    </fo:table-cell>
                    
                </fo:table-row>
            </fo:table-body>
        </fo:table>
</fo:block>
 
Hi.

Regel 1: Wenn ein Fehler auftritt und eine Fehlermeldung ausgegeben wird: Fehlermeldung lesen.

Das Ganze ist offenbar kein XML Problem, sondern ein Java Problem, d.h. zu wenig Speicher verfügbar. Du mußt den Speicher erhöhen:

Code:
java -Xms128m -Xmx256m
Das würde die anfängliche Größe des Heapspeichers auf 128 MB setzen und max. 256 MB erlauben. Den zweiten Wert kannst du ggf. noch erhöhen.

Siehe z.B. http://services.renderx.com/lists/xep-support/1052.html

Gruß
 
Gelesen habe ich sie, nur leider nicht verstanden.

Ich habe deinen Code so in die xep.bat Datei eingegeben und habe auch versucht, den zweiten Wert auf 512 zu setzen, aber ich habe immer noch denselben Fehler. Habe ich da was falsch gemacht?

Grüße
Kikko
 
Zuletzt bearbeitet:
Ich habe deinen Code so in die xep.bat Datei eingegeben und habe auch versucht, den zweiten Wert auf 512 zu setzen, aber ich habe immer noch denselben Fehler. Habe ich da was falsch gemacht?
Wenn XEP auch wirklich über diese Datei und mit den Optionen gestartet wird, dann hast du eben immer noch zu wenig Speicher. Erhöhe es mal auf 4000. Das sollte dann wohl genug sein. Ansonsten mußt du mal in einem XEP Forum fragen ob es andere Methoden gibt den Speicherbedarf einzuschränken oder die obere Speichergrenze zu erhöhen.

Gruß
 
Zurück