- From: Kornel Lesinski <kornel@geekhood.net>
- Date: Sun, 18 Oct 2009 14:18:21 +0100
On Sun, 18 Oct 2009 08:54:59 +0100, Ian Hickson <ian at hixie.ch> wrote: >> Your version with split <h2> seems to use it only for visual effect. > > Not just visual, but presentational, yes, pretty much. It also makes it > clear how to generate the outline. I don't understand how presentational <h2>s make outline clear. I thought they're an exception that didn't work simple outline algorithm: http://validator.w3.org/check?uri=http%3A%2F%2Fwww.w3.org%2FTR%2Fhtml5%2F&outline=1#outlineresult and <hgroup> exists to resolve ambiguity caused by presentational use of headers. >> I still think that <subtitle> (subheader, tagline) would be just as >> effective, less confusing and less likely to break outline when used >> improperly... > > How is <h2> confusing? <h2> alone isn't. <hgroup> is the source of confusion. * Difference between <hgroup> and <header> is not obvious. It wasn't to me when I first saw them, and this isn't first thread about them. * Makes meaning of <hx> overloaded (sometimes it's a header that affects outline and level or other headers, sometimes it's a subheader that doesn't do anything that header would). Have you seen this post? http://www.onderhond.com/blog/work/the-hgroup-tag I think it sums up problems quite well. > I think something like <subtitle> is just as likely to be misused as > <hgroup>, to be honest. Sure, but it's much more fail-safe. If you use <header> instead of <hgroup> or fail to use <hgroup>, you may significantly change structure of the document. You can't make much damage with <subheader>. Sections will remain correct and at worst you'll add wrong subtitles to headers. My proposal for processing of <subheader>: * look for first <hx> preceeding <subheader> in tree order (depth-first starting with last child) [makes any <subheader> after <hx> work] * abort and ignore subheader when search crosses section boundaries [prevents misplaced <subheader> from being associated with wrong section]. Optionally: * if <hx> is an ancestor of <subheader>, associate subheader with that header The last rule allows: <h1><subheader>The magnificent</subheader> HTML 5 specification</h1> which addresses one of use cases you've mentioned a while ago when <hgroup> was discussed. > Also, it has a much poorer legacy (backwards compatibility) story. Both solutions have problems. I don't think ones are much worse than the others. <hgroup> breaks the outline, <subheader> is ignored. Without CSS <h2>s will be too large and have too big margins. <subheader> will not get special rendering, but at least will look like block element (<hx> and <p> typically surrounding it will cause this). One might use <p><subheader><b> if non-CSS display is a concern. With CSS <subheader> will work fine and doesn't limit styling possibilities. <hgroup>'s content model doesn't allow any non-header elements, so one can't add any extra hooks for styling: <hgroup> <h1/> <div><!-- add fancy border around subheaders? --> <h2/> <h2/> </div> </hgroup> Another thing - can you write XPath query that extracts all headers from the document? Without <hgroup> it's simple. With <hgroup> I'm not sure if I could manage to write correct query. -- regards, Kornel Lesinski
Received on Sunday, 18 October 2009 06:18:21 UTC