- From: Jukka K. Korpela <jkorpela@cs.tut.fi>
- Date: Sat, 15 Mar 2014 10:44:44 +0200
- To: www-validator@w3.org
2014-03-13 1:56, Ken McInnes wrote: > I have followed the recent previous discussions on this topic, I suppose you mean http://lists.w3.org/Archives/Public/www-validator/2014Feb/0005.html > but have started another thread. I wonder why. It is generally useful to keep a discussion in one thread if it revolves around a specific topic. But maybe your point is that the previous discussion was about border=1 being reported as an error, which has been fixed (restored) to issuing just a warning, and you raise the question about the formulation of the warning. > I am happy that we now have a validation warning for border=1 / border=0 > rather than an error. Even a warning might be questionable. Note that this case is not mentioned in 11.1.1 Warnings for obsolete but conforming features. It might be argued that the list there is not exhaustive and validators may give warnings about anything they like. But I would prefer a more disciplined approach: issue an error when a conformance requirement is violated; issue a warning when the spec tells that a warning shall be issued; and do something else (say, issue a note) if there is something else you wish to say. > The html5 spec has: > > The border attribute may be specified on a table element to explicitly > indicate that the table element is not being used for layout purposes. > If specified, the attribute's value must either be the empty string or > the value "1". The attribute is used by certain user agents as an > indication that borders should be drawn around cells of the table. > > This is not very clear, Looks pretty clear to me as far the syntax is considered. Otherwise, it really avoids hitting the nail. > most coders/writers are using: > border=1 to indicate 'true' > and user agent should display a default border > border=0 to indicate 'false' > and user agent should not display a default border. Really? I have rarely seen border=0 in <table>, and if I saw one, I would expect it to be used "just for safety", like many people use border=0 for an image even when it is not a link. In any case, it has no effect. > In other words, border=1 or border=0 is logical mark-up, not > presentational mark-up. It seems that HTML5 CR and the validator are using different verbalisms to avoid saying what border=1 is really about. Its actual impact is that it makes a table look like a table even when CSS does not take effect, for some reason. It might be said that by HTML5 CR, border=1 is "logical markup", or perhaps better "structural markup". But when HTML5 CR describes this, it is really just retrofitting a good practical decision in language design to a model that everything approved needs to be "semantic". By HTML5 CR, border=0 is simply nonconforming, invalid. Tables have been used for layout from the early days, and their use for layout was long much more common than their use for tabular data. Probably this is why browser be default don't draw any borders around cells. So when you use a table for tabular data, border=1 does some basic formatting, and then you start wondering how to tune it with CSS. The validator is now even inconsistent with itself in the wordings: border=1 causes the warning "The border attribute on the table element is presentational markup. Consider using CSS instead. For example: table, td, th { border: 1px solid gray }" border=2 causes the error message "The border attribute on the table element is obsolete. Use CSS instead." (The border attribute has not been declared obsolete.) By the way, by declaring values other than "1" and "" as nonconforming, HTML5 CR definitions mean that validators do not do, or at least are not required to do, any distinction between border="2" (which has a well-defined meaning in HTML 4.01 and is implemented that way in browsers) and border="@" (which is nonconforming by any HTML spec). In fact, even HTML5 CR describes the meaning of border="..." for values greater than 1, though just in the Rendering section, in 10.3.9: "The table element's border attribute maps to the pixel length properties 'border-top-width', 'border-right-width', 'border-bottom-width', 'border-left-width' on the element. If the attribute is present but parsing the attribute's value using the rules for parsing non-negative integers generates an error, a default value of 1px is expected to be used for that property instead." > The spec also suggests that somehow 'border' could be used to interpret > that the table does / does not contain tabular data. This is a bit of a > stretch, given current coding practices, and given all the legacy > mark-up that is around. Agreed. There has been no law against using border=1 for a layout table and no requirement that data tables use the border attribute. No software should make a guess about layout vs. data table on such grounds. > Suggested solution: > - for the validator - keep the warning, if border=0 or border=1, > otherwise an error. Warning message should suggest CSS be used for > presentation. The use of border=0 is defined to be an error. If border=1 is regarded is being "logical" (or "structural" or "semantic"), as you seem to be saying (maybe I misunderstood) and as HTML5 CR seems to be saying, it would be all wrong to suggest using CSS instead. What should be done, if we regard HTML5 CR as the specification against which documents are validated, is this: border (without value): passes border="": passes border="0": an error message (which might be accompanied by a note that the attribute has no effect) border="1": passes border="n" (where n is a number > 1, possibly followed by other characters): an error message (which might be accompanied by a note that says that the effect of the attribute can be achieved with CSS) border with any other value: an error message (which might be accompanied by a note that says that the attribute is treated as border="1") Yucca
Received on Saturday, 15 March 2014 08:45:11 UTC