[whatwg] Lists, <ins>/<del>, and <a>

Le 30 ao?t 2006 ? 4:31, Anne van Kesteren a ?crit :

>> The meaning of your markup is that you inserted and deleted some  
>> text within each list item, not that you added or deleted a list  
>> item like in mine. Semantically there is a difference, subtle  
>> maybe but still there.
>
> That depends on the definition.

Sure, the definition could say anything. But it also need to be  
coherent with what is already defined as well as with author  
expectations (to a degree) if we want to see it used correctly. Since  
enclosing a <p> element within <ins> means you added a paragraph, it  
would only make sense to enclose a <li> element within <ins> to  
signify you added a list item.

On the other side, disallowing <ins> and <del> in list context defies  
the expectation that you simply have to wrap what was inserted or  
deleted within <ins> or <del> to express what changed in a document.  
If the spec continues to disallow these elements in some contexts, it  
should be made more explicit.

The most convincing reason I've seen for keeping such an exception is  
backward compatibility in a table context. While something like this  
would make perfect sense to me as an indication that a new row was  
added to a table:

     <table>
          <tr><th>Some Header</th><th>Some Header</th></tr>
          <tr><td>Some Data</td><td>Some Data</td></tr>
     <ins><tr><td>New Data</td><td>New Data</td></tr></ins>
     </table>

... browsers just won't allow <ins> inside the table; they'll take  
the <ins> element and put it just before the table in the DOM.

But then it wouldn't be the first backward compatibility issue of  
this kind: put a paragraph within a <section> element and look at the  
resulting DOM in Mozilla, or Opera 7, and you'll have a similar problem.


>> Also, while your markup gives the same visual rendering while  
>> using the default browser stylesheet (which underlines <ins> and  
>> overstrikes <del>), the result will be completely different if you  
>> want to hide the inserted or deleted parts. Using this CSS rule:
>>
>>      del { display: none }
>>
>> you'll see a one-item list for my markup, while for your markup  
>> you'll see a second, empty list item.
>
> That could be seen as a limitation of the styling language. It has  
> been repeated many times on this list that styling should not be  
> taken into account when "designing" markup.

And I agree with that, mostly. I think style should be taken into  
account last, that priority should be given to clarity, simplicity,  
and coherency.

That said, the essence of my message was that if you can style -- or  
manipulate via the DOM -- a list-level <ins> or <del> element using  
the *same* rules you'd use for inline- or block-level <ins> or <del>,  
it makes things more coherent.


Michel Fortin
michel.fortin at michelf.com
http://www.michelf.com/

Received on Wednesday, 30 August 2006 10:21:10 UTC