Hi Pascal,

I see your point, although this advice is not particularly useful to what I am 
doing. As I mentioned, this table is generated by DocBook, and its templates 
for tables are probably the most convoluted in the whole stylesheet. I was 
trying to avoid heavy customizations of these templates.

Another issue is that what I really want is "min-height" property in this 
case: at XSLT stage, it is not known whether text inside the table cell will 
occupy 1, 2, 3 or 15 rows. I tried using min-height in the test case I posted 
before, but this causes an exception in FOP (see below). According to spec, 
using min-height is perfectly legal: it should set minimum height, while 
retaining optimum and maximum height as "auto".

An finally, what you suggested won't work if another cell is more than 1 row. 
With the example I posted:

AB
AC
DC

If I set height to 2em, it looks okay. But, if cell B contains a text that 
wraps into 2nd line, the table again looks as

AB
DC

but now the whole row containing C and D cells is 2em in height. Given that 
DocBook stylesheet does not know how many lines of text there will be in each 
cell - that is determined by FO processor - I cannot calculate the height 
value beforehand.

So, I tried to set height/min-height on a fo:table-row instead. Setting
min-height= on fo:table-row results in a different exception (also, see 
below). Setting height= on fo:table-row does not have any effect at all. 
According to XSL-FO spec, block-progression-dimension property (that is set 
through height property) is allowed on fo:table-row. Is this a FOP bug/missing 
feature?

Regards,
Alexey.

Exception with min-height= on fo:table-cell:
---->8----->8----->8----->8----->8----->8----->8
Sep 14, 2010 12:37:47 PM org.apache.fop.cli.Main startFOP
SEVERE: Exception
java.lang.NullPointerException
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:217)
        at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:125)
        at org.apache.fop.cli.Main.startFOP(Main.java:166)
        at org.apache.fop.cli.Main.main(Main.java:197)
Caused by: java.lang.NullPointerException
        at 
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.computeRowHeights(RowGroupLayoutManager.java:165)
        at 
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.createElementsForRowGroup(RowGroupLayoutManager.java:127)
        at 
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.getNextKnuthElements(RowGroupLayoutManager.java:60)
        at 
org.apache.fop.layoutmgr.table.TableContentLayoutManager.getKnuthElementsForRowIterator(TableContentLayoutManager.java:220)
        at 
org.apache.fop.layoutmgr.table.TableContentLayoutManager.getNextKnuthElements(TableContentLayoutManager.java:172)
        at 
org.apache.fop.layoutmgr.table.TableLayoutManager.getNextKnuthElements(TableLayoutManager.java:247)
        at 
org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:294)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:116)
        at 
org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:107)
        at 
org.apache.fop.layoutmgr.PageBreaker.getNextKnuthElements(PageBreaker.java:145)
        at 
org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:552)
        at 
org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java:137)
        at 
org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:302)
        at 
org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:264)
        at 
org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:106)
        at 
org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:234)
        at 
org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:123)
        at 
org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:340)
        at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:169)
        at 
org.apache.xalan.transformer.TransformerIdentityImpl.endElement(TransformerIdentityImpl.java:1102)
        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown 
Source)
        at org.apache.xerces.xinclude.XIncludeHandler.endElement(Unknown 
Source)
        at 
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
 
Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown 
Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown 
Source)
        at 
org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:485)
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:214)
        ... 3 more
---->8----->8----->8----->8----->8----->8----->8


Exception with min-height= on fo:table-row:
---->8----->8----->8----->8----->8----->8----->8
Sep 14, 2010 12:53:10 PM org.apache.fop.cli.Main startFOP
SEVERE: Exception
java.lang.NullPointerException
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:217)
        at org.apache.fop.cli.InputHandler.renderTo(InputHandler.java:125)
        at org.apache.fop.cli.Main.startFOP(Main.java:166)
        at org.apache.fop.cli.Main.main(Main.java:197)
Caused by: java.lang.NullPointerException
        at 
org.apache.fop.layoutmgr.MinOptMaxUtil.toMinOptMax(MinOptMaxUtil.java:106)
        at 
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.computeRowHeights(RowGroupLayoutManager.java:155)
        at 
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.createElementsForRowGroup(RowGroupLayoutManager.java:127)
        at 
org.apache.fop.layoutmgr.table.RowGroupLayoutManager.getNextKnuthElements(RowGroupLayoutManager.java:60)
        at 
org.apache.fop.layoutmgr.table.TableContentLayoutManager.getKnuthElementsForRowIterator(TableContentLayoutManager.java:220)
        at 
org.apache.fop.layoutmgr.table.TableContentLayoutManager.getNextKnuthElements(TableContentLayoutManager.java:172)
        at 
org.apache.fop.layoutmgr.table.TableLayoutManager.getNextKnuthElements(TableLayoutManager.java:247)
        at 
org.apache.fop.layoutmgr.BlockStackingLayoutManager.getNextKnuthElements(BlockStackingLayoutManager.java:294)
        at 
org.apache.fop.layoutmgr.BlockLayoutManager.getNextKnuthElements(BlockLayoutManager.java:116)
        at 
org.apache.fop.layoutmgr.FlowLayoutManager.getNextKnuthElements(FlowLayoutManager.java:107)
        at 
org.apache.fop.layoutmgr.PageBreaker.getNextKnuthElements(PageBreaker.java:145)
        at 
org.apache.fop.layoutmgr.AbstractBreaker.getNextBlockList(AbstractBreaker.java:552)
        at 
org.apache.fop.layoutmgr.PageBreaker.getNextBlockList(PageBreaker.java:137)
        at 
org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:302)
        at 
org.apache.fop.layoutmgr.AbstractBreaker.doLayout(AbstractBreaker.java:264)
        at 
org.apache.fop.layoutmgr.PageSequenceLayoutManager.activateLayout(PageSequenceLayoutManager.java:106)
        at 
org.apache.fop.area.AreaTreeHandler.endPageSequence(AreaTreeHandler.java:234)
        at 
org.apache.fop.fo.pagination.PageSequence.endOfNode(PageSequence.java:123)
        at 
org.apache.fop.fo.FOTreeBuilder$MainFOHandler.endElement(FOTreeBuilder.java:340)
        at org.apache.fop.fo.FOTreeBuilder.endElement(FOTreeBuilder.java:169)
        at 
org.apache.xalan.transformer.TransformerIdentityImpl.endElement(TransformerIdentityImpl.java:1102)
        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown 
Source)
        at org.apache.xerces.xinclude.XIncludeHandler.endElement(Unknown 
Source)
        at 
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanEndElement(Unknown Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown
 
Source)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown 
Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown 
Source)
        at 
org.apache.xalan.transformer.TransformerIdentityImpl.transform(TransformerIdentityImpl.java:485)
        at org.apache.fop.cli.InputHandler.transformTo(InputHandler.java:214)
        ... 3 more
---->8----->8----->8----->8----->8----->8----->8

On Tuesday, September 14, 2010 01:04:02 am Pascal Sancho wrote:
>  Hi,
> I think the behaviour is correct here:
> Cells height is not sufficient to see the effect you want.
> try to increase the height of vertically spanned cells (by setting the
> height property to 2em) and you will see what I mean.
> 
> Pascal
> 
> Le 13/09/2010 22:39, Alexey Neyman a écrit :
> >     <fo:table table-layout="fixed" width="100%"
> >     
> >       border-top="solid black 0.5pt" border-left="solid black 0.5pt">
> >      
> >      <fo:table-body>
> >      
> >       <fo:table-row>
> >       
> >        <fo:table-cell border-bottom="solid black 0.5pt"
> >      
> >      border-right="solid black 0.5pt"
> >      number-rows-spanned="2"
> >      number-columns-spanned="2">
> >     
> >     <fo:block>A</fo:block>
> >     
> >        </fo:table-cell>
> >        <fo:table-cell border-bottom="solid black 0.5pt"
> >      
> >      border-right="solid black 0.5pt">
> >     
> >     <fo:block>B</fo:block>
> >     
> >        </fo:table-cell>
> >       
> >       </fo:table-row>
> >       <fo:table-row>
> >       
> >        <fo:table-cell border-bottom="solid black 0.5pt"
> >      
> >      border-right="solid black 0.5pt" number-rows-spanned="2">
> >     
> >     <fo:block>C</fo:block>
> >     
> >        </fo:table-cell>
> >       
> >       </fo:table-row>
> >       <fo:table-row>
> >       
> >        <fo:table-cell border-bottom="solid black 0.5pt"
> >      
> >      border-right="solid black 0.5pt">
> >     
> >     <fo:block>D</fo:block>
> >     
> >        </fo:table-cell>
> >        <fo:table-cell border-bottom="solid black 0.5pt"
> >      
> >      border-right="solid black 0.5pt">
> >     
> >     <fo:block>E</fo:block>
> >     
> >        </fo:table-cell>
> >       
> >       </fo:table-row>
> >      
> >      </fo:table-body>
> >     
> >     </fo:table>
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to