I take as reference: http://www.w3.org/TR/xsl/

To begin with, I've built a simple example / test case related to my customer's needs but fairly based on the one in 6.13.1.1.2: http://www.w3.org/TR/xsl/#d0e14681 This example looks good and though not trivial to understand at first sight, it is a common-sense use of fo:retrieve-table-marker. It has a sort of "conditional row" that is displayed (or not) in the table footer and is defined just after table-body:

*        <fo:marker marker-class-name="continued">
         <fo:table-row>
           <fo:table-cell>
             <fo:block>Table continued...</fo:block>
           </fo:table-cell>
         </fo:table-row>
       </fo:marker>
*

Now if I run my test case against the trunk of FOP I get this error message:

*GRAVE: Exception
javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: file:/D:/Java/fop-0.95beta/test-rtm.fo:533:112: Error(533/112): fo:retrieve-tab
le-marker is not a valid child element of fo:table-header.
*
For the sake of clarity only let's call this a "bug" since *fo-retrieve-table-marker* /is/ a valid child element of *fo:table-header:* http://www.w3.org/TR/xsl/#fo_retrieve-table-marker So let's read the full stack trace and "fix" this by adding one more condition in *org.apache.fop.fo.flow.table.TablePart.validateChildNode()*. The next step is where I'm puzzled and don't know how to proceed since the W3C recommendation and the example they give seem inconsistent with each other, while the error message FOP returns seems consistent with the recommendation:

*GRAVE: Exception
javax.xml.transform.TransformerException: org.apache.fop.fo.ValidationException: "{http://www.w3.org/1999/XSL/Format}table-row"; is not a valid child of "fo:mark
er"! (See position 557:21)
*
This error is consistent with the W3C TR: http://www.w3.org/TR/xsl/#fo_marker
that says that the fo:marker contents is:

(#PCDATA|%inline; <http://www.w3.org/TR/xsl/#inline.fo.list>|%block; 
<http://www.w3.org/TR/xsl/#block.fo.list>)*

but it makes the example they give useless (indeed, neither inline nor block allow directly or indirectly table-row). And so I don't quite know where I'm allowed to go from here. (If I change a behaviour in *org.apache.fop.fo.flow.Marker.validateChildNode()* I may end up with something that works and fits the bill but is inconsistent with the TR).

Any comment appreciated !

Jean-Francois El Fouly

Reply via email to