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