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]
> 
> 

Reply via email to