Jeremias, This should not be done. If someone has a problem with it--and I've never heard a complaint--they can send an email to xsl-editors, for them to adjust the content model for fo:table accordingly. (If they don't, they don't.)
Note that the editors are very reasonable about this--for example, fo:page-sequence-wrapper and fo:wrapper are allowed to have no children for programmatic convenience, even though it doesn't make sense for these items to be empty. BTW, what is FONode.removeChild() for anyway? Why is this helpful--we haven't needed such a method for years. Thanks, Glen --- [EMAIL PROTECTED] wrote: > jeremias 2005/02/23 14:04:01 > > Modified: src/java/org/apache/fop/fo FObj.java > FONode.java > src/java/org/apache/fop/fo/flow > TableBody.java > Log: > An empty table-body is illegal but we'll allow it > to make things easier for stylesheet writers. > Empty table-body elements are removed from their > parent so they can't cause any nasty effects in the > LMs. > > Revision Changes Path > 1.92 +7 -0 > xml-fop/src/java/org/apache/fop/fo/FObj.java > > Index: FObj.java > > =================================================================== > RCS file: > /home/cvs/xml-fop/src/java/org/apache/fop/fo/FObj.java,v > retrieving revision 1.91 > retrieving revision 1.92 > diff -u -r1.91 -r1.92 > --- FObj.java 3 Feb 2005 08:18:27 -0000 1.91 > +++ FObj.java 23 Feb 2005 22:04:01 -0000 1.92 > @@ -170,6 +170,13 @@ > } > } > > + /** @see > org.apache.fop.fo.FONode#removeChild(org.apache.fop.fo.FONode) > */ > + public void removeChild(FONode child) { > + if (childNodes != null) { > + childNodes.remove(child); > + } > + } > + > /** > * Find the nearest parent, grandparent, etc. > FONode that is also an FObj > * @return FObj the nearest ancestor FONode > that is an FObj > > > > 1.54 +10 -0 > xml-fop/src/java/org/apache/fop/fo/FONode.java > > Index: FONode.java > > =================================================================== > RCS file: > /home/cvs/xml-fop/src/java/org/apache/fop/fo/FONode.java,v > retrieving revision 1.53 > retrieving revision 1.54 > diff -u -r1.53 -r1.54 > --- FONode.java 1 Feb 2005 21:21:28 -0000 1.53 > +++ FONode.java 23 Feb 2005 22:04:01 -0000 1.54 > @@ -198,6 +198,15 @@ > } > > /** > + * Removes a child node. Used by the child > nodes to remove themselves, for > + * example table-body if it has no children. > + * @param child child node to be removed > + */ > + public void removeChild(FONode child) { > + //nop > + } > + > + /** > * @return the parent node of this node > */ > public FONode getParent() { > @@ -410,5 +419,6 @@ > public int getNameId() { > return Constants.FO_UNKNOWN_NODE; > } > + > } > > > > > 1.38 +8 -1 > xml-fop/src/java/org/apache/fop/fo/flow/TableBody.java > > Index: TableBody.java > > =================================================================== > RCS file: > /home/cvs/xml-fop/src/java/org/apache/fop/fo/flow/TableBody.java,v > retrieving revision 1.37 > retrieving revision 1.38 > diff -u -r1.37 -r1.38 > --- TableBody.java 21 Feb 2005 21:52:14 -0000 1.37 > +++ TableBody.java 23 Feb 2005 22:04:01 -0000 1.38 > @@ -88,6 +88,11 @@ > */ > protected void endOfNode() throws > FOPException { > getFOEventHandler().endBody(this); > + if (childNodes == null || > childNodes.size() == 0) { > + getLogger().error("fo:table-body must > not be empty. " > + + "Expected: > (table-row+|table-cell+)"); > + getParent().removeChild(this); > + } > convertCellsToRows(); > } > > @@ -98,7 +103,9 @@ > */ > private void convertCellsToRows() throws > FOPException { > try { > - if (childNodes.size() == 0 || > childNodes.get(0) instanceof TableRow) { > + if (childNodes == null > + || childNodes.size() == 0 > + || childNodes.get(0) > instanceof TableRow) { > return; > } > //getLogger().debug("Converting cells > to rows..."); > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: > [EMAIL PROTECTED] > For additional commands, e-mail: > [EMAIL PROTECTED] > >