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>