Stuart -- did you ever come up with a workable solution? I agree w/
Sebastian, that my first instinct is to use a separate pass of XSLT
to indicate what is in and what is out of <addSpan> range. I'd be
more inclined to make it a before-converted-to-HTML preprocessing
step instead of an after-converted-to-HTML postprocessing step, but
the idea is the same.
I.e., I'd be tempted to try changing
<p> content3 </p>
<add xml:id="a1" next="#a2">
<p> <add xml:id="a2" next="#a3" prev="#a1">content3</add> </p>
<p> <add xml:id="a3" prev="#a2">content4</add>
On a slightly different note, I'd like to take this opportunity to
point out a distinction that I think is worth retaining, but is
falling out of our collective lexicon. <addSpan> is not, in my book,
a milestone element. It is empty, but it is a segment boundary
delimiter, not a milestone.