[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)@e[text/html]]]] と[[札付け]]された[[文書]]は
[[HTML構文]]として解釈されます [SRC[[[HTML5]]]]。
* HTML 構文における刺激的な概念
- [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]] 版)