W3C home > Mailing lists > Public > www-html@w3.org > March 2001

XHTML 2.0 -- A Chance to Improve Document Structure?

From: Dave Hodder <dmh@dmh.org.uk>
Date: Sat, 24 Mar 2001 21:53:40 +0000
To: www-html@w3.org
Message-ID: <20010324215340.A294@dmh.org.uk>
For some time now I've had a few nagging thoughts about the way HTML and
XHTML is structured.  Take for example the following (trivial) fragment
of XHTML:

    <h1 id="food">Food</h1>
    <p>In this section I discuss my favourite foods.</p>
    <h2 id="cheese">Cheese</h2>
    <p>I adore many cheeses.</p>
    <h3 id="cheshire">Cheshire Cheese</h3>
    <p>Very nice, and one of England's oldest cheeses.</p>
    <h3 id="edam">Edam Cheese</h3>
    <p>A truly excellent savoury cheese from Holland.</p>
    <h2 id="potato">Potatoes</h2>
    <p>This is another food I'm enthusiastic about.</p>

Now, there's nothing wrong with it (apart from perhaps my dubious choice
of subject ;o).  You'll see I've neatly arranged my paragraphs alongside
different level headings.  The fact that (X)HTML is uncomplicated,
generic and highly flexible must be one of the reasons for it's success.

However, at the same time, I can't help but think the structure of the
document is rather flat.  The larger I make my document, the more it
seems to cry out for more hierarchical markup.

To illustrate my point, I repeat the example text using another XML
application -- DocBook.  This time the true document structure is much
more evident:

    <chapter id="food">
      <title>Food</title>
      <para>In this section I discuss my favourite foods.</para>
      <sect1 id="cheese">
        <title>Cheese</title>
        <para>I adore many cheeses.</para>
        <sect2 id="cheshire">
          <title>Cheshire Cheese</title>
          <para>Very nice, and one of England's oldest cheeses.</para>
        </sect2>
        <sect2 id="edam">
          <title>Edam Cheese</title>
          <para>A truly excellent savoury cheese from Holland.</para>
        </sect2>
      </sect1>
      <sect1 id="potato">
        <title>Potatoes</title>
        <para>This is another food I'm enthusiastic about.</para>
      </sect1>
    </chapter>

(One observation about the DocBook example: My ID's point to sections
and subsections, where as the XHTML example had ID's pointing to the
headings instead.  To make the XHTML version more like the DocBook, I
could have introduced <div> tags to contain the ID's.)

Here, then, are some ideas I would like to bounce off you all.  They are
my thoughts on a new way of structuring headings and sections in XHTML.

What would happen if <hN> elements were replaced with <sectN> elements,
and the role of the existing XHTML <title> element expanded to also
cover section titles?

Alternative solution -- a single <sect> or <section> element could be
used instead of the various <sectN> elements; it could be recursive
to allow it to be nested to any level desired.

In the present HTML or XHTML 1.X standards there's also nothing to
enforce sensibly structured headings; i.e. you can happily create a
level 2 heading and a level 4 heading with no level 3 heading between
them.  (ISO HTML has tighter rules than the W3C version it's based on,
and states that this practice isn't allowed, but even so I think the
suggestions above provide a more elegant solution.)

Of course, if "section tags" replaced "heading tags" entirely, some
would be unhappy about the reduced flexibility that results from a
more strongly enforced document structure.  However, section elements
wouldn't /necessarily/ have to make heading elements obsolute.

As a third and final example, <sectN> elements could be added whilst
preserving <hN> elements; a <hN> element would only be type-valid when
within a same-level section.  This would have the benefit of preserving
backwards compatibility with older user agents:

    <sect1 id="food">
      <h1>Food</h1>
      <sect2 id="cheese">
      <h2>Cheese</h2>
      <p>I adore many cheeses.</p>
      .
      .
      .
      </sect2>
    </sect1>

Any thoughts?

Thanks for your time,

Dave
Received on Saturday, 24 March 2001 16:54:45 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 27 March 2012 18:15:45 GMT