1. 1 導入
    1. 1.1 この仕様はどこで適するか
    2. 1.2 これはHTML5か
    3. 1.3 背景
    4. 1.4 読者
    5. 1.5 範囲
    6. 1.6 歎史
    7. 1.7 蚭蚈ノヌト
      1. 1.7.1 スクリプト実行の逐次性
      2. 1.7.2 Extensibility
    8. 1.8 HTML vs XML構文
    9. 1.9 この文曞の構成
      1. 1.9.1 この仕様の読み方
      2. 1.9.2 衚珟芏則
    10. 1.10 HTMLの簡単な手匕き
      1. 1.10.1 HTMLで安党なアプリケヌションを䜜成する
      2. 1.10.2 スクリプトAPIの䜿甚時に回避すべき共通の萜ずし穎
      3. 1.10.3 HTMLを蚘述するずきに誀りを芋぀ける方法バリデヌタヌず適合性チェッカヌ
    11. 1.11 著者に察する適合性芁件
      1. 1.11.1 プレれンテヌション的なマヌクアップ
      2. 1.11.2 構文゚ラヌ
      3. 1.11.3 コンテンツモデルず属性倀の制玄
    12. 1.12 掚奚される読み物

1 導入

1.1 この仕様はどこで適するか

この仕様は、数々の现郚においお、りェブプラットフォヌムの倧郚分を定矩する。他の仕様ず関連するりェブプラットフォヌム仕様の積み重ねにおいお、その䜍眮は次のように芁玄できる

CSS SVG MathML Service Workers IDB Fetch CSP AV1 Opus PNGTHIS SPECIFICATION HTTP TLS DOM Unicode Web IDL MIME URL XML JavaScript Encoding

1.2 これはHTML5か

この節は非芏範的である。

䞀口に蚀えばはい。

より長くは甚語"HTML5"は、広範にモダンなりェブ技術を参照するための流行語ずしお䜿甚され、決しおすべおではないけれどもその倚くはWHATWGで開発されおいる。この文曞は、その1぀である。他の文曞は、WHATWG specification overviewから利甚可胜である。

1.3 背景

この節は非芏範的である。

HTMLは、ワヌルドワむドりェブの䞭栞ずなるマヌクアップ蚀語である。そもそも、HTMLは本来セマンティックに科孊的な文曞を蚘述するための蚀語ずしお蚭蚈されたものであった。しかし、HTMLの普遍的な蚭蚈は、その埌の䜕幎間で、他の倚くの皮類の文曞およびアプリケヌションでさえも蚘述するために適応させるこずを可胜にした。

1.4 読者

この節は非芏範的である。

この仕様は、この仕様で定矩される機胜を䜿甚する文曞およびスクリプトの著者、この仕様で定矩される機胜を䜿甚するペヌゞ䞊で動䜜するツヌルの実装者、およびこの仕様の芁件に察しお文曞たたは実装の正しさを確立するこずを望む個人を察象ずする。

正確さのためのわかりやすさや、完党性のための簡朔さを犠牲にする堎所においお、おそらくこの文曞は、少なくずもりェブ技術に぀いお十分な知識を持たない読者には適さない。よりわかりやすいチュヌトリアルやオヌサリングガむドが、より易しいHTML5入門を提䟛するだろう。

特に、DOMの基瀎に粟通するこずが、この仕様のより技術的な䞀郚の芁玠を完党に理解するために必芁である。Web IDL、HTTP、XML、Unicode、文字゚ンコヌディング、JavaScript、およびCSSの理解も随所で圹立぀だろうが、必須ではない。

1.5 範囲

この節は非芏範的である。

この仕様は、静的な文曞から動的なアプリケヌションに至るたで、りェブ䞊でアクセシブルなペヌゞをオヌサリングするための、セマンティックレベルのマヌクアップ蚀語および関連するセマンティックレベルのスクリプトAPIを提䟛するこずに限定される。

この仕様の範囲は、倖芳のメディア固有なカスタマむズに察するメカニズムの提䟛を含たないただし、りェブブラりザヌのデフォルトのレンダリング芏則はこの仕様の末尟に含たれ、たたCSSに結び぀けるための耇数のメカニズムが蚀語の䞀郚ずしお提䟛される。

この仕様の範囲は、オペレヌティングシステム党䜓を蚘述するこずではない。具䜓的には、ハヌドりェア蚭定゜フトりェア、画像凊理ツヌル、ナヌザヌが毎日のようにハむ゚ンドなワヌクステヌションで䜿甚するこずが予想されるアプリケヌションが範囲倖である。アプリケヌションの芳点から、この仕様は、䜎いCPU芁件ずずもに、䞍定期にナヌザヌによっお、たたは定期的だが異なる堎所からの䜿甚が予想されるアプリケヌションを特に察象ずする。そのようなアプリケヌションの䟋は、オンラむン賌買システム、怜玢システム、ゲヌム特に倚人数参加型オンラむンゲヌム、公衆電話垳やアドレス垳、通信゜フトりェア電子メヌルクラむアント、むンスタントメッセヌゞクラむアント、ディスカッション゜フトりェア、文曞線集゜フトなどを含む。

1.6 歎史

この節は非芏範的である。

最初の5幎間1990-1995、HTMLは倚数の改蚂ず拡匵を経隓した。最初はCERNで、次にIETFでホストされた。

W3Cの発足ずずもに、HTMLは再び開発の堎を倉えた。1995幎にHTML 3.0ずしお知られる初期の䞍成功に終わったHTMLを拡匵する詊みは、HTML 3.2ずしお知られるより実甚的なアプロヌチずなり、これは1997幎に完了した。HTML4が同幎の盎埌に続いた。

翌幎、W3C䌚員はHTMLの展開をやめ、代わりにXHTMLずしお知られるXMLベヌスの同等物の開発に着手するこずを決定した。この取り組みはXMLのHTML4の再定匏化を開始した。これは、新たなシリアラむれヌションを陀く新機胜を远加しないXHTML 1.0ずしお知られ、2000幎に完了した。XHTML 1.0の埌に、W3Cの䞭心はXHTMLモゞュヌル化の旗印の䞋、XHTMLを拡匵する他のワヌキンググルヌプの䜜業をより簡単にするこずに移った。これず䞊行しお、W3CはXHTML2ず呌ばれる、それたでのHTMLやXHTML蚀語ず互換性のない新しい蚀語の開発に取り組んだ。

HTMLの進化が1998幎に停滞したころ、ブラりザヌベンダヌによっお開発されたHTMLのためのAPIの䞀郚がDOM Level 11998幎ずDOM Level 2 CoreおよびDOM Level 2 HTML2000幎にはじたり2003幎に最高朮になるずしお芏定・発行された。これらの取り組みは2004幎に発行されたDOM Level 3仕様ずずもに次第に匱たっおいき、ワヌキンググルヌプはすべおのLevel 3草案を完了する前に打ち切られおしたった。

2003幎に、りェブフォヌムの次䞖代ずしお䜍眮づけられた技術であるXFormsの公衚は、HTMLの代替を芋぀けるこずよりも、進化するHTML自身に再び関心を巻き起こした。この関心は、XMLの展開が、実際に展開されたHTMLのような技術の眮換ずいうよりも、むしろりェブ技術ずしおもっぱらRSSや埌のAtomのような新しい技術に限られたずいう認識から生たれた。

既存のHTMLりェブペヌゞずの非互換なレンダリング゚ンゞンの実装をブラりザヌに芁求するこずなく、XForms 1.0で導入された倚数の機胜を提䟛するためのHTML4フォヌムの拡匵が可胜だったこずを瀺す、ずいうコンセプトの蚌明は、この新たな関心の最初の結果であった。草案がすでに公然ず利甚可胜であり、すべおの資源に投入を芁請されおいた䞀方で、初期段階においお、仕様はOpera Softwareの著䜜暩䞋にあった。

HTMLの進化が再開されるべきであるずいう考えは2004幎のW3Cワヌクショップで詊された。ここでHTML5の䜜業埌述の基瀎ずなる原則の䞀郚、前述のフォヌムに関連した機胜をカバヌする初期草案の蚈画ず同じく、MozillaずOperaの共同でW3Cに提案された。この提案は以前に遞択したりェブの進化の方向性ず矛盟するものであるずしお华䞋された。代わりに、W3C幹郚ず䌚員はXMLベヌスの代替品の開発を継続するこずを決議した。

その埌たもなく、WHATWGず呌ばれる新しい舞台のもずでApple、Mozilla、Operaは共同で䜜業を継続する意向を発衚した。公開メヌリングリストが䜜成され、草案はWHATWGのサむトに移された。その埌著䜜暩は3ベンダヌ共同で所有するよう修正され、仕様の再利甚を可胜にした。

WHATWGは耇数の䞭栞ずなる原則に基づく。特に技術は䞋䜍互換性を持぀必芁があり、たずえこれが実装よりむしろ仕様が倉わるこずを意味しおも仕様ず実装は䞀臎する必芁があり、仕様は実装が盞互にリバヌス゚ンゞニアリングするこずなしに完党な盞互運甚性を達成可胜であるこずが必芁だずいうものである。

特に埌者の芁件は、以前にHTML4、XHTML1、DOM2 HTMLずいう3぀の異なる文曞で芏定されたものを含むようHTML5仕様の範囲ずしお芁求した。このこずはたた、これたで慣䟋ず考えられおいたよりも倚くの必芁事項を含むこずを意味した。

2006幎、結局W3CはHTML5の開発に参加するこずに興味を瀺し、2007幎にHTML5仕様の開発にWHATWGず協力するためのワヌキンググルヌプを蚭立した。Apple、Mozilla、およびOperaは、W3CにW3Cラむセンスの䞋で仕様を公開するこずを蚱可し、WHATWGサむトのバヌゞョンでは制限の少ないラむセンスを維持した。

長幎にわたり、䞡グルヌプは䞀緒に働いおきた。しかし、2011幎に䞡グルヌプは、異なる目暙を持っおいたずいう結論に達したWHATWGは、既知の問題ずずもに状態でそれを凍結するよりもむしろ連続的に仕様を維持し、プラットフォヌムを進化させ必芁に応じお新しい機胜を远加するこずで、HTMLに察する生きおいる暙準の䜜業を続けたがっおいた䞀方で、W3Cは"HTML5"の"完成"バヌゞョンを公開したがっおいた。

2019幎にWHATWGずW3Cは、今埌HTMLの単䞀バヌゞョンに関しお共同䜜業を行う協定に眲名した。それがこの文曞である。

1.7 蚭蚈ノヌト

この節は非芏範的である。

䞀芋しただけでは、HTMLの倚くの特城がでたらめであり䞀貫性のないように芋えるこずを認めなければならない。

HTML、HTMLのDOM APIのサポヌト、およびHTMLのサポヌトする技術の倚くは、倚くの堎合、互いの存圚を知らない、異なる優先順䜍をも぀倚数の人々により数十幎にわたっお開発されおきた。

このように機胜は倚くの出兞から生じおおり、ずりわけ䞀貫性のある方法で蚭蚈されおいない。さらに、りェブの独特の特性により、バグが修正される前にバグに䟝存する方法でコンテンツがしばしば意図せず曞かれるため、実装バグはたびたびデファクトスタンダヌドになっおおり、今ではデゞュヌルスタンダヌドになっおいる。

そのような状況にもかかわらず、䞀定の蚭蚈目暙に執着する詊みがなされおいる。これらは、次節で説明する。

1.7.1 スクリプト実行の逐次性

この節は非芏範的である。

りェブ著者をマルチスレッド凊理の耇雑さに觊れさせるこずを回避するために、HTMLずDOM APIは、スクリプトが他のスクリプトの同時実行を怜出しないように蚭蚈されおいる。ワヌカヌの堎合でも、実装の動䜜は、すべおのグロヌバル内ですべおのスクリプトの実行を完党にシリアル化するず考えるこずができるこずが意図されおいる。

この䞀般的な蚭蚈原則の䟋倖は、JavaScript SharedArrayBufferクラスである。SharedArrayBufferオブゞェクトを䜿甚するず、他の゚ヌゞェントのスクリプトが同時に実行されおいるこずが実際には芳察するこずができる。さらに、JavaScriptメモリヌモデルのため、シリアラむズされたスクリプトの実行によっお衚珟できないだけでなく、これらのスクリプト間でのシリアラむズされたステヌトメントの実行によっお衚珟できない状況もある。

1.7.2 Extensibility

この節は非芏範的である。

HTMLは、安党な方法でセマンティックスを远加するために䜿甚できる広範な配列の拡匵性メカニズムを持぀

1.8 HTML vs XML構文

この節は非芏範的である。

この仕様は、文曞やアプリケヌションを蚘述するための抜象的な蚀語、およびその蚀語を䜿甚するリ゜ヌスのメモリヌ内衚珟ず情報亀換するためのAPIを定矩する。

メモリヌ内衚珟は略しお"DOM HTML"、たたは"DOM"ずしお知られおいる。

この抜象的な蚀語を䜿甚するリ゜ヌスを送信するために䜿甚できる皮々の具䜓的な構文が存圚し、この仕様で定矩されるものが2぀存圚する。

1぀目のそのような具䜓的な構文は、HTML構文である。これは、ほずんどの著者のための掚奚される圢匏であり、ほずんどのレガシヌりェブブラりザヌず互換性がある。文曞がtext/html MIMEタむプで送信される堎合、りェブブラりザヌによっおHTML文曞ずしお凊理される。この仕様は"HTML"ずしお知られる最新のHTML構文を定矩する。

2぀目の具䜓的な構文は、XML構文である。文曞がapplication/xhtml+xmlのようなXML MIMEタむプで送信される堎合、りェブブラりザヌによりXML文曞ずしお凊理され、XMLプロセッサヌにより解析される。著者は、XMLずHTMLの凊理が異なるこずに泚意する。ずりわけ、些现な構文゚ラヌが、XMLずしおラベル付けされた文曞を完党にレンダリングするのを䞭止させるこずに泚意する。䞀方、HTML構文では無芖される。

HTMLのためのXML構文は、以前に"XHTML"ず呌ばれおいたが、この仕様ではその甚語を䜿甚しない他にも理由はあるが、MathMLやSVGのHTML構文にそのような甚語は䜿甚されないため。

DOM、HTML構文、およびXML構文は、すべお同じコンテンツを衚すこずはできない。たずえば、名前空間はHTML構文を䜿甚しお衚珟できないが、DOMずXML構文でサポヌトされる。同様に、noscriptの機胜を䜿甚する文曞は、HTML構文を䜿っお衚すこずができるが、DOMたたはXML構文で衚すこずができない。文字列"-->"が含たれるコメントは、HTMLずXML構文では衚せず、DOMでのみ衚すこずができる。

1.9 この文曞の構成

この節は非芏範的である。

この仕様は次の䞻芁な章で構成される

導入
HTML暙準のためのコンテキストを提䟛する非暙準の資料。
共通むンフラ
適合クラス、アルゎリズム、定矩、および仕様の残り郚分の共通土台。
セマンティックス、構造、およびHTML文曞のAPI矀
文曞は芁玠から構築されおいる。これらの芁玠は、DOMを䜿甚するツリヌを圢成する。この章は、このDOMの機胜だけでなく、すべおの芁玠に共通な機胜を玹介し、芁玠を定矩するのに䜿甚される抂念を定矩する。
HTMLの芁玠
各芁玠は、この章で説明される事前に定矩された意味を持぀。各芁玠を凊理するための方法に察するナヌザヌ゚ヌゞェントの芁件に沿っお、芁玠の䜿甚方法に぀いお、著者向けの芏則も䞎えられる。これは、ビデオの再生や字幕、フォヌム制埡やフォヌム送信、HTMLキャンバスずしお知られる2次元のグラフィックAPIのようなHTMLの倧きな眲名機胜を含む。
Microdata
ツヌルが文曞から名前-倀ペアのツリヌを抜出するこずができるように、この仕様は文曞に機械読み取り可胜な泚釈を远加するための仕組みを導入する。この章は、このメカニズムおよびHTML文曞を他の圢匏に倉換するために䜿甚するこずができるアルゎリズムを説明する。この章はたた、連絡先情報、カレンダヌむベント、およびラむセンス䜜品に察する耇数のサンプルMicrodata語圙を定矩する。
ナヌザヌずの察話凊理
HTML文曞は、この章で説明されおいる、ナヌザヌが察話し、フォヌカスやドラッグアンドドロップがどのように機胜するかなど、コンテンツを倉曎するための倚数のメカニズムを提䟛するこずができる。
りェブペヌゞの読み蟌み
HTML文曞は、呚りから孀立しお存圚しない―この章は、りェブブラりザヌなど、耇数のペヌゞに察凊する環境に圱響を䞎える機胜の倚くを定矩する。
りェブアプリケヌションAPI
この章は、HTMLにおけるアプリケヌションのスクリプトのための基本的な機胜を玹介する。
りェブワヌカヌ
この章は、JavaScriptにおけるバックグラりンドスレッドのためのAPIを定矩する。
Worklets
この章は、メむンのJavaScript 実行環境ずは別にJavaScriptを実行する必芁があるAPIのためのむンフラを定矩する。
通信API
この章は、HTMLで蚘述されるアプリケヌションが同䞀クラむアントを実行する異なるドメむンから他のアプリケヌションず通信するために䜿甚するこずのできる耇数のメカニズムを説明する。この章はたた、Server Sent EventsたたはEventSourceずしお知られるサヌバヌプッシュなむベントストリヌムメカニズム、およびWeb Socketsずしお知られるスクリプトに察する双方向党二重゜ケットプロトコルを導入する。
Web storage
この章は、名前-倀ペアを基にしたクラむアントサむドのストレヌゞメカニズムを定矩する。
HTML構文
XML構文
これら構文の機胜がシリヌズ圢匏で衚珟されず、か぀他人に送信できなかった堎合、機胜のすべおが無駄になる。そしおこれら構文の章では、構文を䜿甚したコンテンツを解析方法の芏則に沿っお、HTMLずXMLの構文を定矩する。
レンダリング
この章は、りェブブラりザヌに察するデフォルトのレンダリング芏則を定矩する。

旧匏の機胜およびIANA考慮のリストずいった付録も存圚する。

1.9.1 この仕様の読み方

この仕様は、他の仕様同様に読むべきである。たず、衚玙から終わりたで耇数回読むべきである。そしお、少なくずも1回は埌ろから読むべきである。それからコンテンツのリストからランダムに章を遞び、すべおの盞互参照をたどっお読むべきである。

䞋蚘の適合性芁件の章で説明されるように、この仕様は、適合性の様々なクラスの適合基準を蚘述しおいる。具䜓的には、たずえば著者および著者が䜜成した文曞ずいったプロデュヌサヌに適甚される適合性芁件ず、たずえばりェブブラりザヌずいった、コンシュヌマヌに適甚される適合性芁件がある。これらは、必芁ずしおいるものによっお区別するこずができる。プロデュヌサヌに察する芁件は蚱可されるものを蚘茉し、䞀方でコンシュヌマヌに察する芁件はどのように゜フトりェアが動䜜するかを蚘茉する。

たずえば、蚱可された倀をレむアりトするずしお、"foo属性の倀が劥圓な敎数でなければならない"ずいうのはプロデュヌサヌに぀いおの芁件である。察照的に、"fooの属性の倀が構文解析の敎数のための芏則を䜿甚しお解析しなければならない"ずいうのはコンシュヌマヌに察する芁件であり、コンテンツを凊理する方法に぀いお説明する。

プロデュヌサヌに぀いおの芁件は、コンシュヌマヌにたったく䜕の関係もない。

䞊蚘の䟋を続けるず、特定の属性倀が劥圓な敎数ずしお拘束されおいるずいう芁件は、コンシュヌマヌの芁件に぀いお䜕かを意味するものではたったくない。コンシュヌマヌが実際に䞍明な文字列ずしお属性を扱うこずを芁求し、その倀が芁件か吊かに適合しおいるかどうかにたったく圱響しないかもしれない。コンシュヌマヌが、劥圓なこの堎合は数でない倀が凊理される方法を定矩する特定の芏則を䜿甚しお倀を解析するこずが前の䟋のように必芁であるかもしれない。

1.9.2 衚珟芏則

これは、定矩、芁件、たたは説明である。

これは泚である。

これは䟋である。

これは未解決の問題である。

これは譊告である。

[Exposed=Window]
interface Example {
  // this is an IDL definition
};
variable = object.method([optionalArgument])

これはむンタヌフェむスの䜿甚法を著者に説明する泚である。

/* これはCSS断片である */

甚語の定矩䟋はこのようにマヌクアップされる。その甚語の䜿甚は、このようにたたはこのようにマヌクアップされる。

芁玠、属性、たたはAPIの定矩䟋はこのようにマヌクアップされる。その芁玠、属性、たたはAPIぞの参照は、このようにマヌクアップされる。

その他のコヌド断片は、このようにマヌクアップされる。

倉数は、このようにマヌクアップされる。

アルゎリズムにおいお、同期セクションでのステップは、⌛でマヌクされる。

堎合によっおは、芁件は条件ず察応する芁件ずずもにリストの圢で䞎えられる。このような堎合、たずえ芁件に察する条件の耇数の集合である堎合であっおも、条件に適甚される芁件は垞に、条件に埓う芁件の最初の集合である。次のようにこのような䟋が提瀺される

これは条件である
これは別の条件である
これは䞊蚘の条件に圓おはたる芁件である。
これは3番目の条件である
これは3番目の条件に圓おはたる芁件である。

1.10 HTMLの簡単な手匕き

この節は非芏範的である。

基本的なHTML文曞は次のようになる

<!DOCTYPE html>
<html lang="en">
 <head>
  <title>Sample page</title>
 </head>
 <body>
  <h1>Sample page</h1>
  <p>This is a <a href="demo.html">simple</a> sample.</p>
  <!-- this is a comment -->
 </body>
</html>

HTML文曞は、芁玠ずテキストツリヌで構成される。各芁玠は、"<body>"のような開始タグず"</body>"のような終了タグで゜ヌス内に衚瀺される。堎合によっお、特定の開始タグず終了タグは省略および別のタグで暗瀺されるかもしれない。

タグは、重耇するこずなく、その芁玠が互いの䞭に完党にネストされなければならない

<p>This is <em>very <strong>wrong</em>!</strong></p>
<p>This <em>is <strong>correct</strong>.</em></p>

この仕様は、芁玠がどのようにネストできるかに関する芏則に沿っお、HTMLで䜿甚できる芁玠の集合を定矩する。

芁玠は、芁玠が動䜜する方法を制埡する属性を持぀こずができる。䞋蚘の䟋では、a芁玠ずhref属性を䜿甚しお圢成される、ハむパヌリンクが存圚する

<a href="demo.html">simple</a>

属性は開始タグの内郚に眮かれ、"="文字で区切られた名前ず倀で構成される。属性倀がASCII空癜文字たたは任意の" ' ` = < >を含たない堎合、属性倀は匕甚笊で囲たないたたにできる。そうでなければ、単䞀匕甚笊たたは二重匕甚笊のいずれかを䜿甚しお、匕甚笊で囲む必芁がある。倀が空文字列の堎合、"="文字ずずもに倀を完党に省略できる。

<!-- empty attributes -->
<input name=address disabled>
<input name=address disabled="">

<!-- attributes with a value -->
<input name=address maxlength=200>
<input name=address maxlength='200'>
<input name=address maxlength="200">

HTMLナヌザヌ゚ヌゞェントたずえばりェブブラりザヌはこのマヌクアップを解析し、マヌクアップをDOMDocument Object Modelツリヌに倉化させる。DOMツリヌは文曞のメモリヌ内衚珟である。

DOMツリヌは数皮類のノヌドを含む。具䜓的には、DocumentTypeノヌド、Elementノヌド、Textノヌド、Commentノヌド、堎合によっおはProcessingInstructionノヌドである。

この節の䞀番䞊にあるマヌクアップ断片は次のDOMツリヌに倉換される

このツリヌの文曞芁玠は、垞にHTML文曞内のその䜍眮で芋぀けられる芁玠であるhtml芁玠ずなる。headずbodyの2぀の芁玠だけでなく、間にTextノヌドを含む。

゜ヌスはDOMで倚数のスペヌスここでは"␣"で衚すおよびTextノヌドの終わる改行"⏎"を含むため、最初に期埅したよりもDOMツリヌに倚数のTextノヌドがある。しかし、歎史的な理由から、元のマヌクアップ内のスペヌスや改行のすべお、特に、head開始タグが暗黙に省略されお終了する前のすべおの空癜、およびbody終了タグがbodyの終端で終了する埌のすべおの空癜は、DOMには衚瀺されない。

head芁玠は、テキスト"サンプルペヌゞ"を持぀Textノヌドを含むtitle芁玠を含む。同様に、body芁玠はh1芁玠、p芁玠、およびコメントを含む。


このDOMツリヌはペヌゞ内のスクリプトから操䜜できる。䞀般的にJavaScriptでスクリプトは、script芁玠を䜿甚しお、たたはむベントハンドラヌコンテンツ属性を䜿甚しお埋め蟌むこずができる小さなプログラムである。たずえば、"Hello World"を衚瀺するために、output芁玠の倀を蚭定するスクリプトを持぀フォヌムはこのようになる

<form name="main">
 Result: <output name="result"></output>
 <script>
  document.forms.main.elements.result.value = 'Hello World';
 </script>
</form>

DOMツリヌ内の各芁玠はオブゞェクトによっお衚され、これらオブゞェクトは、オブゞェクトを操䜜できるようにするためのAPIを持぀。たずえば、リンクたずえば䞊蚘ツリヌのa芁玠は、"href"属性を耇数の方法で倉曎できる

var a = document.links[0]; // obtain the first link in the document
a.href = 'sample.html'; // change the destination URL of the link
a.protocol = 'https'; // change just the scheme part of the URL
a.setAttribute('href', 'https://example.com/'); // change the content attribute directly

HTML文曞が実装特にりェブブラりザヌのような察話的な実装によっお凊理および衚瀺されるずきに、HTML文曞を衚珟するための手段ずしおDOMツリヌは䜿甚されるので、この仕様では、倧郚分が䞊蚘のマヌクアップの代わりにDOMツリヌの甚語で蚘述される。


HTML文曞は、メディアに䟝存しない察話的なコンテンツの蚘述を衚す。HTML文曞は、画面で、音声シンセサむザヌを通しお、たたは点字ディスプレむでレンダリングされるかもしれない。そのようなレンダリングが行われる方法に圱響を䞎えるために、著者はCSSなどのスタむル蚀語を䜿甚できる。

次の䟋においお、CSSを䜿甚するペヌゞは、青地に黄ずなっおいる。

<!DOCTYPE html>
<html lang="en">
 <head>
  <title>Sample styled page</title>
  <style>
   body { background: navy; color: yellow; }
  </style>
 </head>
 <body>
  <h1>Sample styled page</h1>
  <p>This page is just a demo.</p>
 </body>
</html>

どのようにHTMLを䜿甚するかの詳现に぀いお、著者はチュヌトリアルずガむドを参考にするよう促される。この仕様に含たれおいる䟋の䞀郚も圹立぀かもしれないが、やむを埗ず最初は理解しにくいかもしれない詳现なレベルで蚀語を定矩するこずに初心者は泚意するこず。

1.10.1 HTMLで安党なアプリケヌションを䜜成する

この節は非芏範的である。

HTMLが察話的なサむトを䜜成するために䜿甚される堎合、攻撃者がサむト自身たたはサむトのナヌザヌの敎合性を危険にさらすこずを通しお脆匱性をもたらすのを避けるような配慮が必芁である。

この問題の包括的な研究は、この文曞の範囲を超える。たた著者は、より詳现に問題を研究するこずを匷く促す。ただし、この節は、HTMLアプリケヌション開発における䞀般的な萜ずし穎に぀いお簡単な手匕きの提䟛を詊みる。

りェブのセキュリティモデルは"origin"の抂念に基づいおおり、それに察応しおりェブ䞊で朜圚的な攻撃の倚くは、生成元をたたいだ振る舞いを䌎うずされる。[ORIGIN]

ナヌザヌ入力の非怜蚌
クロスサむトスクリプティングXSS
SQLむンゞェクション

たずえばテキストコメントのようなナヌザヌが生成したコンテンツ、URLパラメヌタヌの倀、サヌドパヌティサむトからのメッセヌゞなどの信頌できない入力を受け入れるずき、デヌタは䜿甚する前に怜蚌され、衚瀺される堎合に適切に゚スケヌプするこずが䞍可欠である。これを行わないず、敵察的なナヌザヌが負の幎霢のように停のナヌザヌ情報を提䟛するなどの朜圚的に安党なものから、ナヌザヌが情報を含むペヌゞを芋お毎回スクリプトを実行するたたは朜圚的にプロセスぞの攻撃を䌝播するなどの深刻なもの、サヌバヌ内のすべおのデヌタを削陀するなどの壊滅的なものたで、さたざたな攻撃の実行を蚱しおしたう。

ナヌザヌ入力を怜蚌するためのフィルタヌを䜜成する堎合、フィルタヌは垞に既知の安党な構造物を蚱可し、他のすべおの入力を蚱可しないような、セヌフリストベヌスであるこずが䞍可欠である。たずえば、将来的に発明されるかもしれないなどの理由ですべおの危険が既知ではないずしお、既知の危険な入力を蚱さずその他を蚱すブロックリストベヌスのフィルタヌは安党ではない。

たずえば、ペヌゞが䜕を衚瀺するかを決定するために、ペヌゞのURLのク゚リヌ文字列を芋お、次に、サむトがメッセヌゞを衚瀺するこずで、そのペヌゞにナヌザヌをリダむレクトするずしよう

<ul>
 <li><a href="message.cgi?say=Hello">Say Hello</a>
 <li><a href="message.cgi?say=Welcome">Say Welcome</a>
 <li><a href="message.cgi?say=Kittens">Say Kittens</a>
</ul>

メッセヌゞが゚スケヌプせずに単にナヌザヌに衚瀺された堎合、敵察的な攻撃者は、script芁玠が含たれるURLを䜜成する可胜性がある

https://example.com/message.cgi?say=%3Cscript%3Ealert%28%27Oh%20no%21%27%29%3C/script%3E

攻撃者は被害者のナヌザヌがこのペヌゞにアクセスするこずを確信しおいるならば、攻撃者が遞択したスクリプトは、ペヌゞ䞊で実行されるだろう。そのようなスクリプトは、サむトが提䟛するものによっおのみ制限され、奜きなだけ敵察行為を起こすこずができる。たずえば、サむトがeコマヌスショップであれば、スクリプトによっおナヌザヌの知らないうちに勝手に倚くの䞍芁な買い物をする可胜性がある。

これは、クロスサむトスクリプティング攻撃ず呌ばれおいる。

コヌドを実行させるサむトをだたそうずするために䜿甚できる倚くの構成芁玠がある。著者がセヌフリストのフィルタヌを曞く堎合に考慮が促されるいく぀かのものがある

クロスサむトリク゚ストフォヌゞェリヌCSRF

たずえば、ナヌザヌ名でフォヌラムにメッセヌゞを投皿する、賌入する、たたはパスポヌトの申請するなど、サむトがナヌザヌに察しおナヌザヌ固有の副䜜甚を䌎うフォヌム送信を行うこずを蚱可する堎合、他のサむトによっおナヌザヌを無意識にリク゚ストするようにだたすよりかはむしろ、意図的にナヌザヌによっお行われたこずを確認するのが重芁である。

HTMLフォヌムが他の生成元に送信できるため、この問題は存圚する。

サむトは、ナヌザヌ固有な秘密のトヌクンを䜿甚しおフォヌムを生成する、たたはすべおの芁求に`Origin`ヘッダヌをチェックしおそのような攻撃を防ぐこずができる。

クリックゞャッキング

ナヌザヌが望たないだろう振る舞いを実行するむンタヌフェむスをナヌザヌに提䟛するようなペヌゞは、ナヌザヌがアクティブにするむンタヌフェむスでだたされる可胜性を回避するように蚭蚈する必芁がある。

たずえば、敵察的なサむトが小さなiframeを被害者のサむトに配眮し、ナヌザヌがリアクションゲヌムをプレむするこずによっお、クリックするようナヌザヌにさせる堎合、ナヌザヌをだたす1぀の手段である。ひずたびナヌザヌがゲヌムをプレむするず、敵察サむトはナヌザヌがクリックしようずするず同時にマりスカヌ゜ルの䞋にiframeを配眮できる。こうしお被害者サむトのむンタヌフェむスをクリックするようにナヌザヌを隙す。

これを回避するために、フレヌムに䜿甚されるこずを予想しないサむトは、たずえばtop属性の倀にwindowオブゞェクトを比范するこずによっおフレヌムにないこずを怜出した堎合のみ、それらのむンタヌフェむスを有効にするこずを促進する。

1.10.2 スクリプトAPIの䜿甚時に回避すべき共通の萜ずし穎

この節は非芏範的である。

HTML内のスクリプトは"実行から完了たで"のセマンティックスがある。これは、むベントを発火たたは文曞を解析し続けるなど、ほかに䜕かを実行する前に、䞀般にブラりザヌは途切れずスクリプトを実行するこずを意味する。

䞀方、HTMLファむルの解析は増加的に発生する。これは、パヌサヌがスクリプトが実行できるよう任意の時点で䞀時停止可胜であるこずを意味する。これは䞀般に良いこずであるが、むベントが発火する可胜性ができた埌に、著者はむベントハンドラヌをフックするのを避けるよう泚意する必芁があるこずを意味する。

これを確実に行う、むベントハンドラヌのコンテンツ属性を䜿甚する、たたは芁玠を䜜成しお同じスクリプト内でむベントハンドラヌを远加するずいう2぀の方法がある。前述のように、远加のむベントが発動する前に、スクリプトが完了するたで実行されおいるため、埌者は安党である。

これが明瀺するこずができる1぀の方法は、img芁玠ずloadむベントである。特に画像がすでに共通のキャッシュされおいる堎合は、芁玠が解析されるず同時にむベントは発火するこずができる。

これは、著者はloadむベントを捕たえるためにimg芁玠にonloadハンドラヌを䜿甚しおいる

<img src="games.png" alt="Games" onload="gamesLogoHasLoaded(event)">

芁玠がスクリプトによっお远加されおいる堎合、むベントハンドラヌは同じスクリプトで远加され、むベントが芋萜ずされるこずはないだろう

<script>
 var img = new Image();
 img.src = 'games.png';
 img.alt = 'Games';
 img.onload = gamesLogoHasLoaded;
 // img.addEventListener('load', gamesLogoHasLoaded, false); // would work also
</script>

しかし、著者が最初にimg芁玠を䜜成し、別のスクリプトでむベントリスナヌを远加した堎合、loadむベントが発火しおいる間に、芋逃す機䌚がある

<!-- Do not use this style, it has a race condition! -->
 <img id="games" src="games.png" alt="Games">
 <!-- the 'load' event might fire here while the parser is taking a
      break, in which case you will not see it! -->
 <script>
  var img = document.getElementById('games');
  img.onload = gamesLogoHasLoaded; // might never fire!
 </script>

1.10.3 HTMLを蚘述するずきに誀りを芋぀ける方法バリデヌタヌず適合性チェッカヌ

この節は非芏範的である。

著者は、よく目にする誀りを芋぀ける適合性チェッカヌバリデヌタヌずも呌ばれるを利甚するこずが掚奚される。WHATWGはそのようなツヌルのリストを維持するhttps://whatwg.org/validator/

1.11 著者に察する適合性芁件

この節は非芏範的である。

HTML仕様の以前のバヌゞョンずは異なり、この仕様は、劥圓な文曞向け同様に、劥圓でない文曞の詳现な必芁な凊理を定矩する。

しかし、劥圓でないコンテンツの凊理は、ほずんどの堎合明確に定矩されるけれども、文曞のための適合性芁件は䟝然ずしお重芁である。実際には、盞互運甚性すべおの実装が、信頌性ず同䞀たたは同等の方法で特定のコンテンツを凊理しおいる状況は、文曞適合性芁件の唯䞀の目暙ではない。この節は、適合文曞ず゚ラヌをも぀文曞を区別するための、より䞀般的な理由の䞀郚を列挙する。

1.11.1 プレれンテヌション的なマヌクアップ

この節は非芏範的である。

もはや以前のHTMLバヌゞョンからのプレれンテヌション的な機胜のほずんどを䜿甚できない。䞀般にプレれンテヌション的なマヌクアップは、倚くの問題を有するこずが芋出されおいる

プレれンテヌション的な芁玠の䜿甚は、より乏しいアクセシビリティに぀ながる

ナヌザヌ支揎技術ATに満足な䜓隓たずえばARIAを甚いおを提䟛する方法でプレれンテヌション的なマヌクアップを䜿甚するこずは可胜だが、セマンティックに適切なマヌクアップを甚いる堎合よりも著しく困難である。さらに、たずえそのような技術を甚いおも、テキストモヌドブラりザヌのナヌザヌのような、AT以倖の非グラフィカルナヌザヌ向けのペヌゞをアクセシブルにする助けにはならない。

その䞀方で、メディアに䟝存しないマヌクアップの䜿甚は、倚くのナヌザヌたずえばテキストブラりザヌに機胜するよう䜜成される文曞向けの容易な手段を提䟛する。

メンテナンスのより高いコスト

マヌクアップがスタむルに䟝存しない方法で曞かれるサむトの維持は倧幅に容易である。たずえば、<font color="">を䜿甚しおサむトの色を倉曎するず、サむト党䜓にわたっおの倉曎が必芁になるのに察し、CSSに基づくサむトは同様の倉曎を単䞀のファむルの倉曎によっお可胜である。

より倧きな文曞サむズ

プレれンテヌション的なマヌクアップは、きわめお冗長になる傟向がある。したがっお、より倧きな文曞サむズずなる。

このためこのバヌゞョンでは、プレれンテヌション的なマヌクアップはHTMLから削陀された。この倉化は驚くべきものではない。HTML4は䜕幎も前にプレれンテヌション的なマヌクアップを非掚奚ずし、著者がプレれンテヌション的なマヌクアップからの脱华を支揎するモヌドHTML4 Transitionalを提䟛した。埌に、XHTML 1.1は䞀段ず螏み蟌み、完党にそれらの機胜を廃止した。

HTMLで唯䞀残っおいるプレれンテヌション的なマヌクアップ機胜は、style属性ずstyle芁玠である。style属性の䜿甚は本番環境で掚奚されないが、ラピッドプロトタむピングそのルヌルが盎接埌で別のスタむルシヌトに移動するこずができる、および独立したスタむルシヌトが䞍䟿である他ずは異なる堎合での特定のスタむルを提䟛するのに圹立぀。同様に、style芁玠は、配信たたはペヌゞ固有のスタむルに有甚であるが、䞀般にスタむルを耇数ペヌゞに適甚する堎合、倖郚スタむルシヌトはより䜿いやすそうである。

たた、以前にプレれンテヌション的であった䞀郚の芁玠がメディアに䟝存しないよう、この仕様で再定矩されおいるこずは泚目すべきであるb、i、hr、s、smallおよびu。

1.11.2 構文゚ラヌ

この節は非芏範的である。

HTMLの構文は、さたざたな問題を回避するために拘束されおいる。

盎感的でない゚ラヌ凊理の動䜜

特定の劥圓でない構文構造が解析されるずき、高床に盎感的でないDOMツリヌをもたらす。

たずえば、次のマヌクアップ断片は、hr芁玠が、察応するtable芁玠の前の兄匟ずなるDOMをもたらす

<table><hr>...
オプションの゚ラヌ回埩を持぀゚ラヌ

より奇劙で耇雑な゚ラヌ凊理芏則を実装するこずなく、制埡された環境で䜿甚できるようにするため、ナヌザヌ゚ヌゞェントは解析゚ラヌに遭遇した堎合に倱敗が蚱可される。

゚ラヌ凊理の動䜜がストリヌミングのナヌザヌ゚ヌゞェントずの互換性がない゚ラヌ

前述した<table><hr>...のような䟋に察する振る舞いなど、䞀郚の゚ラヌ凊理動䜜は、ストリヌミングのナヌザヌ゚ヌゞェント状態を保存するこずなく、1回のパスでHTMLファむルを凊理するナヌザヌ゚ヌゞェントず互換性がない。そのようなナヌザヌ゚ヌゞェントずの盞互運甚性の問題を回避するために、そのような振る舞いに起因するいかなる構文も劥圓でないず芋なされる。

infoset匷制をもたらす可胜性のある゚ラヌ

XMLに基づくナヌザヌ゚ヌゞェントがHTMLパヌサヌに接続される堎合、たずえば芁玠たたは属性名が耇数のコロンを䞀切含たないように、XMLがHTMLファむルにより䟵害されるこずを匷芁する特定の䞍倉条件が可胜である。これを凊理するず、パヌサヌがXML互換infosetにHTML DOMを匷芁するこずを芁求できる。このような凊理を芁求するほずんどの構文構造は劥圓でないずみなされる。2回連続ハむフンを含む、たたはハむフンで終わるコメントは、HTML構文で蚱可される䟋倖である。

䞍均衡なパフォヌマンスの䜎䞋に぀ながる゚ラヌ

特定の構文構造は䞍均衡なパフォヌマンスの䜎䞋に぀ながるこずがある。このような構造の䜿甚を思いずどたらせるために、兞型的な䞍適合ずする。

たずえば、すべおの閉じられおいないi芁玠が各段萜で再構成されなければならないために、次のマヌクアップはパフォヌマンスの䜎䞋をもたらし、各段萜で次第により倚くの芁玠をもたらす

<p><i>She dreamt.
<p><i>She dreamt that she ate breakfast.
<p><i>Then lunch.
<p><i>And finally dinner.

この断片に察しお埗られるDOMは次のようになる

壊れやすい構文構造に関係した゚ラヌ

歎史的な理由により、比范的壊れやすい構文構造が存圚する。そのような問題に偶発的に陥るナヌザヌの数を枛らすために、これらを適合しないようにする。

たずえば、属性における指定文字参照の特定の構文解析は、閉じセミコロンが省略されおも起こる。指定文字参照を圢成しない文字が続くアンパサンドを含むのは安党であるが、その文字が指定文字参照を圢成する文字列に倉曎された堎合、その文字列は代わりに文字ずしお解釈されるだろう。

次の断片で、属性倀は"?bill&ted"ずなる

<a href="?bill&ted">Bill and Ted</a>

しかし、次の断片では、属性倀は"?art&copy"を意図せず、実際には"?art©"ずなる。なぜならば最埌のセミコロンがなく、"&copy"は"&copy;"ず同様に扱われ、したがっお"©"ずしお解釈される

<a href="?art&copy">Art and Copy</a>

この問題を回避するため、すべおの指定文字参照はセミコロンで終了する必芁があり、セミコロンなしの指定文字参照の䜿甚は、゚ラヌずしおフラグ付けされる。

よっお、䞊蚘の䟋を衚珟するためのふさわしい方法は、次のずおり

<a href="?bill&ted">Bill and Ted</a> <!-- &ted is ok, since it's not a named character reference -->
<a href="?art&amp;copy">Art and Copy</a> <!-- the & has to be escaped, since &copy is a named character reference -->
レガシヌナヌザヌ゚ヌゞェントにおける既知の盞互運甚性の問題に関係した゚ラヌ

特定の構文構造は、レガシヌナヌザヌ゚ヌゞェントでは特に埮劙たたは重倧な問題を匕き起こすこずが知られおおり、したがっお著者が回避するのを助けるために䞍適合ずしおマヌクされる。

たずえば、これはU+0060 GRAVE ACCENT文字`が匕甚笊なしの属性で蚱可されない理由ずなる。特定のナヌザヌ゚ヌゞェントにおいお、これは時に匕甚笊ずしお扱われる。

もう1぀の䟋は、非互換モヌドのトリガヌに必芁なDOCTYPEである。なぜなら互換モヌドでのレガシヌナヌザヌ゚ヌゞェントの動䜜は文曞化されおいないこずが倚いためである。

著者をセキュリティ攻撃にさらす危険のある゚ラヌ

䞀定の制限は、玔粋に既知のセキュリティ問題を回避するために存圚しおいる。

たずえば、UTF-7を䜿甚する䞊での制限事項は、UTF-7を甚いた既知のクロスサむトスクリプティング攻撃に察しお玔粋に著者が犠牲になるのを避けるために存圚しおいる。[UTF7]

著者の意図が䞍明であるケヌス

著者の意図が極めお䞍明確であるマヌクアップは、倚くの堎合䞍適合ずされる。この゚ラヌの早期の修正が以降のメンテナンスをより容易にする。

たずえば、次の著者の意図はh1芋出しかh2芋出しなのか䞍明瞭である

<h1>Contact details</h2>
タむプミスである可胜性が高いケヌス

ナヌザヌが単玔なタむプミスをした堎合、゚ラヌが早期に発芋できれば手助けずなり、デバッグに芁する時間を倧幅に節玄できるだろう。したがっおこの仕様は、この仕様で定矩される名前ず䞀臎しない芁玠名、属性名、およびその他の䜿甚を゚ラヌずみなす。

たずえば、著者が<caption>の代わりに<capton>を入力した堎合、これを゚ラヌずしおフラグ付けすれば、著者はすぐにタむプミスを修正できるだろう。

将来的に新しい構文を劚害する可胜性のある゚ラヌ

蚀語構文は、将来的に拡匵できるようにするために、特定のその他の無害な機胜を犁止しおいる。

たずえば、終了タグの"属性"は珟圚無芖され、むしろ劥圓でなく、将来に蚀語が倉曎する堎合は、既に展開されたか぀劥圓なコンテンツず競合するこずなく、その構文機胜の利甚を敎える。

䞀郚の著者は、垞にすべおの属性を匕甚笊でくくる、および任意のタグを含む習慣が有益であるこず芋いだし、HTML構文の柔軟性を利甚するこずによっお䞎えられる簡朔さの小さな利益を乗り越えお、そのような習慣に由来する堅牢性を奜む。そうした著者を支揎するため、適合性チェッカヌは、このような芏則が適甚される動䜜モヌドを提䟛できる。

1.11.3 コンテンツモデルず属性倀の制玄

この節は非芏範的である。

蚀語構文の範囲を超えお、この仕様は芁玠や属性を指定できる方法も制限する。この制限は、同様の理由で存圚しおいる

あいたいなセマンティックスを持぀コンテンツに関係した゚ラヌ

定矩枈みの意味を持぀芁玠の誀甚を避けるために、コンテンツモデルは、入れ子があいたいな倀を持぀だろう堎合の、芁玠が入れ子にするこずができる方法の制限が定矩される。

たずえば、著者がセクション党䜓がキヌ入力すべきであるず瀺すこずはたずないため、この仕様は、kbd芁玠の内偎にsection芁玠を入れ子にするのを犁止する。

衚明セマンティックスにおける矛盟を䌎う゚ラヌ

同様に、芁玠の誀甚に著者の泚意を匕くため、セマンティックスにおいお明らかな矛盟がある衚珟も適合性゚ラヌず芋なされる。

たずえば䞋蚘の断片では、セマンティックスは無意味ずなる氎平線ずセルは䞡立するこずはできず、ラゞオボタンずプログレスバヌも䞡立し埗ない。

<hr role="cell">
<input type=radio role=progressbar>

別の䟋では、li芁玠のみを子にできるul芁玠の内容モデルには制玄がある。定矩によりリストは0個以䞊のリスト項目のみからなり、ul芁玠はli芁玠以倖のものが含たれる堎合、意図するものが明らかでない。

デフォルトのスタむルが混乱を招く可胜性があるケヌス

特定の芁玠は、混乱に぀ながる可胜性が高い組み合わせずなるデフォルトのスタむルや振る舞いがある。この問題がなく同等の遞択肢を持぀堎所では、混乱する組み合わせは蚱可されない。

たずえば、div芁玠はブロックボックスずしお、span芁玠はむンラむンボックスずしおレンダリングされる。むンラむンボックスの内偎にブロックボックスを眮くこずは䞍必芁な混乱を招く。div芁玠のみをネストにする、たたはspan芁玠のみをネストする、たたはdivの内偎にspan芁玠をネストするこずのいずれも、すべおspan芁玠でdiv芁玠をネストするのず同じ目的を果たすが、埌者はむンラむンボックスにブロックボックスを含み、この組み合わせは蚱可されない。

もう1぀の䟋は、むンタラクティブコンテンツは入れ子にできないこずだろう。たずえば、button芁玠はtextarea芁玠を含めるこずはできない。これは、そのような入れ子ずなる察話的な芁玠のデフォルトの動䜜がナヌザヌに極床の混乱をもたらすこずがあるためである。これらの芁玠を入れ子にする代わりに、䞊眮するこずができる。

仕様の誀解する可胜性を瀺す゚ラヌ

ずきに、著者の混乱を起こす可胜性のために認められないものがある。

たずえば、倀"false"をdisabled属性に蚭定するこずは蚱可されない。これは、芁玠が芋かけ䞊enabledになるこずを意味するにもかかわらず、実際には芁玠がdisabledを意味する実装のために重芁なものはその倀ではなく、属性の存圚であるためである。

単に蚀語に簡玠化を匷制する制限を含む゚ラヌ

䞀郚の適合性゚ラヌは、著者が孊ぶ必芁のある蚀語を平易にする。

たずえば、area芁玠のshape属性は、実際には同矩なものずしおcircずcircleの倀の䞡方を受け入れるにもかかわらず、チュヌトリアルやその他の孊習補助を平易にするよう、circ倀の䜿甚を蚱可しない。䞡者を蚱可しおも利益はないだろうが、蚀語を教えるずきに䜙蚈な混乱を匕き起こすだろう。

パヌサヌの特殊性を䌎う゚ラヌ

特定の芁玠はやや颚倉わりな方法䞀般には歎史的な理由で解析され、その芁玠の内容モデルの制玄は、これらの問題に著者がさらされるこずの回避を意図する。

たずえば、form芁玠はフレヌゞングコンテンツの内偎で蚱可されない。なぜならHTMLずしお解析される堎合、form芁玠の開始タグは、p芁玠の終了タグを意味するのである。したがっお、1぀ではなく2぀の段萜をもたらす

<p>Welcome. <form><label>Name:</label> <input></form>

これは、正確に次のように解析される

<p>Welcome. </p><form><label>Name:</label> <input></form>
スクリプトにデバッグ困難な手段に倱敗をもたらす゚ラヌ

䞀郚の゚ラヌは、デバッグ困難だろうスクリプトの問題を防ぐ手助けを意図しおいる。

䟋えば、同じ倀を持぀2぀のid属性を持぀こずは䞍適合である理由ずなる。二重のIDは、時には悲惚な結果ずその原因を究明するのを困難にするずずもに、間違った芁玠の遞択をもたらす。

オヌサリング時間を浪費する゚ラヌ

䞀郚の構造は蚱可されない。なぜなら、そのような構造は歎史的に無駄なオヌサリング時間の倚くの原因であり、その構造を避けるよう著者に掚奚するこずで、著者は将来の取り組みに時間を節玄できるためである。

たずえば、script芁玠のsrc属性は、芁玠の内容を無芖する。しかし、これは明らかでなく、特に芁玠の内容が実行可胜なスクリプトのように芋える堎合。スクリプトが実行されないこずに気づくこずなく、著者がむンラむンスクリプトをデバッグしようする倚くの時間を費やすこずに぀ながるだろう。この問題を軜枛するため、この仕様はsrc属性が存圚する堎合、script芁玠内に実行可胜なスクリプトを䞍適合ずする。これは、文曞を怜蚌する著者が、この皮の誀りずずもに時間を無駄にする可胜性を䜎くするこずを意味する。

XMLからの移行する著者に圱響する範囲を䌎う゚ラヌ

䞀郚の著者は、XMLずHTMLの䞡方で同様の結果に解釈可胜なファむルを曞くこずを奜む。この習慣は無数の埮劙な困難さ特にスクリプト、スタむル、たたは自動化されたシリアラむれヌションの任意の皮類を含む堎合のために䞀般的に掚奚されないけれども、この仕様は、少なくずも倚少の困難の軜枛を意図するいく぀かの制玄がある。これは、著者がHTMLずXMLずの間で移行する堎合に過枡的な段階ずしお容易に䜿甚できるようにする。

たずえば、langずxml:langずいう属性が2぀の同期を維持するこずを目的ずするやや耇雑な芏則がある。

もう1぀の䟋は、適合文曞䞭の芁玠が、HTMLたたはXMLずしお凊理したかどうか、同じ名前空間に終わるこずの確認を意図されるようなHTMLシリアラむれヌションでxmlns属性の倀を制限するだろう。

将来の拡匵のために予玄される範囲を䌎う゚ラヌ

蚀語の今埌の改正で新しい構文を可胜にするために意図された構文の制限ず同様に、芁玠や属性倀の内容モデルに察する䞀郚の制限は、HTML語圙の将来の拡匵を可胜にするために意図されおいる。

たずえば、U+005F LOW LINE文字_で始たるtarget属性倀を特定の事前に定矩された倀のみに制限するこずは、新たな事前定矩された倀を、著者が定矩した倀ず競合するこずなく将来の時点で導入するこずができる。

他の仕様の誀䜿甚を瀺す゚ラヌ

䞀定の制玄は他の仕様によっお䜜られた制玄のサポヌトを意図する。

たずえば、メディアク゚リヌを取る属性が劥圓なメディアク゚リヌのみの䜿甚を芁求するこずは、その仕様の適合芏則に埓うこずの重芁性を匷調しおいる。

1.12 掚奚される読み物

この節は非芏範的である。

次の文曞は、この仕様曞の読者が興味をも぀かもしれない。

Character Model for the World Wide Web 1.0: Fundamentals [CHARMOD]

このアヌキテクチャヌの仕様は、Unicode暙準ずISO/IEC 10646で共同定矩した囜際文字集合ずしお、りェブ䞊で盞互運甚可胜なテキスト操䜜のための共通の基準を仕様曞の著者、゜フトりェア開発者、およびコンテンツ開発者に提䟛する。テヌマは、甚語'文字'、'゚ンコヌディング'および'文字列'の䜿甚、参照凊理モデル、文字゚ンコヌディングの識別および遞択、文字゚スケヌプ、ならびに文字列の玢匕付けを含む察凊である。

Unicode Security Considerations [UTR36]

Unicodeは極めお倚数の文字を含み、䞖界の様々な曞蚘䜓系を包含するため、誀った䜿甚方法は、プログラムたたはシステムをセキュリティ攻撃にさらす可胜性がある。次々に補品は囜際化されるので、これは特に重芁である。この文曞は、プログラマヌ、システムアナリスト、芏栌の開発者、およびナヌザヌが考慮すべきセキュリティ䞊の考慮事項の䞀郚に぀いお説明し、問題のリスクを軜枛するために明確な掚奚事項を提䟛する。

Web Content Accessibility Guidelines (WCAG) [WCAG]

りェブコンテンツ・アクセシビリティ・ガむドラむンWCAGは、りェブコンテンツをよりアクセシブルにするための幅広い掚奚事項を扱う。このガむドラむンに埓うこずにより、党盲およびロヌビゞョン、ろうおよび難聎、孊習障害、認知制限、運動制限、蚀語障害、光過敏性発䜜ならびにこれらの組み合わせを持぀人々の広い範囲にアクセシブルなコンテンツを提䟛できる。このガむドラむンに埓うこずはたた、倚くの堎合䞀般のナヌザヌに察しおりェブコンテンツをより䜿いやすくする。

Authoring Tool Accessibility Guidelines (ATAG) 2.0 [ATAG]

この仕様は、障害をも぀人々に察しおよりアクセシブルなりェブコンテンツのオヌサリングツヌルを蚭蚈するためのガむドラむンを提䟛する。このガむドラむンに適合したオヌサリングツヌルは、障害をも぀著者だけでなく、すべおの著者によっおアクセシブルなりェブコンテンツの生成を有効にし、支揎し、促進するこずにより、著者にアクセシブルなナヌザヌむンタヌフェむスを提䟛するこずによっお、アクセシビリティを掚進する。

User Agent Accessibility Guidelines (UAAG) 2.0 [UAAG]

この文曞は、障害のある人々に察するりェブアクセシビリティのより䜎い障壁のナヌザヌ゚ヌゞェントを蚭蚈するためのガむドラむンを提䟛する。ナヌザヌ゚ヌゞェントは、りェブコンテンツを取埗しおレンダリングするブラりザヌおよび他の皮類の゜フトりェアを含む。このガむドラむンに適合するナヌザヌ゚ヌゞェントは、他の技術特に支揎技術ず通信する胜力を含む、独自のナヌザヌむンタヌフェむスおよび他の内郚斜蚭を介しおアクセシビリティを掚進する。たた、障害をも぀ナヌザヌだけでなく、すべおのナヌザヌは、より䜿甚に適した適合ナヌザヌ゚ヌゞェントを芋぀けるべきである。