Day 78 of 100DaysOfSpec, 4.6 Edits, contd.

I am reading and taking notes on the HTML specifications for 100 days as part of #The100DayProject. Read the initial intent/backstory. I am a Microsoft employee but all opinions, comments, etc on this site are my own. I do not speak on behalf of my employer, and thus no comments should be taken as representative of Microsoft’s official opinion of the spec. Subsections not listed below were read without comment.

Currently reading in 4.6 Edits

All the sections I read today were non-normative and apply to yesterday’s reading.

4.6.4 Edits and paragraphs

This is sort of a refresher from yesterday’s reading, but because having ins and del elements cross paragraphs (marked up with p tags or implied) is hella confusing, you shouldn’t do that. Mark up each paragraph with p tags, and apply ins and del elements as they make sense. Whole paragraph was added or deleted? Put the p tag inside the edit element. Just a part of the paragraph? Put the edit element inside the p element.

4.6.5 Edits and lists

You can’t wrap a list item (li) with an edit element because only list items are allowed as direct elemental children of ul and ol elements.

You can, however, wrap the contents of an li with an ins or del element.

If you wanted to show than a list item had been delete and replaced by another, you can use one li, with its direct descendants being a del tag followed by an ins tag. You COULD also use two li elements, with an ins and del child respectively, but note that they’ll still count as 2 list items instead of one, which might have unwanted effects on scripts that spit out the number of list items, or numbering on ol elements. You could always use attributes to change the number on a list item, but this could become unmanageable.

4.6.6 Edits and tables

Content models for table elements can be tricky. There’s actually quite a lot under the hood for something that seems so antiquated as tables (they are obviously still relevant for tabular content, mostly speaking to their previous use as hacks for layout, and the stigma that carries).

So if you want to use ins and del in tables, you have to do some things that might seem a bit annoying. To show that a whole row or column has been added or removed, you have to wrap the contents of each cell in a ins or del element. You can’t really show history of how cells have been shuffled around the table. Styling these entire rows/columns additions and deletions the way you want might require the use of classes, depending on the design.

And that’s the end of Chapter 4.6, a shorter chunk of the HTML spec.


Comments