As part of T88290, we are going to be making some changes to
thedata-mw spec for <ref> tags.
So far, the data-mw attribute for <ref> tags had the entire HTML for
the reference represented in the body.html property in data-mw.
However, in order to reduce the size of the HTML that we generate (and
reduce network load and parsing load on clients, especially visual
editor), we have been working on a change where we add a reference to
the HTML via the body.id attribute in data-mw.
https://gerrit.wikimedia.org/r/#/c/191593/ is the patch that Marc has
been working on.
An example at the end of this email will show the specific change and
how it looks. We will update the DOM spec page[1] shortly.
So, once this patch is reviewed, tested, and deployed (most likely Feb
25 or Mar 2 unless there are concerns / problems that show up),
Parsoid will only be emitting an id-based reference to the HTML.
However, Parsoid will continue to accept both data-mw.body.html and
data-mw.body.id for serialization.
That said, because of the specifics of Parsoid's selective serializer
implementation. if a <ref>'s content has been edited, Parsoid expects
to see *some* edit in the wrapper HTML of the <ref> itself. If you
continue to send Parsoid data-mw.body.html back, all will work fine
(since that will register as an edit). But, if you send Parsoid
data-mw.body.id back, you should change the value of that id to a
different value.
This update is a bit late in coming -- kind of lost track of it amidst
the work, but as far as we know, only VE is affected by this change
and they have already fixed their code. Flow has confirmed they
aren't. But, let us know if there are any questions / concerns.
Subbu and Marc.
[1]
https://www.mediawiki.org/wiki/Parsoid/MediaWiki_DOM_spec
--------------------------------------------------------------------------------------------------------------------------------------------------------
*Wikitext**
*--------
A <ref>
This is a '''[[bolded link]]''' and this is a
{{echo|transclusion}}
</ref>
<references />
*Current HTML**
*------------
<p>A <span about="#mwt2" class="reference"
id="cite_ref-1"
rel="dc:references" typeof="mw:Extension/ref"
data-mw='{"name":"ref","body":{"html":"This
is a <b
data-parsoid='{\"dsr\":[19,40,3,3]}'><a
rel=\"mw:WikiLink\"
href=\"./Bolded_link\" title=\"Bolded link\"
data-parsoid='{\"stx\":\"simple\",\"a\":{\"href\":\"./Bolded_link\"},\"sa\":{\"href\":\"bolded
link\"},\"dsr\":[22,37,2,2]}'>bolded
link</a></b> and this
is a <span about=\"#mwt3\" typeof=\"mw:Transclusion\"
data-parsoid='{\"pi\":[[{\"k\":\"1\",\"spc\":[\"\",\"\",\"\",\"\"]}]],\"dsr\":[55,76,null,null]}'
data-mw='{\"parts\":[{\"template\":{\"target\":{\"wt\":\"echo\",\"href\":\"./Template:Echo\"},\"params\":{\"1\":{\"wt\":\"transclusion\"}},\"i\":0}}]}'>transclusion</span>\n"},"attrs":{}}'><a
href="#cite_note-1">[1]</a></span></p>
<ol class="references" typeof="mw:Extension/references"
about="#mwt5"
data-mw='{"name":"references","attrs":{}}'>
<li about="#cite_note-1" id="cite_note-1"><span
rel="mw:referencedBy"><a
href="#cite_ref-1">↑</a></span> This is a
<b><a rel="mw:WikiLink" href="./Bolded_link"
title="Bolded
link">bolded link</a></b> and this is a <span
about="#mwt3"
typeof="mw:Transclusion"
data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}'>transclusion</span>
</li>
</ol>
*New HTML**
*--------
<p>A <span about="#mwt2" class="reference"
id="cite_ref-1"
rel="dc:references" typeof="mw:Extension/ref"
data-mw='{"name":"ref","body":{"id":
"mw-reference-text-cite_note-1"},"attrs":{}}'><a
href="#cite_note-1">[1]</a></span></p>
<ol class="references" typeof="mw:Extension/references"
about="#mwt5"
data-mw='{"name":"references","attrs":{}}'>
<li about="#cite_note-1" id="cite_note-1"><span
rel="mw:referencedBy"><a
href="#cite_ref-1">↑</a></span> <span
id="mw-reference-text-cite_note-1" class="mw-reference-text">This
is a
<b><a rel="mw:WikiLink" href="./Bolded_link"
title="Bolded
link">bolded link</a></b> and this is a <span
about="#mwt3"
typeof="mw:Transclusion"
data-mw='{"parts":[{"template":{"target":{"wt":"echo","href":"./Template:Echo"},"params":{"1":{"wt":"transclusion"}},"i":0}}]}'>transclusion</span>
</span>
</li>
</ol>