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.