[whatwg] <p> elements containing other block-level elements
Ian Hickson
ian at hixie.ch
Mon Apr 11 09:50:17 PDT 2005
On Thu, 7 Apr 2005, Lachlan Hunt wrote:
>
> What is the use case for [allowing] tables to be nested inside <p>?
For instance:
When you look at
x | 1 | 2 |
---+---+---+
1 | 1 | 2 |
---+---+---+
2 | 2 | 4 |
---+---+---+
...it is clear that [bla bla bla].
I agree that it doesn't seem to make much sense to nest paragraphs inside
those tables though.
> > I'm trying to work out exactly what the rules that describe the above
> > actually are, but I'm interested in hearing whether people agree or
> > disagree with my "good" and "bad" examples above. I'm especially
> > interested in what use cases I may have missed (please don't say "I
> > think this should be allowed" without giving a real-world example),
> > and whether anyone thinks any of the cases I think should be allowed
> > should not.
>
> You missed <p><blockquote/></p>.
Oops, yep. Added.
> <blockcode> should probably be allowed too, though it doesn't seem to be
> included in web apps. Oh well, that's probably a discussion for another
> thread anyway, if it hasn't already been discussed (I'll search the
> archives later).
We haven't discussed it yet. I hadn't really thought about it but given:
<pre><code> ... </code></pre>
<blockcode> ... </blockcode>
...and given that the former would work in all existing UAs and the second
wouldn't, and the former has the same semantics as the second, I don't see
much of an advantage to the second.
> > Note that all of this would only be relevant to XHTML content (i.e. in
> > an XML context), since in text/html HTML we are pretty much stuck with
> > the existing parsing models which do things like close <p> elements
> > upon hitting another block-level element.
>
> It's a shame no browser actually reads the DTD, this wouldn't be a
> problem if they did :-(. This is one reason why HTML should be a true
> SGML application, and why browsers should have been built to conform.
Yeah, well. In the words of Syndrome: "Too late. 15 years too late."
On Thu, 7 Apr 2005, Anne van Kesteren wrote:
>
> Ian Hickson wrote:
> > One thing that XHTML2 does which makes a lot of sense to me is allow nesting
> > of certain elements within <p> elements, as in:
> >
> > <p>
> > For this recipe you need
> > <ul>
> > <li>an egg,</li>
> > <li>flour, and</li>
> > <li>butter.</li>
> > </ul>
> > Mix it all together and so forth.
> > </p>
>
> The problem is that you mix inline with block-level. Unless UL is
> redefined to be inline level within P I don't think this is a good idea.
> I like the idea of having either inline or block-level content.
The spec now has block-level, structured inline-level, and strictly
inline-level concepts. I'm not overly fond of the names (better
suggestions welcome), but I hope it addresses your concerns.
> > * <pre>
>
> We have CODE and other nice inline elements for this.
I'll look at <pre> again when it comes to specifying it. I'm not really
happy with its semantics myself either. There is a difference between
<pre> (or <pre><code>) and <code>, though; the former is much more block-
like than the latter. I feel that's somewhat important.
> That is indirectly nesting P elements, a bit ugly IMHO. It also doesn't
> make sense.
Agreed.
> > <ol>
> > <li>
> > <p>
> > ...
> > <ol>
> > <li>
> > ...
>
> Why would you want a P element there?
It would probably be part of something bigger, as in:
<ol>
<li>
<p>...</p>
<p>...</p>
<p>...</p>
<p>
...
<ol>
<li>...
> > <pre>
> > <p>...</p>
> > <p>...</p>
> > </pre>
>
> Ouch! Forbid this.
I probably agree with this, but I'm not 100% sure. What about <pre>
blocks around e-mails:
<pre>
<p>Access via the DOM also affects styling.</p>
<p>Also, if UAs have to parse it in the old way, what's the point?
It's not increasing the semantics, since the UAs have to parse it the
old way.</p>
</pre>
...or something. Then again, that does look pretty bad.
> > <p>
> > ...
> > <pre>...</pre>
> > </p>
>
> Use case?
An inline example, as in:
<p>
An inline example, as in:
<pre>
<p>An inline example.</p>
</pre>
...is one use case.
</p>
...is one use case.
(Sorry.)
On Fri, 8 Apr 2005, Michael Gratton wrote:
>
> As was pointed out elsewhere on this thread (list?), existing UAs would
> implicitly close any outer block elements upon encountering a nested
> block element.
In text/html, yeah. I propose we don't change that for HTML5 UAs. It would
only be in XHTML documents that you could use these new features (that and
by direct DOM manipulation).
On Fri, 8 Apr 2005, Anne van Kesteren wrote:
>
> You removed it now but I think that the 'XML content model' approach
> made it quite obvious that is not the HTML content model.
I'll be putting that back in due course. I want to first get the basic
language done before starting to add the HTML vs XML exceptions. :-)
On Fri, 8 Apr 2005, Lachlan Hunt wrote:
> >
> > The question is whether:
> >
> > a) We don't allow any of this.
>
> I don't think progress should be held up any more than it already is by
> broken browsers, so let's not let a limitation with HTML affect an XHTML
> implementation.
Agreed.
> > b) We allow it in XML and the DOM but disallow it in the HTML
> > serialisation
>
> Yes, this makes the most sense to me.
Cool, it seems we are in agreement then.
> Absolutely! Given the incredibly broken SGML/HTML implementations that
> will never get any better, Migrating to XML is certainly the best way to
> actually progress into the future. I'm sure no-one wants to be stuck
> with HTML forever, which is really more of a lost-cause when it comes to
> any real enhancements.
I think we'll probably be "stuck" with HTML for a very long time -- at
least as long as it takes for XML to have a variant created that has
well-defined error handling rules other than the author-hostile "abort
processing immediately".
> I don't think the spec should limit nested content too much because, as
> is shown by the <p><blockquote><p/></blockquote></p> example, there are
> valid reasons to nest paragraphs, and possibly others we haven't thought
> of.
Agreed. I've made the spec not restrict the content models per se, just
say "this element can contain this category of elements" and made sure the
elements are in the right categories.
> Also, as history has shown, HTML4 never thought lists within paragraphs
> would be needed, though they are now allowed. By placing too much
> restriction on the content models, we risk locking out legitimate
> use-cases which we haven't thought of, but which authors may find in the
> future. I'm not saying we should just allow anything within anything,
> but we should be careful about being too restrictive.
I agree. We should be careful not to allow too much too, though -- it's
easier to allow new things previously disallowed than remove old things
previously allowed.
On Fri, 8 Apr 2005, Henri Sivonen wrote:
> >
> > (In fact you need special code for <style> in general, since it's
> > PCDATA in XHTML and CDATA in HTML.)
>
> I know. I intend to deal with <style> and <script> later--just for
> completeness. Currently, I am dodging the issue by avoiding embedded
> styles and scripts.
I would suggest that in that case the solution would be to avoid nesting
elements in this way as well.
> > Is catching <ul>s inside <p>s something that crosses the line?
>
> It changes assumptions rather significantly if you need to know at the
> input stage what output flavor is going to be used.
>
> I see the option are:
> a) Banning XHTML divergence for everyone.
> b) Behaving as if a) was the case and barfing at XHTML that cannot be
> serialized as HTML.
> c) Bending over backwards in order to track whether a given piece of
> data can be serialized as HTML and whether there is a future need for a
> given piece of data to be serialized as HTML.
>
> Option a) doesn't seem popular and implementing c) would be a pain,
> which seems to leave b) for those who serialize as HTML. Of course, the
> reason why one would want to serialize as HTML is IE (and Lynx).
Agreed. Is option b acceptable to you?
--
Ian Hickson U+1047E )\._.,--....,'``. fL
http://ln.hixie.ch/ U+263A /, _.. \ _\ ;`._ ,.
Things that are impossible just take longer. `._.-(,_..'--(,_..'`-.;.'
More information about the whatwg
mailing list