[9] [DFN[[RUBYB[HTML構文]@en[The HTML syntax]]]] は、 [[HTML]] の構文の一種で、最もよく使われているものです。 [[HTML構文]]は [[SGML]] 風の構文を持っていますが、 [[SGML]] の[[部分集合]]でも[[超集合]]でもなく、 互換性はありません。[[HTML構文]]の第5版は特に [DFN[[[HTML5]]]] と呼ばれています。 ;; [10] [[HTML構文]]に対して、 [[XML]] を構文として採用したものを [[XHTML構文]]と呼びます。 [[XHTML構文]]の第5版は特に [DFN[[[XHTML5]]]] と呼ばれています。 [[XHTML構文]]は実際にはほとんど使われていません。 [11] [[HTML5]] (構文) や [[XHTML5]] は、どちらも [[HTML5]] 仕様書で定義されています (紛らわしいですね)。 [12] また、 [[DOM]] における [CODE(DOMi)@en[[[Document]]]] には [DFN[[RUBYB[[[HTML文書]]]@en[HTML document]]]]と[[XML文書]]の2種類があります [SRC[[[HTML5]]]]。両者は、元々どちらの構文で書かれていたかとおおむね一致します。 ;; 「おおむね」なのは、 [[DOM]] 上の操作で作られた [CODE(DOMi)@en[[[Document]]]] も存在するからです。 ;; ただし、両者を特に区別せずに「[[HTML文書]]」ということもあります ([[HTML5]] 仕様書の章節名自体がそうなっています)。 * 仕様書 -[13] [[HTML5]] 仕様書 -- * 媒体型 [14] [[HTML文書]] ([[HTML構文]]で記述された[[文書]]) は、[[媒体型]] [CODE(MIME)@en[[[text/html]]]] として[[札付け]]しなければ[['''なりません''']] [SRC@en[[[HTML5]]]]。 [15] 逆に、[CODE(MIME)@en[[[text/html]]]] と[[札付け]]された[[文書]]は [[HTML構文]]として解釈されます [SRC[[[HTML5]]]]。 * HTML 構文における刺激的な概念 - [18] [[DOCTYPEスイッチ]] - [16] [[里親付け]] - [17] [[養子縁組代理店算法]] ([[AAA]]) * 歴史 ** Web Forms 2.0 HTML 構文の構文解析 [1] [[Web Forms 2.0]] は従来の [[HTML]] と [[XHTML]] の両方の構文を認めています。 この章では、 [[HTML]] 構文の[[構文解析]]について扱います。 [2] 仕様書: - [[Web Forms 2.0]] -- [CSECTION@en[2.18. Handling unexpected elements and values]] [3] '''誤り処理''' [[Web Forms 2.0]] は、 [[SGML]] で規定されない曖昧な場合にどう[[構文解析]]するか正確には規定しません。 [[利用者エージェント]]の実装者は、 既存の製品を[[逆工学]]し、適当な動作を模倣[['''するべきです''']]。 [SRC@en[WF2 2.18]] [5] [[Web Forms 2.0]] は [[HTML 4]] の拡張として定義されており、 その [[HTML 4]] が [[SGML]] に基づいているので、 >>3 のように規定されているのだと思われます。 しかし、 [[Web Forms 2.0]] の [[HTML]] [[文書]]は一般に[[妥当]]な [[SGML]] [[文書]]ではありません ([[DTD]] がないので)。 誤っている[[文書]]は >>4 のように処理するとして、 誤っていない[[文書]]をどう[[構文解析]]するのがいいのかは [[Web Forms 2.0]] は (わざと) 曖昧にしています。 ** HTML5 仕様書による構文解析算法の明確化 [8] [CITE['''['''whatwg''']''' HTML5 Parsing spec first draft ready]] ([TIME[2008-04-02 11:17:11 +09:00]] 版) * メモ [6] [CITE@en[Tag Soup: How Mac IE 5 and Safari handle ]] ([[Henri Sivonen]] 著, [CODE[2005-07-28 02:07:37 +09:00]] 版) [7] [CITE[Bug 311366 – should make custom elements able to contain blocks (
)]] ([TIME[2007-09-17 12:38:22 +09:00]] 版) [19] [CITE[IRC logs: freenode / #whatwg / 20090813]] ([TIME[2009-10-10 21:27:36 +09:00]] 版) [20] [CITE[IRC logs: freenode / #whatwg / 20100324]] ([TIME[2010-04-03 01:03:00 +09:00]] 版) [21] [CITE[Notes on HTML5 Parser History — Anne’s Weblog]] ([TIME[2010-06-03 08:06:42 +09:00]] 版) [22] [CITE['''['''webkit-dev''']''' HTML5 tokenizer landing soon]] ([TIME[2010-06-22 06:33:13 +09:00]] 版) [23] [CITE[IRC logs: freenode / #whatwg / 20100727]] ([TIME[2010-08-11 00:06:17 +09:00]] 版)