HTMLチェッカーはchecker.html5.orgを推してみたい

次の3つのチェッカーについて、

Validator.nu Living Validator
https://validator.nu/
Nu Html Checker
https://validator.w3.org/nu/
Nu Html Checker
https://checker.html5.org/

次のHTMLコードを投入して比較してみたよという話。

<!DOCTYPE html>
<html>
<head>
<title>Test</title>
</head>
<body>
<!-- dlの中のdivは現時点のHTML 5.2に規定されない -->
<dl>
 <div>
  <dt> Last modified time </dt>
  <dd> 2004-12-23T23:33Z </dd>
 </div>
 <div>
  <dt> Recommended update interval </dt>
  <dd> 60s </dd>
 </div>
</dl>
<!-- HTML Standardでtable.borderはエラー扱い。 -->
<table border="1">
<tr>
<td>a</td><td>b</td>
</tr>
</table>
</body>
</html>

端的に言えば、W3C HTML 5.1に従えば<dl>がエラーになって、HTML Standardに従えば<table>がエラーになるよね、って話。結果は次のとおり。

validator.nu validator.w3.org/nu checker.html5.org
<dl> error passed passed
<table> error warning error

validator.nuは、<dl>部分はHTML Standardに規定されているため本来であればパスしなければならないはずだが、エラー扱いとなる。一方で、執筆時点ではW3C HTML 5.2ではまだ規定されていないため文法違反となるはずだが、逆にパス扱いとなる。<table border>に関しては、HTML Standardでは違反、W3C HTMLでは許容されているのは周知のとおり。つまり、上記のHTML断片による実験結果から言えることは、

  • validator.nuはHTML StandardのHTMLチェッカーと目されているにもかかわらず(事実、HTML Standardから間接的にリンクされているのはvalidator.nuのドメインである)、仕様に追い付いていない。メンテナンスされていない可能性がある。
  • validator.w3.orgは、W3C配下のHTMLチェッカーにもかかわらず、HTML Standardに規定されているが、W3C HTMLでまだ規定されていないマークアップを許容する。これはメンテナーである@sideshowbarkerことMichael[tm] SmithのHTMLに対するスタンスを反映させている。たとえばvalidator #407のコメントがわかりやすいか。
  • checker.html5.orgは、見慣れないドメインであるが、https://github.com/validator/validator のREADEME.mdからたどることのできるものであり、validator.w3.orgと同じバックエンドでかつ@sideshowbarkerがメンテナンスしていることがわかる。validator #390のコメントはそのことを端的に表している。そして、HTML Standardに忠実なチェッカーであると今回の実験結果からは言える。


ということで、HTML Standard推しの筆者としては、validator.nuではなくchecker.html5.orgをHTMLチェッカーとして推してみたいと思う。