- From: Leif Halvard Silli <xn--mlform-iua@xn--mlform-iua.no>
- Date: Sat, 27 Feb 2010 08:27:10 +0100
- To: public-html-a11y@w3.org
- Cc: Shelley Powers <shelleypowers@burningbird.net>
Shelley Powers, Fri, 26 Feb 2010 13:10:11 -0600: > Of course, all of this will probably be in the change proposal, so if > you want to just tell me to be patient, that's cool too ;-) LOL. :-) But thanks for a very thoughtful reply! It sounds like I should not wait with my proposal until it is 100% ready ... ;-) So here is an rough change proposal draft (inspired by an evening out with some Opera folks here in Oslo tonight - plus all the thoughts I've gathered in this and related groups [but I take the full blame myself]): Change proposal draft to allow (but not require) @aria-labelledby and/or <caption> to take the role of @summary. === Short version --- * @summary remains valid. * alternatively: @aria-labelledby can point to an element (which could even be a <caption> element–see below) with the summary. * <caption> can be used for summary, in particular if @aria-labelledby points to it. * more than one <caption> element is permitted, if it/they are pointed to by aria-labelledby and/or aria-describedby. * @aria-labelledby cannot point to anything inside <caption>, but it can point to _a_ <caption>. * aria-describedby can _not_ be used for summaries (but it can be used for long descriptions! If aria-describedby points to a <caption>, then it does not count as summary!) * remove HTML5's permission of block elements inside <caption>, except when <caption> is pointed to via aria-describedby. Long version --- 1) No table should be allowed without an @alt like description The page is invalid without it. Exception: tables with a ARIA @role that explains that the table is a layout table. 2) The summary description could be provided in 3 ways: A. @summary B. @aria-labelledby C. a <caption> (Note that B. could point to C.) Justification/Explanation: A. @summary - it just works, so it should be allowed, for ever. B. @aria-labelledby - because it can be a very useful alternative and can be used in multiple ways. Why @aria-labelledby and not aria-describedby? Because I totally buy into that part of of what Gez has said: the summary should be rather short. (I think the point meant to be made in HTML4 is that "@summary is long, when compared to a typical <caption>" - HTML4 does not know about Hixie style long <caption>s with block elements inside.) Of course, it should also be permitted to place aria-describedby="*" inside the <table> tag, when that is warranted. However, using aria-describedby should not in any way buy you free from providing a *summary* (for which either @summary, @aria-labelledby and/or <caption> must be used). C. <caption> itself. When HTML401 was specified, CSS was in its infancy. Today we are able to hide <caption> quite easily. If there are so called "business sites" that are afraid from such a thing as an extra caption element, then I highly doubt their business. No "business site" fails to rely on CSS these days! (At any rate, @summary should remain valid - so no problem.) So what do I mean by counting <caption> in as a means for providing a summary? Two things: FIRSTLY: If the table is not meant to have any visible caption, then authors can *still* provide a hidden caption. Just hide it via CSS! I created a simple example in Live DOM viewer - see footnote. [1] (I'm not certain that the CSS of that example is as screen reader compatible as it could be - that must be tested out, of course. But it should be relatively simple to find a solution. The Live DOM Viewer example has been tested in Opera, Safari, Firefox and IE7. I also tested it in Jaws 10. I also tested it in VoiceOver, but VoiceOver is like a sighted person: it only reads that what it considers as visible. Ultimately though, I found a VoiceOver compatible solution - which I can present later on. @summary is *not* VoiceOver compatible - not in OSX 10.5 at least.) This kind of use of <caption> is totally within the frames of <caption> - just see what I quoted about the relationship between @summary and <caption> in section "11.2.2 Table Captions: The CAPTION element" - in my last e-mail message. [2] Even WCAG 2.0 contains examples where the @summary is nothing but a caption! (Because one use case for @summary is to fix tables that are lacking a <caption>!) SECONDLY: When a table already does have a "normal" <caption>, then a second <caption> element is permitted, as a summary container. (And even a third, together with aria-describedby, is permitted.) In order that this second <caption> element counts as a table summary, however, then @aria-labelledby *must* point to that <caption>. (So, unlike what I've said previously: no need for role="summary" or anything like that - even if I think @role would also be an OK and - in some ways - better solution.) Whether this second summary should be hidden or visible, would depend entirely on the specific needs of the designer and/or the audience etc. Code example: <table aria-labelledby="summary" aria-labelledby="longdesc"> <caption>Windows codepages</caption> <caption id="summary" class="hidden" >Comparison of encoding support in different versions of MS Windows</caption> <caption id="longdesc" class="hidden visible whatever" > <ul> <li>The rows contain portfolios and the columns contain dates</li> <li>The date columns are ordered from most recent to oldest</li> <li>The portfolios rows are organized alphabetically</li> <li>The aggregate data is in the final two columns</li> </ul> </caption> Explanation of code example: Only the second <caption> is a summary - because it is pointed to by aria-labelledby. John said that he thought that a list could be useful for describing a table. [3] But if so, then this should be considered a long description, and not a summary. Hence @aria-describedby for that. NOTES: 1. HTML5 says that <caption> may contain block elements. But at least when <caption> is used as a summary container, then no block elements should be permitted, since summaries are meant to be short. 2. When the table only contains a single <caption>, then it should not be required to use @aria-labelledby for pointing to that <caption> - not even if that caption only contains a summary and is hidden. 3. A consequence of not requiring aria-labelledby when there is only one <caption>, is that any <table> with a <caption> would fulfill the requirement that I suggested - namely that all data tables should have an @alt like description. Exception: see point 6. below. 4. As part of this proposal, I would like to suggest that <caption> should *not* be permitted to contain block elements *unless* it is pointed to by aria-describedby. (And note, that if it is pointed to by aria-describedby, then it would neither count as a <caption> nor as a summary, and so the <table> would be invalid, unless a @summary, a "clean" <caption> and/or @aria-labelledby was added to the table.) 5. Details: <details> can not be used inside the normal caption, because this change proposal turns <caption> into a "pure" caption in the HTML4 sense, whereas <details> is a block element. It can also not be kept inside the "summary caption" - pointed to via aria-labelledby. But it could live inside a caption which is pointed to via aria-describedby. When <details> is kept outside the table, then there are no limits on how it can be pointed to (but that is a general problem of ARIA - there is nothing that technically hinders that aria-labelledby points to something - such as a very long text - that just can't be considered a label). 6. A consequence of 5. is that you _can_ have just *one* <caption> element, containing block contents, including <details>, _provided_ that you also have a @summary or that @aria-labelledby points to an element outside the <table>. 7. It should not be legal for aria-labelledby to point to a table cell - or to some child element of caption (perhaps with the exception that <caption> contains nothing but whitespace outside the child element.) [Perhaps this is a point of view where the ARIA experts disagree with me?] POSITIVE ISSUES: - Builds on HTML4 and WCAG in drawing a link between caption and summary. - Builds on things authors already know about: <caption> and @summary - Builds on the new goodness: ARIA-labelledby - Operates with a clear distinction between aria-labelledby and aria-describedby. (It seems like many are very hooked up with the "describedby" in aria-describedby - "described" is perhaps a simpler concept than "labelled"?) NEGATIVE ISSUES: - It can be a challenge to make a second or a third caption _visible_ - it is difficult to get to work cross browser. My test page from june 2009 [4] shows that there are challenges, but also that it is possible. Of course, user agents must be developed to support this better. However, to begin with, then I think it is actually perhaps more important that a second caption is easy to make *in*visible. - Some will probably claim that allowing <caption> to contain a summary, can be confusing. To which I will say that both HTML4 and WCAG demonstrate that @summary can also be used to repair the lack of a caption. So why not repair that lack, with a caption instead? [1] http://software.hixie.ch/utilities/js/live-dom-viewer/saved/387 [2] http://lists.w3.org/Archives/Public/public-html-a11y/2010Feb/0610 [3] http://lists.w3.org/Archives/Public/public-html-a11y/2010Feb/0608 [4] http://målform.no/html5/caption+role -- leif halvard silli
Received on Saturday, 27 February 2010 07:27:48 UTC