On Wed, Aug 4, 2010 at 8:56 AM, Thomas Koetter <[email protected]> wrote: > What strikes me though is that according to the spec "The br element > represents a line break". A *line* break is presentational in nature. The > break is structural, but restricting it to a certain presentation of that > break lacks the desired separation of structure and presentation.
Anything else is impossible in this case. <b> and <i> are also presentational, but the presentation cannot be separated from the semantics. > Wouldn't it make more sense to consider the br element to be just a minor > logical break inside a paragraph? Just like hr represents a thematic break on > the paragraph-level. How the break would be rendered is a different matter > and should be left to the designer. Line breaks are not used for minor logical breaks inside paragraphs. Those are typically represented by a period. > Consider this: > <p>P. Sherman<br> > 42 Wallaby Way<br> > Sydney</p> > > There's no reason why line breaks should be part of an address. I've seen > many addresses on one line with their parts separated just by dots or pipes. > Given the inherent structure of an address, a definition list with name/value > pairs would also be more semantically fitting than a paragraph of text with > line breaks. That would either be incorrect use of <dl>, or would not display as desired, or would require hiding some elements arbitrarily. > <address> > <dl> > <dt>Name</dt><dd>P. Sherman</dd> > <dt>Street</dt><dd>42 Wallaby Way</dd> > <dt>City</dt><dd>Sydney</dd> > </dl> > </address> That requires hiding all the <dt> elements to achieve the same display, which is kind of ridiculous. > <address> > <dl> > <dd>P. Sherman</dd> > <dd>42 Wallaby Way</dd> > <dd>Sydney</dd> > </dl> > </address> That's invalid markup. The first child of a <dl> (if any) must be a <dt>. I don't know what the semantics of <dl> are supposed to be with no <dt>. <ul> would work, if you really wanted, but I don't see how it's any more semantic. > So, in summary, I suggest changing the br element to just be a logical break > element with the default rendition of a line break, but which could be > adjusted via a new style property. It should already be adjustable using existing style properties, so no change is needed except possibly saying it represents a logical break instead of a line break. This is basically wrong, though, since there are lots of ways to mark up minor logical breaks, and <br> refers to one particular way, no other. Look at it this way: <br> is just a workaround for the fact that HTML ignores newlines in markup. It could have just been in an alternate history. It's presentational, yes, but so are periods and commas. When I type a period, I don't want the browser to interpret that as some generic separator that it might hopefully decide to render as a period, I want *a period*. Exactly that, nothing else. Likewise for newlines. We don't need to impose some abstract semantic meaning on *everything*. Some presentation is so closely tied to the meaning of the document that it can't reasonably be abstracted away. This is true for <b>, <i>, <sup>, <sub>, and <br>, among others.
