Page MenuHomePhabricator

Discourage, deprecate and stop using Xml methods for building HTML markup
Open, Needs TriagePublic

Description

MediaWiki has two PHP classes that can be used for building HTML markup for browsers: Html, and Xml. Some methods are very similar between the two (e.g. Html::element( 'x', [ 'y' => 1 ], 'z' ) === Xml::element( 'x', [ 'y' => 1 ], 'z' )), though the Xml versions sometimes have fewer features (e.g. only Html supports 'class' => [ 'foo', 'bar' ] attribute array values). Some methods are only available in one of the two classes, possibly for no good reason other than historical accident. (For instance, fieldset() is only in Xml, while hidden() is only in Html.)

This is generally confusing, no longer necessary since the HTML5ication of MediaWiki years ago, and occasionally leads to bugs (e.g. T341566). We should stop using the Xml methods that are used for building HTML (as opposed to the ones for general-purpose XML, for example in Special:Export or RSS, which of course should be kept). Some methods may need to be copied to Html if they’re not available there yet.

A codesearch for Xml:: reveals 218 files across 38 repos.

functionSearchSoft-deprecatedHard-deprecatedRemoved
monthSelectorπŸ”Žβœ…βœ…βœ…
dateMenuπŸ”Žβœ…βœ…βœ…
languageSelectorπŸ”Žβœ…βœ…βœ…
spanπŸ”Žβœ…βœ…βœ…
wrapClassπŸ”Žβœ…βœ…βœ…
inputπŸ”Žβœ…βœ…βœ…
passwordπŸ”Žβœ…βœ…βœ…
attribπŸ”Žβœ…β€”β€”
checkπŸ”Žβœ…βœ…βœ…
radioπŸ”Žβœ…βœ…βœ…
labelπŸ”Žβœ…β€”β€”
inputLabelπŸ”Žβœ…βœ…βœ…
inputLabelSepπŸ”Žβœ…βœ…βœ…
checkLabelπŸ”Žβœ…βœ…βœ…
radioLabelπŸ”Žβœ…βœ…βœ…
submitButtonπŸ”Žβœ…βœ…βœ…
optionπŸ”Žβœ…β€”β€”
listDropdownπŸ”Žβœ…β€”β€”
listDropdownOptionsπŸ”Žβœ…β€”β€”
listDropdownOptionsOouiπŸ”Žβœ…β€”β€”
fieldsetπŸ”Žβœ…β€”β€”
textareaπŸ”Žβœ…βœ…βœ…
encodeJsVarπŸ”Žβœ…βœ…βœ…
encodeJsCallπŸ”Žβœ…βœ…βœ…
buildFormπŸ”Žβœ…β€”β€”
buildTableπŸ”Žβœ…βœ…βœ…
buildTableRowπŸ”Žβœ…βœ…βœ…

Details

Related Changes in Gerrit:
SubjectRepoBranchLines +/-
mediawiki/coremaster+16 -3
mediawiki/coremaster+21 -714
mediawiki/extensions/ArticleFeedbackv5master+3 -1
mediawiki/extensions/CentralNoticewmf/1.45.0-wmf.1+46 -9
mediawiki/extensions/CentralNoticewmf_deploy+0 -0
mediawiki/coreREL1_44+5 -1
mediawiki/coreREL1_44+4 -1
mediawiki/coremaster+5 -1
mediawiki/coremaster+4 -1
mediawiki/extensions/Quizmaster+3 -6
mediawiki/extensions/ConfirmAccountmaster+17 -7
mediawiki/extensions/BatchUserRightsmaster+2 -1
mediawiki/extensions/CheckUsermaster+1 -2
mediawiki/extensions/CharInsertmaster+2 -2
mediawiki/extensions/ImageMapmaster+4 -4
mediawiki/extensions/ExtensionDistributormaster+8 -9
mediawiki/extensions/OAuthmaster+4 -6
mediawiki/extensions/ConfirmEditmaster+1 -2
mediawiki/extensions/ProofreadPagemaster+2 -2
mediawiki/extensions/EventLoggingmaster+2 -3
mediawiki/extensions/timelinemaster+3 -4
mediawiki/extensions/CentralNoticemaster+2 -3
mediawiki/extensions/TemplateSandboxmaster+4 -5
mediawiki/extensions/CentralNoticemaster+14 -10
mediawiki/extensions/CentralAuthmaster+8 -10
mediawiki/extensions/CentralAuthmaster+17 -12
mediawiki/extensions/LiquidThreadsmaster+3 -3
mediawiki/coremaster+4 -1
mediawiki/extensions/CentralAuthmaster+3 -4
mediawiki/coremaster+11 -2
mediawiki/extensions/LiquidThreadsmaster+4 -4
mediawiki/coremaster+6 -1
mediawiki/coremaster+9 -1
mediawiki/extensions/CentralAuthmaster+37 -37
mediawiki/extensions/CentralAuthmaster+16 -16
mediawiki/extensions/CentralAuthmaster+15 -5
mediawiki/extensions/CentralAuthmaster+4 -4
mediawiki/coremaster+26 -8
mediawiki/extensions/CentralNoticewmf_deploy+0 -0
mediawiki/extensions/UserGroupsmaster+22 -27
mediawiki/extensions/CentralNoticemaster+68 -67
mediawiki/extensions/PDFEmbedmaster+3 -2
mediawiki/extensions/SubpageNavigationmaster+17 -15
mediawiki/extensions/MassEditRegexmaster+41 -65
mediawiki/extensions/WikimediaIncubatormaster+24 -23
mediawiki/extensions/BibManagermaster+11 -10
mediawiki/extensions/InputBoxmaster+28 -29
mediawiki/extensions/CentralNoticemaster+377 -362
mediawiki/extensions/SiteMatrixmaster+9 -10
mediawiki/extensions/CentralNoticemaster+121 -112
mediawiki/extensions/Scribuntomaster+1 -2
mediawiki/extensions/Mathmaster+24 -28
mediawiki/extensions/CirrusSearchmaster+1 -2
mediawiki/extensions/Echomaster+16 -21
mediawiki/extensions/Collectionmaster+22 -22
mediawiki/extensions/Nukemaster+3 -3
mediawiki/coremaster+34 -3
Show related patches Customize query in gerrit

Related Objects

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes

Change #1140982 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralAuth@master] Replace uses of deprecated Xml::textarea

https://gerrit.wikimedia.org/r/1140982

Change #1140983 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralAuth@master] Replace uses of deprecated Xml::submitButton

https://gerrit.wikimedia.org/r/1140983

Change #1140984 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralAuth@master] Replace uses of Xml::openElement etc. with Html

https://gerrit.wikimedia.org/r/1140984

Change #1140985 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralAuth@master] Replace uses of Xml::element with Html

https://gerrit.wikimedia.org/r/1140985

Change #1140986 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralAuth@master] Replace uses of deprecated Xml::check

https://gerrit.wikimedia.org/r/1140986

Change #1140987 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralAuth@master] Replace uses of deprecated Xml::input

https://gerrit.wikimedia.org/r/1140987

Change #1140988 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralAuth@master] Replace uses of Xml::tags with Html

https://gerrit.wikimedia.org/r/1140988

Change #1140982 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@master] Replace uses of deprecated Xml::textarea

https://gerrit.wikimedia.org/r/1140982

Change #1140983 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@master] Replace uses of deprecated Xml::submitButton

https://gerrit.wikimedia.org/r/1140983

Change #1140984 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@master] Replace uses of Xml::openElement etc. with Html

https://gerrit.wikimedia.org/r/1140984

Change #1140985 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@master] Replace uses of Xml::element with Html

https://gerrit.wikimedia.org/r/1140985

Change #1141076 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/LiquidThreads@master] Replace uses of deprecated Xml::submitButton

https://gerrit.wikimedia.org/r/1141076

Change #1141078 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/LiquidThreads@master] Replace use of deprecated Xml::input

https://gerrit.wikimedia.org/r/1141078

Change #1141079 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/Quiz@master] Replace use of deprecated Xml::input()

https://gerrit.wikimedia.org/r/1141079

Change #1141080 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralNotice@master] Replace uses of deprecated Xml::input()

https://gerrit.wikimedia.org/r/1141080

Change #1141081 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Hard-deprecate Xml::textarea(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141081

Change #1141082 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Hard-deprecate Xml::submitButton(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141082

Change #1141083 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Hard-deprecate Xml::check(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141083

Change #1141084 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Hard-deprecate Xml::input(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141084

Change #1141085 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralNotice@master] Replace use of deprecated Xml::radio()

https://gerrit.wikimedia.org/r/1141085

Change #1141086 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Hard-deprecate Xml::input(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141086

Change #1141087 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] [WIP] Hard-deprecate Xml::label(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141087

Change #1141076 merged by jenkins-bot:

[mediawiki/extensions/LiquidThreads@master] Replace uses of deprecated Xml::submitButton

https://gerrit.wikimedia.org/r/1141076

Change #1140986 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@master] Replace uses of deprecated Xml::check

https://gerrit.wikimedia.org/r/1140986

Change #1141081 merged by jenkins-bot:

[mediawiki/core@master] Hard-deprecate Xml::textarea(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141081

Change #1141082 merged by jenkins-bot:

[mediawiki/core@master] Hard-deprecate Xml::submitButton(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141082

Change #1141083 merged by jenkins-bot:

[mediawiki/core@master] Hard-deprecate Xml::check(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141083

Change #1141078 merged by jenkins-bot:

[mediawiki/extensions/LiquidThreads@master] Replace use of deprecated Xml::input

https://gerrit.wikimedia.org/r/1141078

Change #1140987 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@master] Replace uses of deprecated Xml::input

https://gerrit.wikimedia.org/r/1140987

Change #1140988 merged by jenkins-bot:

[mediawiki/extensions/CentralAuth@master] Replace uses of Xml::tags with Html

https://gerrit.wikimedia.org/r/1140988

Change #1141080 merged by jenkins-bot:

[mediawiki/extensions/CentralNotice@master] Replace uses of deprecated Xml::input()

https://gerrit.wikimedia.org/r/1141080

Change #1142600 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/timeline@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142600

Change #1142601 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/TemplateSandbox@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142601

Change #1142602 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/ProofreadPage@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142602

Change #1142603 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/ExtensionDistributor@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142603

Change #1142604 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/ImageMap@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142604

Change #1142605 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/EventLogging@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142605

Change #1142601 merged by jenkins-bot:

[mediawiki/extensions/TemplateSandbox@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142601

Change #1142600 merged by jenkins-bot:

[mediawiki/extensions/timeline@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142600

Change #1141085 merged by jenkins-bot:

[mediawiki/extensions/CentralNotice@master] Replace use of deprecated Xml::radio()

https://gerrit.wikimedia.org/r/1141085

Change #1142608 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/ConfirmEdit@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142608

Change #1142609 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CheckUser@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142609

Change #1142610 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CharInsert@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142610

Change #1142611 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/OAuth@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142611

Change #1142605 merged by jenkins-bot:

[mediawiki/extensions/EventLogging@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142605

Change #1142602 merged by jenkins-bot:

[mediawiki/extensions/ProofreadPage@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142602

Change #1142608 merged by jenkins-bot:

[mediawiki/extensions/ConfirmEdit@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142608

Change #1142611 merged by jenkins-bot:

[mediawiki/extensions/OAuth@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142611

Change #1142604 merged by jenkins-bot:

[mediawiki/extensions/ImageMap@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142604

Change #1142603 merged by jenkins-bot:

[mediawiki/extensions/ExtensionDistributor@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142603

Change #1142610 merged by jenkins-bot:

[mediawiki/extensions/CharInsert@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142610

Change #1142609 merged by jenkins-bot:

[mediawiki/extensions/CheckUser@master] Replace use of XML class to create faux-XHTML output with the HTML class

https://gerrit.wikimedia.org/r/1142609

Change #1143607 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/ConfirmAccount@master] Replace use of deprecated Xml::radio()

https://gerrit.wikimedia.org/r/1143607

Change #1143613 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/ArticleFeedbackv5@master] Replace use of deprecated Xml::input()

https://gerrit.wikimedia.org/r/1143613

Change #1143614 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/BatchUserRights@master] Replace use of deprecated Xml::input()

https://gerrit.wikimedia.org/r/1143614

Change #1143607 merged by jenkins-bot:

[mediawiki/extensions/ConfirmAccount@master] Replace use of deprecated Xml::radio()

https://gerrit.wikimedia.org/r/1143607

Change #1141079 merged by jenkins-bot:

[mediawiki/extensions/Quiz@master] Replace use of deprecated Xml::input()

https://gerrit.wikimedia.org/r/1141079

Change #1141086 merged by jenkins-bot:

[mediawiki/core@master] Hard-deprecate Xml::radio(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141086

Change #1141084 merged by jenkins-bot:

[mediawiki/core@master] Hard-deprecate Xml::input(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1141084

Change #1143839 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@REL1_44] Hard-deprecate Xml::radio(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1143839

Change #1143840 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@REL1_44] Hard-deprecate Xml::input(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1143840

Change #1143839 merged by jenkins-bot:

[mediawiki/core@REL1_44] Hard-deprecate Xml::radio(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1143839

Change #1143840 merged by jenkins-bot:

[mediawiki/core@REL1_44] Hard-deprecate Xml::input(), now unused in Wikimedia code

https://gerrit.wikimedia.org/r/1143840

Change #1143609 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralNotice@wmf_deploy] Merge remote-tracking branch 'origin/master' into wmf_deploy

https://gerrit.wikimedia.org/r/1143609

Change #1143609 merged by jenkins-bot:

[mediawiki/extensions/CentralNotice@wmf_deploy] Merge remote-tracking branch 'origin/master' into wmf_deploy

https://gerrit.wikimedia.org/r/1143609

Change #1146631 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/extensions/CentralNotice@wmf/1.45.0-wmf.1] Merge remote-tracking branch 'origin/master' into wmf_deploy

https://gerrit.wikimedia.org/r/1146631

Change #1146631 merged by jenkins-bot:

[mediawiki/extensions/CentralNotice@wmf/1.45.0-wmf.1] Merge remote-tracking branch 'origin/master' into wmf_deploy

https://gerrit.wikimedia.org/r/1146631

Mentioned in SAL (#wikimedia-operations) [2025-05-20T20:55:02Z] <jforrester@deploy1003> Started scap sync-world: Backport for [[gerrit:1145867|TransformHandler: Return 400 for invalid titles (T394270)]], [[gerrit:1146631|Merge remote-tracking branch 'origin/master' into wmf_deploy (T341775 T373017 T393122 T394404)]], [[gerrit:1146654|Xml::input, label: Replace usage with Html::input, label (T394025)]]

Mentioned in SAL (#wikimedia-operations) [2025-05-20T20:57:41Z] <jforrester@deploy1003> mszabo, jforrester: Backport for [[gerrit:1145867|TransformHandler: Return 400 for invalid titles (T394270)]], [[gerrit:1146631|Merge remote-tracking branch 'origin/master' into wmf_deploy (T341775 T373017 T393122 T394404)]], [[gerrit:1146654|Xml::input, label: Replace usage with Html::input, label (T394025)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes c

Mentioned in SAL (#wikimedia-operations) [2025-05-20T21:06:31Z] <jforrester@deploy1003> Finished scap sync-world: Backport for [[gerrit:1145867|TransformHandler: Return 400 for invalid titles (T394270)]], [[gerrit:1146631|Merge remote-tracking branch 'origin/master' into wmf_deploy (T341775 T373017 T393122 T394404)]], [[gerrit:1146654|Xml::input, label: Replace usage with Html::input, label (T394025)]] (duration: 11m 28s)

Change #1143613 merged by Jack Phoenix:

[mediawiki/extensions/ArticleFeedbackv5@master] Replace use of deprecated Xml::input()

https://gerrit.wikimedia.org/r/1143613

Change #1196532 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Drop many deprecated static methods of Xml abused to generate Html

https://gerrit.wikimedia.org/r/1196532

Change #1196534 had a related patch set uploaded (by Jforrester; author: Jforrester):

[mediawiki/core@master] Hard-deprecate Xml::attrib(), ::buildForm(), and ::listDropdownOptionsOoui()

https://gerrit.wikimedia.org/r/1196534

Change #1196532 merged by jenkins-bot:

[mediawiki/core@master] Drop many deprecated static methods of Xml abused to generate Html

https://gerrit.wikimedia.org/r/1196532

Drop many deprecated static methods of Xml abused to generate Html

πŸŽ‰