Let's be clear. CALS does not prohibit nesting of tables entirely. CALS permits a nested table using the entrytbl element [1]. Its main limitation seems to be that entrytbl cannot span more than one row, although it can span more than one column. I don't know why it is restricted to a single row, though. Harvey Bingham wrote a history of CALS [2] that you might enjoy reading.

I know of no effort to update the CALS standard. At this point I think OASIS de facto owns the CALS standard and they don't have an active committee on the subject. Their last effort was in 1995 [3].

DocBook has allowed full nested tables since version 4.3, when HTML table markup was added. You can put a table inside a <td> element in DocBook's HTML table markup. And there are no restrictions on row or column spans. And, no, you cannot mix CALS table and HTML table elements in the same table. 8^)

[1] http://docbook.org/tdg/en/html/entrytbl.html
[2] http://users.rcn.com/hwbingham/tables/calstbhs.htm
[3] http://www.oasis-open.org/specs/tm9502.html

Bob Stayton
Sagehill Enterprises
[email protected]

----- Original Message ----- From: <[email protected]>
To: <[email protected]>; <[email protected]>; 
<[email protected]>
Sent: Friday, March 05, 2010 10:34 AM
Subject: RE: [docbook] informaltable inside table


Does anyone happen to know why the arbitrary nesting of tables is prohibited, or if any updates to the CALS standard are under consideration on this topic? I don't really understand the original motivations behind the standard, but not being able to nest tables seems pretty restrictive.


-----Original Message-----
From: Bob Stayton [mailto:[email protected]]
Sent: Tuesday, March 02, 2010 3:51 PM
To: maxwell; [email protected]
Subject: Re: [docbook] informaltable inside table

Hi,
I consulted with the DocBook Technical Committee, and found that it is a bug 
that
table is allowed in entry elements.  Allowing table violates the Cals table 
standard
that DocBook adheres to.  This will be corrected in the next release of the 
DocBook
schema.

The only solution I have is to use HTML table markup instead of Cals table markup. The
<td> element permits table or informaltable children.

Bob Stayton
Sagehill Enterprises
[email protected]


----- Original Message ----- From: "maxwell" <[email protected]>
To: <[email protected]>
Sent: Friday, February 26, 2010 7:28 AM
Subject: [docbook] informaltable inside table


We're using DocBook 5 to write grammars, and one of the constructs we use
a lot is tables.  These are mostly used to display paradigms, and
frequently a cell in a paradigm needs to display several kinds of
information.  An example cell might look like this:

  ko'tan   k-o'tan
           my-heart

(Actually, the grammar we're using now has an Arabic script form on the
left and its romanized form on the right, but I don't trust email to
transmit that correctly.)  Some cells are more complex, but the general
point is that because we want things to line up vertically (and other
alignment issues), the obvious solution is to use some kind of a table
inside these table cells.

The most obvious solution would be to make the cells be <entrytbl>s
instead of <entry>s.  That didn't work, because in some cases we need to
have paradigm cells span columns and/or rows.  (This happens when a single
form in a language has more than one use in the language.  An example would
be standard Spanish, where a present tense verb ending in -an or -en is
used for both second and third person plural.)  While <entrytbl>s can span
columns, the DocBook standard (and the CALS standard on which it is based)
doesn't allow them to span rows.

So the next solution would be to put a <table> or an <informaltable>
inside an <entry>, thus:
  <table>
    ...
      <entry>
         <table>...</table>
      </entry>
  </table>
This is perfectly possible, but it forces us to put a <title> in the inner
<table>, which we don't want.  We do want <title>s on the outer table, so I
thought this would work:
  <table>
    ...
      <entry>
         <informaltable>...</informaltable>
      </entry>
  </table>
Unfortunately, DocBook forbids this: "informaltable must not occur in the
descendants of table." That comes from
http://www.docbook.org/tdg5/en/html/cals.table.html; there is also a
schematron rule enforcing this at
http://www.docbook.org/xml/5.0/sch/docbook.sch:
  <s:rule context="db:table">
    ...
    <s:assert test="not(.//db:informaltable)">
    informaltable must not occur in the descendants of table
    </s:assert>
    ...
  </s:rule>

What is the reason for preventing <informaltable>s from appearing as a
descendant of <table>?  This limitation doesn't appear to come from the
CALS standard, which does not (AFAICT) define <informaltable>.  It seems to
make good sense (to me!) to allow tables without titles inside of tables
with titles; in fact, I can't think of a situation where I would want a
<table> with a <title> to be embedded inside another <table>.

In sum, as long as a <table> can be embedded inside an <entry>, I think it
should be possible to embed an <informaltable> there too.  I'm posting here
first in case there's some good reason that I can't think of for not
allowing this; I'll submit an RFE later, if I don't get push back.

  Mike Maxwell

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