1. 4 HTMLの要素
    1. 4.1 文書要素
      1. 4.1.1 html要素
    2. 4.2 文書メタデータ
      1. 4.2.1 head要素
      2. 4.2.2 title要素
      3. 4.2.3 base要素
      4. 4.2.4 link要素
        1. 4.2.4.1 Processing the media attribute
        2. 4.2.4.2 Processing the type attribute
        3. 4.2.4.3 Obtaining a resource from a link element
        4. 4.2.4.4 Processing `Link` headers
        5. 4.2.4.5 Providing users with a means to follow hyperlinks created using the link element
      5. 4.2.5 meta要素
        1. 4.2.5.1 標準メタデータ名
        2. 4.2.5.2 他のメタデータ名
        3. 4.2.5.3 プラグマディレクティブ
        4. 4.2.5.4 他のプラグマディレクティブ
        5. 4.2.5.5 文書の文字エンコーディングを指定する
      6. 4.2.6 style要素
      7. 4.2.7 スタイルとスクリプトの相互作用

4 HTMLの要素

4.1 文書要素

4.1.1 html要素

カテゴリー
なし。
この要素を使用できるコンテキスト
文書の文書要素として。
複合文書で、サブ文書断片が許可される場所ならどこでも。
コンテンツモデル
head要素の後に続いてbody要素。
text/htmlにおけるタグ省略
html要素内の最初の文がコメントでない場合、html要素の開始タグは省略することができる。
html要素の直後がコメントでない場合、html要素の終了タグは省略することができる。
コンテンツ属性
グローバル属性
manifestアプリケーションキャッシュマニフェスト
DOMインターフェイス
[HTMLConstructor]
interface HTMLHtmlElement : HTMLElement {};

html要素は、HTML文書のルートを表す

著者は、文書の言語を与えるために、ルートのhtml要素にlang属性を指定することが推奨される。これは、音声合成ツールにどの発音を使用するかを決定する、翻訳ツールを使用するための規則を決定する、などの手助けを行う。

存在するならば、manifestマニフェスト属性は、文書のアプリケーションキャッシュマニフェストのアドレスを与える。属性が存在する場合、属性値は、潜在的にスペースで囲まれた妥当な空でないURLでなければならない。

manifest属性は、ウェブプラットフォームから削除されるプロセスにある、レガシーな"オフラインウェブアプリケーション"機能の一部である。(これは長年かかる長いプロセスである)。現時点でmanifest属性を使用することは強く勧められない。代わりにサービスワーカーを使用すること。[SW]

manifest属性は、文書の読み込みの初期段階でのみ効果を持つ。よって、動的に属性を変更すると、効果がない(したがって、いずれのDOM APIも、この属性に提供されない)。

アプリケーションキャッシュの選択の目的に対して、それらの要素が見られる前に属性が処理されるように、base要素は、manifest属性でURLの解析に影響を後で与えることができない。

window.applicationCache IDL属性は、オフラインのアプリケーションキャッシュ機構へのスクリプトアクセスを提供する。

次の例において、html要素は、文書言語が英語であることを宣言する。

<!DOCTYPE html>
<html lang="en">
<head>
<title>Swapping Songs</title>
</head>
<body>
<h1>Swapping Songs</h1>
<p>Tonight I swapped some of the songs I wrote with some friends, who
gave me some of the songs they wrote. I love sharing my music.</p>
</body>
</html>

4.2 文書メタデータ

4.2.1 head要素

カテゴリー
なし。
この要素を使用できるコンテキスト
html要素での最初の要素として。
コンテンツモデル
文書がiframe srcdoc文書であるか、タイトル情報がより上位プロトコルから利用可能な場合、1つより多くないtitle要素および1つより多くないbase要素である、0個以上のメタデータコンテンツ
そうでなければ、厳密に1つのtitle要素が存在しかつ1つより多くないbase要素である、1つ以上のメタデータコンテンツ
text/htmlにおけるタグ省略
要素が空である場合、またはhead要素内の最初の文が要素である場合、head要素の開始タグは省略することができる。
head要素の直前がASCII空白文字またはコメントでない場合、head要素の終了タグは省略することができる。
コンテンツ属性
グローバル属性
DOMインターフェイス
[HTMLConstructor]
interface HTMLHeadElement : HTMLElement {};

head要素は、Documentに関するメタデータの集まりを表す

head要素でのメタデータの集まりは、大きいかもしれないし、小さいかもしれない。これは非常に簡潔な例である:

<!doctype html>
<html lang=en>
 <head>
  <title>A document with a short head</title>
 </head>
 <body>
 ...

これはより大きな例である:

<!DOCTYPE HTML>
<HTML LANG="EN">
 <HEAD>
  <META CHARSET="UTF-8">
  <BASE HREF="https://www.example.com/">
  <TITLE>An application with a long head</TITLE>
  <LINK REL="STYLESHEET" HREF="default.css">
  <LINK REL="STYLESHEET ALTERNATE" HREF="big.css" TITLE="Big Text">
  <SCRIPT SRC="support.js"></SCRIPT>
  <META NAME="APPLICATION-NAME" CONTENT="Long headed application">
 </HEAD>
 <BODY>
 ...

title要素は、ほとんどの状況で必須の子であるが、上位プロトコルがタイトル情報を提供する場合、たとえばHTMLが電子メールのオーサリング形式として使用されるときの電子メールの件名において、title要素は省略できる。

4.2.2 title要素

カテゴリー
メタデータコンテンツ
この要素を使用できるコンテキスト
他のtitle要素を含まないhead要素内。
コンテンツモデル
要素内の空白文字でないテキスト
text/htmlにおけるタグ省略
どちらのタグも省略不可。
コンテンツ属性
グローバル属性
DOMインターフェイス
[HTMLConstructor]
interface HTMLTitleElement : HTMLElement {
  [CEReactions] attribute DOMString text;
};

title要素は、文書のタイトルまたは名前を表す。たとえば、ユーザーの履歴やブックマークまたは検索結果などで、文脈を無視して使用される場合でも、著者は文書を識別するタイトルを使用すべきである。文脈から取り出したときに最初の見出しが独立する必要はないので、文書のタイトルは多くの場合、最初の見出しとは異なる。

文書ごとに複数のtitle要素が存在してはならない。

タイトルがないことが合理的なDocumentの場合、title要素はおそらく必要とされない。この要素が必要とされる場合の説明については、head要素のコンテンツモデルを参照のこと。

title . text [ = value ]

要素の子テキストコンテンツを返す。

与えられた値を持つ要素の子を置換するために、設定できる。

IDL属性textは、title要素の子テキストコンテンツを返さなければならない。設定する際に、それはtextContent IDL属性と同じように振る舞わなければならない。

それらの同じページ上で使用されるかもしれないトップレベルの見出しと対照的に、適切なタイトルのいくつかの例を次に示す。

  <title>Introduction to The Mating Rituals of Bees</title>
    ...
  <h1>Introduction</h1>
  <p>This companion guide to the highly successful
  <cite>Introduction to Medieval Bee-Keeping</cite> book is...

次のページは、同じサイトの一部であるかもしれない。最初の見出しが、読者がどのような文脈か知っており、したがってダンスがサルサやワルツであるかどうかを知りたいと思わないだろうことを前提としつつ、タイトルが明確に主題を説明する方法に注意する:

  <title>Dances used during bee mating rituals</title>
    ...
  <h1>The Dances</h1>

文書のタイトルとして使用する文字列は、document.title IDL属性によって与えられる。

ユーザーインターフェイスで文書を参照する際に、ユーザーエージェントは、文書のタイトルを使用すべきである。title要素のコンテンツがこの方法で使用される場合、そのtitle要素の書字方向は、ユーザーインターフェイスにおける文書のタイトルの書字方向を設定するために使用されるべきである。

4.2.3 base要素

カテゴリー
メタデータコンテンツ
この要素を使用できるコンテキスト
他のbase要素を含まないhead要素内。
コンテンツモデル
Nothing
text/htmlにおけるタグ省略
終了タグなし。
コンテンツ属性
グローバル属性
href文書基底URL
targetハイパーリンクナビゲーションおよびフォーム送信に対するブラウジングコンテキスト
DOMインターフェイス
[HTMLConstructor]
interface HTMLBaseElement : HTMLElement {
  [CEReactions] attribute USVString href;
  [CEReactions] attribute DOMString target;
};

base要素は、著者にURLを解析する目的で文書の基底URLを指定、および次に続くハイパーリンクのためにデフォルトでブラウジングコンテキストの名前の指定を可能にする。この要素は、この情報を超えた任意のコンテンツを表すものでない。

文書ごとに複数のbase要素が存在してはならない。

base要素は、href属性、またはtarget属性のいずれか、あるいはその両方を持たなければならない。

hrefコンテンツ属性が指定される場合、潜在的にスペースで囲まれた妥当なURLでなければならない。

href属性を持つ場合、base要素は、html要素を除いて(manifest属性はbase要素に影響されない)、URLを取得するよう定義された属性を持つツリー内の他の要素の前に来なければならない。

href属性をもつ複数のbaseが存在する場合、最初のものを除いてすべて無視される。

target属性が指定される場合、Documentハイパーリンクフォームナビゲーションを引き起こす際に、どのブラウジングコンテキストがデフォルトとして使用するかを指定する妥当なブラウジングコンテキストの名前またはキーワードを含まなければならない。

target属性を持つ場合、base要素は、ハイパーリンクを表すツリー内の要素の前に来なければならない。

target属性をもつ複数のbaseが存在する場合、最初のものを除いてすべて無視される。

A base element that is the first base element with an href content attribute in a document tree has a frozen base URL. The frozen base URL must be immediately set for an element whenever any of the following situations occur:

To set the frozen base URL for an element element:

  1. Let document be element's node document.

  2. Let urlRecord be the result of parsing the value of element's href content attribute with document's fallback base URL, and document's character encoding. (Thus, the base element isn't affected by itself.)

  3. Set element's frozen base URL to document's fallback base URL, if urlRecord is failure or running Is base allowed for Document? on the resulting URL record and document returns "Blocked", and to urlRecord otherwise.

The href IDL attribute, on getting, must return the result of running the following algorithm:

  1. Let document be element's node document.

  2. Let url be the value of the href attribute of this element, if it has one, and the empty string otherwise.

  3. Let urlRecord be the result of parsing url with document's fallback base URL, and document's character encoding. (Thus, the base element isn't affected by other base elements or itself.)

  4. If urlRecord is failure, return url.

  5. Return the serialization of urlRecord.

The href IDL attribute, on setting, must set the href content attribute to the given new value.

The target IDL attribute must reflect the content attribute of the same name.

この例において、base要素は文書の基底URLを設定するために使用される:

<!DOCTYPE html>
<html lang="en">
    <head>
        <title>This is an example for the &lt;base&gt; element</title>
        <base href="https://www.example.com/news/index.html">
    </head>
    <body>
        <p>Visit the <a href="archives.html">archives</a>.</p>
    </body>
</html>

上記の例において、リンクは"http://www.example.com/news/archives.html"へのリンクとなる。

Spec bugs: 21622

カテゴリー
メタデータコンテンツ
要素がbody内で許可される場合フローコンテンツ
要素がbody内で許可される場合フレージングコンテンツ
この要素を使用できるコンテキスト
メタデータコンテンツが期待される場所。
headの子であるnoscript要素内。
要素がbody内で許可される場合フレージングコンテンツが期待される場所。
コンテンツモデル
Nothing
text/htmlにおけるタグ省略
終了タグなし。
コンテンツ属性
グローバル属性
hrefハイパーリンクのアドレス
crossorigin — 要素がcrossorigin要求を処理する方法
relハイパーリンクと宛先のリソースを含む文書の関係
media — 受け入れ可能なメディア
nonceContent Security Policyチェックで使用される暗号nonce [CSP]
integritySubresource Integrityチェックで使用される整合性メタデータ[SRI]
hreflang — リンクされたリソースの言語
type — 参照されるリソースタイプのヒント
referrerpolicy — 要素によって開始されたフェッチのためのリファラポリシー
sizes — アイコンのサイズ(rel="icon"に対する)
as — プリロードリクエストの潜在的な宛先rel="preload"に対する)
scopeサービスワーカー登録範囲urlrel="serviceworker"に対して)
updateviacacheサービスワーカー登録に対するキャッシュモードによる更新rel="serviceworker"に対する)
workertypeサービスワーカー登録に対するサービスワーカー型rel="serviceworker"に対して)
color — サイトのアイコンをカスタマイズする際に使用する色(rel="mask-icon"に対して)
また、title属性はこの要素で特別なセマンティックスを持つ:リンクのタイトル、CSSスタイルシート設定名
DOMインターフェイス
[HTMLConstructor]
interface HTMLLinkElement : HTMLElement {
  [CEReactions] attribute USVString href;
  [CEReactions] attribute DOMString? crossOrigin;
  [CEReactions] attribute DOMString rel;
  [CEReactions] attribute DOMString as; // (default "")
  [SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
  [CEReactions] attribute DOMString media;
  [CEReactions] attribute DOMString nonce;
  [CEReactions] attribute DOMString integrity;
  [CEReactions] attribute DOMString hreflang;
  [CEReactions] attribute DOMString type;
  [SameObject, PutForwards=value] readonly attribute DOMTokenList sizes;
  [CEReactions] attribute DOMString referrerPolicy;
  [CEReactions] attribute USVString scope;
  [CEReactions] attribute DOMString workerType;
  [CEReactions] attribute DOMString updateViaCache;
};
HTMLLinkElement implements LinkStyle;

link要素は、著者が文書を他のリソースとリンクするのを可能にする。

リンクの宛先はhref属性によって与えられ、これは存在しなければならず、潜在的にスペースで囲まれた妥当な空でないURLを含まなければならない。href属性が不在である場合、要素はリンクを定義しない。

crossorigin属性はCORS設定属性である。これは、外部リソースリンクでの使用を意図される。

(関係を)示されるリンクの種類はrel属性値によって与えられ、存在する場合、スペースで区切られたトークンの集合である値を持たなければならない。許可されたキーワードとその意味は、後の節で定義される。rel属性が不在である、キーワードを持たない、または使用されるキーワードのいずれもこの仕様における定義に従って許可されない場合、その要素は一切のリンクを作成しない。

relサポートされるトークンは、link要素で許可されるHTMLリンクタイプで定義されるキーワードであり、処理モデルに影響を与え、ユーザーエージェントによってサポートされる。可能性のあるサポートされるトークンは、alternatedns-prefetchiconnextpingbackpreconnectprefetchpreloadprerendersearchserviceworker、およびstylesheetである。relサポートされるトークンは、ユーザーエージェントが処理モデルを実装する、このリスト由来のトークンのみを含めなければならない。

Theoretically a user agent could support the processing model for the canonical keyword — if it were a search engine that executed JavaScript. But in practice that's quite unlikely. So in most cases, canonical ought not be included in rel's supported tokens.

link要素はrel属性またはitemprop属性を持たなければならないが、同時に持ってはならない。

link要素がitemprop属性を持つ、またはbody-okであるキーワードのみを含むrel属性を持つ場合、要素はbody内で許可されると呼ばれる。これは、要素がフレージングコンテンツが期待される場所で使用できることを意味する。

rel属性が使用される場合、この要素はページのbody内でのみ使用することができる。itemprop属性とともに使用される場合、マイクロデータモデルの制限と仮定して、要素はhead要素またはページのbody要素で使用できる。

外部リソースへのリンクハイパーリンクという、2つのリンクカテゴリーがlink要素を用いて作成できる。リンクタイプの節では、あるリンクタイプが外部リソースまたはハイパーリンクであるかどうかを定義する。1つのlink要素は、複数のリンク(一部は外部リソースリンクかもしれず、一部はハイパーリンクであるかもしれない)を作成できる。正確には、どのリンクがどれだけ作成されるかは、rel属性で与えられるキーワードに応じて異なる。ユーザーエージェントは、要素あたりの基準ではなく、リンクあたりの基準でリンクを処理しなければならない。

link要素に対して作成された各リンクは別々に処理される。たとえば、rel="stylesheet"をもつ2つのlink要素が存在する場合、これらは個別の外部リソースとして数え、およびそれぞれが独立に独自の属性によって影響される。同様に、単一のlink要素が値next stylesheetを伴うrel属性を持つ場合、それはハイパーリンクnextキーワードへの)および外部リソースリンクstylesheetキーワードへの)の両方を作成し、それらはそれぞれに(mediaまたはtitleのような)他の属性の影響を受ける。

たとえば、次のlink要素は、(同じページへの)2つのハイパーリンクを作成する。

<link rel="author license" href="/about">

この要素によって作成される2つのリンクは、1つは対象ページが現在のページの著者に関する情報を持つセマンティックであり、1つは現在のページが提供されている内部でライセンスに関する情報を対象ページが持つセマンティックである。

link要素とrel属性で作成されるハイパーリンクは、文書全体に適用される。これは、コンテキストが文書内のリンク位置によって与えられるリンク型を示す、aおよびarea要素のrel属性とは対照的である。

外部リソースへのリンクに対する正確な振る舞いは、関連するリンク型に対して定義されるように、正確な関係に依存する。

media属性は、リソースが適用されるメディアを表す。値は妥当なメディアクエリーリストでなければならない。

nonce属性は、リンクで指定された外部リソースが文書に読み込まれて適用されるかどうかを決定するためにContent Security Policyによって使用することができる(「一度に使用される数」)暗号ノンスを表す。値はテキストである。[CSP]

integrity属性は、この要素が責任を負うリクエストに対する完全性メタデータを表す。値はテキストである。stylesheetキーワードを含むrel属性を持たないlink要素に属性を指定してはならない。[SRI]

link要素のhreflang属性は、a要素のhreflang属性と同じセマンティックスを持つ。

type属性は、リンクされたリソースのMIMEタイプを提供する。これは単なる助言である。値は妥当なMIMEタイプでなければならない。

外部リソースへのリンクについて、それらがサポートしないリソースの再取得を回避できるように、type属性はユーザーエージェントへのヒントとして使用される。

referrerpolicy属性は、リファラポリシー属性である。属性が外部リソースを取得する際に使用されるリファラポリシーを設定するのを手伝う場合、この属性は外部リソースリンクとともに使用するためのものである。[REFERRERPOLICY].

title属性は、リンクのタイトルを与える。一つの例外を除いて、これは純粋に助言的である。値はテキストである。例外は、title属性がCSSスタイルシートセットを定義する、文書ツリー内であるスタイルシートリンクである。

link要素のtitle属性は、タイトルをもたないリンクが親要素のタイトルを継承しない点で、他のほとんどの要素に属するグローバルtitle属性とは異なる。それは単にタイトルを持たない。


sizes属性は、視覚形式のアイコンのサイズを与える。存在する場合、この値は単に助言を与えるだけである。複数のアイコンが利用可能な場合、ユーザーエージェントは、どのアイコンを使用するかを決定するためにこの値を使用してもよい。存在する場合、この属性は、ASCII大文字・小文字不区別である一意なスペース区切りトークンの順不同の組である値を持たなければならない。値はそれぞれ、"any"に一致するASCII大文字・小文字不区別である文字列か、2つの妥当な非負整数からなる値のいずれかでなければならない。この数値は、先行するU+0030 DIGIT ZERO(0)文字を持たず、かつ1つのU+0078 LATIN SMALL LETTER XまたはU+0058 LATIN CAPITAL LETTER X文字により分離される。属性は、iconキーワードまたはapple-touch-iconキーワードを指定するrel属性を持たないlink要素を指定してはならない。

apple-touch-iconキーワードは、登録された事前定義されたリンクタイプのセットへの拡張であるが、ユーザーエージェントは形はどうあれそのキーワードをサポートする必要はない。


as属性は、href属性によって与えられるリソースに対するプリロードリクエストの潜在的な宛先を指定する。この属性は列挙属性である。各潜在的な宛先は、同じ名前の状態にマッピングする、この属性のキーワードである。属性はpreloadキーワードを含むrel属性を持たないlink要素で指定しなければならないが、linkで指定されてはならない。as属性の使用方法に関する処理モデルは、リソースを取得するための手順で与えられる。

属性は、欠損値のデフォルトまたは無効値のデフォルトを持たない。これは、属性の無効または欠損値が状態なしに対応することを意味する。これは処理モデルで説明される。


scope属性は、サービスワーカー登録範囲urlを指定する。この属性が存在する場合、値は潜在的にスペースで囲まれた妥当なURLでなければならない。属性はserviceworkerキーワードを含むrel属性を持たないlink要素で指定してはならない。

updateviacache属性は、サービスワーカー登録キャッシュモードによる更新を指定する。この属性は列挙属性である。各キャッシュモードによる更新は、同じ名前の状態にマッピングする、この属性のキーワードである欠損値のデフォルトimports状態である。属性はserviceworkerキーワードを含むrel属性を持たないlink要素で指定してはならない。

workertype属性は、サービスワーカー登録サービスワーカータイプを指定する列挙属性である。属性のキーワードはclassicmoduleであり、これはそれぞれの状態classicmoduleに対応する。欠損値のデフォルトclassic状態である。キーワードで表されない追加の状態、invalid状態がある。無効な値のデフォルトinvalid状態である。属性は、serviceworkerキーワードを含む rel属性を持たないlink要素で指定してはならない。


color属性は、mask-iconリンクタイプとともに使用される。この属性は、mask-iconキーワードを含むrel属性を持たないlink要素で指定してはならない。この値は、ユーザーエージェントがサイトをピン留めするときに目に付くアイコンの表示をカスタマイズするために使用することができる推奨色を定義する、CSS <color>生成物と一致する文字列でなければならない。

この仕様は、color属性に対するユーザエージェント要件を一切持たない。

mask-iconキーワードは、登録された事前定義されたリンクタイプのセットへの拡張であるが、ユーザーエージェントは形はどうあれそのキーワードをサポートする必要はない。


The IDL attributes href, hreflang, integrity, media, nonce, rel, scope, sizes, and type each must reflect the respective content attributes of the same name.

There is no reflecting IDL attribute for the color attribute, but this might be added later.

The as IDL attribute must reflect the as content attribute, limited to only known values.

crossOrigin IDL属性は、crossoriginコンテンツ属性を反映しなければならない。

The referrerPolicy IDL attribute must reflect the referrerpolicy content attribute, limited to only known values.

The relList IDL attribute must reflect the rel content attribute.

The updateViaCache IDL attribute must reflect the updateviacache content attribute, limited to only known values.

The workerType IDL attribute must reflect the workertype content attribute, limited to only known values.

4.2.4.1 Processing the media attribute

リンクがハイパーリンクである場合、media属性は純粋に助言であり、問題の文書が設計されたメディアに対して説明する。

しかし、リンクが外部リソースのリンクである場合、media属性は規範的である。media属性の値が環境にマッチしかつその他の条件が適用される場合、ユーザーエージェントは外部リソースを適用しなければならず、そうでなければ適用してはならない。

media属性が省略される場合、デフォルトでは"all"であり、デフォルトのリンクにより、すべてのメディアに適用されることを意味する。

外部リソースは、外部リソースの制限の適用内で定義される追加の制限があるかもしれない。たとえば、CSSスタイルシートは、いくつかの@mediaブロックを持っているかもしれない。この仕様は、そのような追加の制限や要件を上書きしない。

4.2.4.2 Processing the type attribute

If type attribute is present, then the user agent must assume that the resource is of the given type (even if that is not a valid MIME type, e.g. the empty string). If the attribute is omitted, but the external resource link type has a default type defined, then the user agent must assume that the resource is of that type. ユーザーエージェントが指定されるリンク関係に対して指定されるMIMEタイプをサポートしない場合、ユーザーエージェントはリソースを取得するべきではない。ユーザーエージェントが指定されるリンク関係に対して指定されるMIMEタイプをサポートする場合、ユーザーエージェントは外部リソースリンクの特定のタイプに対して指定されるように適切な時間でリソースを取得すべきである。If the attribute is omitted, and the external resource link type does not have a default type defined, but the user agent would obtain the resource if the type was known and supported, then the user agent should obtain the resource under the assumption that it will be supported.

ユーザーエージェントは、type属性を信頼できるものとし考慮してはならない―リソースを取得する際に、ユーザーエージェントは、その実際のタイプを決定するためにtype属性を使用してはならない。実際のタイプのみが、上記の想定タイプではなく、(次の段落で定義されるように)リソースを適用するかどうかを決定するために使用される。

stylesheetリンクタイプは、リソースのContent-Typeメタデータを処理するための規則を定義する。

ユーザーエージェントがリソースのタイプを一度確立すると、タイプがサポートされるタイプでありかつその他の条件が適用される場合、ユーザーエージェントはリソースを適用しなければならず、そうでなければリソースを無視しなければならない。

文書が次のようにラベル付けされたスタイルシートのリンクを含む場合:

<link rel="stylesheet" href="A" type="text/plain">
<link rel="stylesheet" href="B" type="text/css">
<link rel="stylesheet" href="C">

text/plainはCSSスタイルシートのためのMIMEタイプではないので)CSSスタイルシートのみをサポートする適合ユーザーエージェントは、BとCのファイルを取得し、Aファイルをスキップする。

ファイルBとCの場合、その後サーバーから返される実際のタイプをチェックする。text/cssとして送信されるものに対して、スタイルを適用するが、text/plainとしてラベル付けされるものに対して、スタイルを適用しない。

2つのファイルのいずれかがContent-Typeメタデータなしで、またはContent-Type: "null"のような構文的に誤ったタイプとともに返された場合、stylesheetのリンクに対するデフォルトタイプは蹴られる。デフォルトタイプはtext/cssであるので、それにもかかわらずスタイルシートは適用される

For external resources that are represented in the DOM (for example, style sheets), the DOM representation must be made available (modulo cross-origin restrictions) even if the resource is not applied. To obtain the resource, the user agent must run the following steps:

  1. If the href attribute's value is the empty string, then abort these steps.

  2. Parse the URL given by the href attribute, relative to the element's node document. If that fails, then abort these steps. Otherwise, let url be the resulting URL record.

  3. Let corsAttributeState be the current state of the element's crossorigin content attribute.

  4. Let request be the result of creating a potential-CORS request given url, the empty string, and corsAttributeState.

  5. Set request's client to the link element's node document's Window object's environment settings object.

  6. Set request's cryptographic nonce metadata to the current value of the link element's nonce content attribute.

  7. Set request's integrity metadata to the current value of the link element's integrity content attribute.

  8. Set request's referrer policy to the current state of the link element's referrerpolicy attribute.

  9. If the rel attribute contains the preload keyword, then:

    1. Let as be the current state of the as attribute.

    2. If as is no state, then return.

    3. Set request's destination to the result of translating as.

  10. Fetch request.

User agents may opt to only try to obtain such resources when they are needed, instead of pro-actively fetching all the external resources that are not applied.

外部リソースを取得する際に使用するプロトコル(HTTPなど)のセマンティックスに従わなければならない。(たとえば、リダイレクトに従い、404応答は外部リソースが適用されないようにする。)

Once the attempts to obtain the resource and its critical subresources are complete, the user agent must, if the loads were successful, queue a task to fire an event named load at the link element, or, if the resource or one of its critical subresources failed to completely load for any reason (e.g. DNS error, HTTP 404 response, a connection being prematurely closed, unsupported Content-Type), queue a task to fire an event named error at the link element. Non-network errors in processing the resource or its subresources (e.g. CSS parse errors, PNG decoding errors) are not failures for the purposes of this paragraph.

The task source for these tasks is the DOM manipulation task source.

Unless otherwise specified for a given rel keyword, the element must delay the load event of the element's node document until all the attempts to obtain the resource and its critical subresources are complete. (Resources that the user agent has not yet attempted to obtain, e.g. because it is waiting for the resource to be needed, do not delay the load event.)

サポートされる場合、HTTP `Link:`ヘッダーは、HTTPメッセージで指定された順序で、文書内のリンクの前に来ると想定しなければならない。このヘッダーは、関連する仕様に指定される規則に従って処理される。[HTTP] [WEBLINK]

HTTP `Link`ヘッダーにおける関係タイプの登録は、HTMLリンクタイプから区別され、したがってそのセマンティックスは同じ名前のHTML種類と異なるかもしれない。

インタラクティブなユーザーエージェントは、ユーザーインターフェイス内のどこかで、link要素を使用して作成されるハイパーリンクを追跡する手段をユーザーに提供してもよい。正確なインターフェイスはこの仕様で定義されないが、文書で各link要素とともに作成される各ハイパーリンクに対して、一部のフォームまたは別のもの(おそらく単純化された)中で、(以下に再び定義されるように、要素の属性から得られる)次の情報を含めることができる:

ユーザーエージェントはまた、(type属性によって与えられるような)リソースのタイプなどの情報を含めることができる。

ハイパーリンクを作成するlink要素の活性化挙動は、次のステップを実行することである:

  1. link要素のノード文書完全にアクティブでない場合、この手順を中止する。

  2. link要素によって作成されるハイパーリンクを追跡する

4.2.5 meta要素

カテゴリー
メタデータコンテンツ
itemprop属性が存在する場合:フローコンテンツ
itemprop属性が存在しない場合:フレージングコンテンツ
この要素を使用できるコンテキスト
charset属性が存在する場合、または要素のhttp-equivの属性がエンコード宣言状態にある場合:head要素内。
http-equiv属性が存在するが、エンコード宣言状態でない場合:head要素内。
http-equiv属性が存在するが、エンコード宣言状態でない場合:head要素の子であるnoscript要素内。
name属性が存在する場合:メタデータコンテンツが期待される場所。
itempropが存在する場合:メタデータコンテンツが期待される場所。
itemprop存在がする場合:フレージングコンテンツが期待される場所。
コンテンツモデル
Nothing
text/htmlにおけるタグ省略
終了タグなし。
コンテンツ属性
グローバル属性
name — メタデータ名
http-equiv — プラグマディレクティブ
content — 要素の値
charset文字エンコーディング宣言
DOMインターフェイス
[HTMLConstructor]
interface HTMLMetaElement : HTMLElement {
  [CEReactions] attribute DOMString name;
  [CEReactions] attribute DOMString httpEquiv;
  [CEReactions] attribute DOMString content;
};

meta要素は、titlebaselinkstylescript要素を用いて表現できない様々な種類のメタデータを表す

meta要素は、name属性をもつ文書レベルのメタデータ、http-equiv属性を持つプラグマ・ディレクティブ、およびcharset属性をもつHTML文書が文字列形式にシリアライズされる(たとえば、ネットワーク上の伝送、またはディスクストレージ)場合、ファイルの文字エンコーディング宣言を表すことができる。

namehttp-equivcharset、およびitemprop属性のうちの1つを正確に指定しなければならない。

namehttp-equivまたはitempropのいずれかが指定される場合、content属性も指定しなければならない。そうでなければ、省略されなければならない。

charset属性は、文書で使用される文字エンコーディングを指定する。これは、文字エンコーディング宣言である。属性がXML文書内に存在する場合、その値は、文字列"UTF-8"とASCII大文字・小文字不区別で一致しなければならない(したがって、文書は、エンコーディングとしてUTF-8を使用するよう強制される)。

meta要素上のcharset属性は、XML文書では効果がなく、単にXMLからの移行を容易にするために許可される。

文書ごとにcharset属性をもつ複数のmeta要素があってはならない。

content属性は、文書のメタデータまたは要素がそれらの目的のために使用される場合のプラグマディレクティブの値を与える。この仕様の後続の節で説明されるように、許可される値は、正確な文脈に依存する。

meta要素がname属性を持つ場合、文書のメタデータを設定する。文書のメタデータは、名前と値のペアの観点から表される。meta要素のname属性が名前を与え、同じ要素のcontent属性が値を与える。名前はメタデータのどの側面を設定するかを指定する。妥当な名前とその値の意味は、次の節で説明する。meta要素がcontent属性を持たない場合、メタデータの名前と値のペアの値部分は、空文字列である。

nameおよびcontent IDL属性は、同じ名前のそれぞれのコンテンツ属性を反映しなければならない。IDL属性httpEquivは、コンテンツ属性http-equiv反映しなければならない。

4.2.5.1 標準メタデータ名

この仕様は、meta要素のname属性の名前を定義する。

名前は大文字・小文字を区別せず、かつASCII大文字・小文字を区別しない方法で比較されなければならない

application-name

値は、ページが表すウェブアプリケーションの名前を与える短い自由形式の文字列でなければならない。ページがウェブアプリケーションでない場合、application-nameメタデータ名を使用してはならない。それぞれの名前の言語を指定するlang属性を使用することで、ウェブアプリケーション名の翻訳は与えられてもよい。

与えられる言語をもち、かつ文書ごとに値application-nameを設定するname属性をもつ複数のmeta要素が存在してはならない。

タイトルはステータスメッセージを含むかもしれず、アプリケーションの名前であること代わりに特定の時点でページの状態に関連かもしれないので、ユーザーエージェントは、ページのtitleに優先してUIでアプリケーション名を使用してもよい。

指定された言語の順序付きリスト(たとえばイギリス英語、アメリカ英語、英語)を使用するためにアプリケーション名を検索するには、ユーザーエージェントは次の手順を実行しなければならない:

  1. languagesを言語のリストにする。

  2. もしあれば、かつその言語が不明ではない場合、default languageDocument文書要素言語とする。

  3. default languageが存在する場合、かつそれがlanguagesにおける言語のいずれかと同じ言語でない場合、languagesに追加する。

  4. winning languageを、値application-nameに設定されるname属性を持ちかつその言語が問題の言語であるDocumentにおけるmeta要素が存在するlanguagesにおける第一言語とする。

    どの言語もそのようなmeta要素を持たない場合、この手順を中止する。指定されるアプリケーション名は存在しない。

  5. application-nameに設定されるname属性を持ちかつその言語winning languageである、ツリー順Documentにおける最初のmeta要素のcontent属性の値を返す。

このアルゴリズムは、例えばブックマークを標識するために、ブラウザーがページの名前を必要とする場合にブラウザーによって使用される。アルゴリズムに提供する言語は、ユーザーの優先言語になる。

author

値は、ページ著者のうちの一人の名前を与える、自由形式の文字列でなければならない。

description

値は、ページを説明する自由形式の文字列でなければならない。たとえば検索エンジン内など、値はページのディレクトリで使用するために適切なものでなければならない。文書ごとに値descriptionを設定するname属性を持つ複数のmeta要素があってはならない。

generator

値は、文書を生成するために使用されるソフトウェアパッケージの1つを識別する自由形式の文字列でなければならない。この値は、たとえばマークアップがテキストエディターでユーザーによって記述されたページのように、マークアップがソフトウェアによって生成されないページで使用してはならない。

"Frontweaver"と呼ばれるツールは、ページ生成のために使用されるツールとして自分自身を識別するために、ページのhead要素内にその出力で含むかもしれない:

<meta name=generator content="Frontweaver 8.2">
keywords

値は、それぞれがページに関連するキーワードである、コンマ区切りトークンの集合でなければならない。

イギリスの高速道路上の書体に関するこのページは、ユーザーがページを検索するために使用するかもしれないキーワードを指定するmeta要素を使用している:

<!DOCTYPE HTML>
<html lang="en-GB">
 <head>
  <title>Typefaces on UK motorways</title>
  <meta name="keywords" content="british,type face,font,fonts,highway,highways">
 </head>
 <body>
  ...

多くの検索エンジンは、この機能が歴史的に当てにならず、さらにはユーザーにとって有益でない手段をもたらす、検索エンジンスパムとして誤解を招く方法で使用されているので、そのようなキーワードを考慮しない。

著者がページに適用可能として指定しているキーワードのリストを取得するために、ユーザーエージェントは、次の手順を実行しなければならない:

  1. keywordsを空のリストにする。

  2. For each meta element with a name attribute and a content attribute and whose name attribute's value is keywords:

    1. カンマで要素のcontent属性の値を分割する

    2. もしあれば、keywordsに得られたトークンを追加する。

  3. keywordsから重複を削除する。

  4. keywordsを返す。これは、著者がページに適用可能として指定したキーワードのリストである。

値の信頼性への不十分な確信が存在する場合に、ユーザーエージェントは、この情報を使用すべきでない。

たとえば、コンテンツ管理システムがサイト固有の検索エンジンのインデックスを設定するためにシステム内のページのキーワード情報を使用することは合理的であるが、この情報を使用した大規模なコンテンツアグリゲータはおそらく、特定のユーザーが不適切なキーワードを使用してその順位メカニズムを操作しようとすることに気づく。

referrer

値は、Documentのデフォルトのリファラーポリシーを定義する、リファラーポリシーでなければならない。[REFERRERPOLICY]

If any meta elements are inserted into the document or removed from the document, or existing meta elements have their name or content attributes changed, user agents must run the following algorithm:

  1. Let candidate elements be the list of all meta elements that meet the following criteria, in tree order:

  2. For each element in candidate elements:

    1. Let value be the value of element's content attribute, converted to ASCII lowercase.

    2. If value is one of the values given in the first column of the following table, then set value to the value given in the second column:

      Legacy value Referrer policy
      never no-referrer
      default no-referrer-when-downgrade
      always unsafe-url
      origin-when-crossorigin origin-when-cross-origin
    3. If value is a referrer policy, then set element's node document's referrer policy to policy.

    The fact that these steps are applied for each element enables deployment of fallback values for older user agents. [REFERRERPOLICY]

theme-color

値は、ユーザーエージェントがページや周囲のユーザーインターフェイスのの表示をカスタマイズするために使用すべき提案される色を定義する、CSS <color>生成物とマッチする文字列でなければならない。たとえば、ブラウザーは、指定された値でページのタイトルバーに色をつけるかもしれず、またはタブバーやタスクスイッチャーでカラーハイライトとして使用するかもしれない。

文書ごとに値theme-colorを設定するname属性を持つ複数のmeta要素があってはならない。

この標準自身は、テーマカラーとして"WHATWG green"を使用している:

<!DOCTYPE HTML>
<title>HTML Standard</title>
<meta name="theme-color" content="#3c790a">
...

To obtain a page's theme color, user agents must run the following steps:

  1. Let candidate elements be the list of all meta elements that meet the following criteria, in tree order:

  2. For each element in candidate elements:

    1. Let value be the result of stripping leading and trailing ASCII whitespace from the value of element's content attribute.

    2. If value can be parsed as a CSS <color> value, return the parsed color.

  3. If this step is reached, the page has no theme color.

If any meta elements are inserted into the document or removed from the document, or existing meta elements have their name or content attributes changed, user agents must re-run the above algorithm and apply the result to any affected UI.

UIのテーマカラーを使用する場合、ユーザーエージェントは、問題のUIにテーマカラーより適切にするために実装固有の方法でテーマカラーを調整してもよい。たとえば、ユーザーエージェントが背景としてテーマカラーを使用しその上に白いテキストを表示しようとする場合、適切なコントラストを確保するために、UIの一部でテーマカラーのより暗い異なる色を使用するかもしれない。

4.2.5.2 他のメタデータ名

誰でも独自の定義済みメタデータ名のセットに対する拡張を作成して使用することができる。そのような拡張を登録する必要はない。

ただし、次のいずれかの場合では新しいメタデータ名を作成すべきではない:

また、新しいメタデータ名を作成して使用する前に、すでに使用されているメタデータ名の選択を避け、すでに使用されているメタデータ名の複製を避け、かつ新しい標準化された名前があなたの選んだ名前と衝突することを避けるために、WHATWG Wiki MetaExtensions pageを参照することを勧める。[WHATWGWIKI]

誰でも自由にWHATWG Wiki MetaExtensions pageを編集して、いつでもメタデータ名を追加できる。新しいメタデータ名は、次の情報とともに指定することができる:

キーワード

実際の名前が定義されている。名前は、他の定義済みの名前と紛らわしいものであるべきでない(たとえば、大文字と小文字だけが異なる)。

概要

メタデータ名の意味はどのようなものかの短い非標準の説明は、その値が要求する形式を含む。

Specification(仕様)
メタデータ名のセマンティックスおよび要求のより詳細な説明へのリンク。それはWiki上の別のページかもしれないし、外部ページへのリンクかもしれない。
Synonyms(類義語)

全く同じ処理要求を持つ他の名前のリスト。著者は、同義語であると定義された名前を使うべきではなく、同義語はユーザーエージェントがレガシーコンテンツをサポートするためだけのものである。誰もが実際に使用されてない同義語を削除できる。レガシーコンテンツとの互換性のために同義語として処理する必要がある名前のみが、この方法で登録されているのである。

Status(状態)

以下のうちの1つをとる:

Proposed(提案)
広いレビューと承認を受けていない名前。誰かが提案済みか提案している、あるいは提案予定であり、使うことができる。
Ratified(承認)
広いレビューと承認を受けている名前。それは、明確に不正確な方法で使用する場合を含めて、名前を使用するページを処理する方法を明快に定義した仕様を持つ。
Discontinued(中止)
広いレビューを受けており、欠陥が発見されたメタデータ名。既存のページはこのメタデータ名を使用しているが、新しいページでは避けるべきである。"brief description"(簡単な説明)と"specification"(仕様書)のエントリは、どちらかといえば著者が代わりに使用すべきものの詳細を提供するだろう。

メタデータ名が既存の値とともに冗長であることが判明した場合、削除され、既存の値の同義語としてリストされているべきである。

メタデータ名が、使用するまたは指定することなく一月以上の期間"proposed"(提案)状態で追加される場合、WHATWG Wiki MetaExtensions pageから削除されることがある。

メタデータ名が"proposed"(提案)状態で追加され、既存の値とともに冗長であることが判明している場合、既存の値の同義語として削除され、リストされているべきである。メタデータ名は"proposed"(提案)状態で追加され、有害だと判明している場合、"discontinued"(中止)状態に変更すべきである。

誰もがいつでも状態を変更できるが、上記の定義にしたがってのみ行うべきである。

4.2.5.3 プラグマディレクティブ

meta要素でhttp-equiv属性が指定された場合、要素はプラグマディレクティブである。

http-equiv属性は、列挙属性である。以下の表は、この属性に対して定義されたキーワードを列挙する。キーワードとともにその行の最初のセルに与えられた状態は、これらキーワードが対応する状態を与える。最後の列に記載されているように、キーワードの一部は非適合である。

状態 キーワード
Content Language content-language 非適合
エンコーディング宣言 content-type
デフォルトスタイル default-style
リフレッシュ refresh
Cookie setter set-cookie 非適合
X-UA-Compatible x-ua-compatible
Content security policy Content-Security-Policy

meta要素が文書に挿入される場合、その要素のhttp-equiv属性が存在しかつ上記の状態のいずれかを表す場合、以下のリストに記載されるように、ユーザーエージェントはその状態に対する適切なアルゴリズムを実行しなければならない:

コンテンツ言語状態http-equiv="content-language"

この機能は非適合である。著者は代わりにlang属性を使用することを勧める。

このプラグマは、プラグマ設定のデフォルト言語を設定する。そのようなプラグマは正常に処理されるまで、プラグマ設定のデフォルト言語は存在しない。

  1. If the meta element has no content attribute, then abort these steps.

  2. If the element's content attribute contains a U+002C COMMA character (,) then abort these steps.

  3. Let input be the value of the element's content attribute.

  4. Let position point at the first character of input.

  5. Skip ASCII whitespace within input given position.

  6. Collect a sequence of code points that are not ASCII whitespace from input given position.

  7. Let candidate be the string that resulted from the previous step.

  8. If candidate is the empty string, abort these steps.

  9. Set the pragma-set default language to candidate.

    If the value consists of multiple space-separated tokens, tokens after the first are ignored.

このプラグマは、同じ名前のHTTP `Content-Language`ヘッダーと完全ではないが、ほぼ大部分で異なる。[HTTP]

エンコーディング宣言状態http-equiv="content-type"

エンコーディング宣言状態は、charset属性の設定の単なる代替形式である。これは文字エンコーディング宣言である。この状態のユーザーエージェントの要件は、仕様の解析セクションによってすべて処理される。

エンコーディング宣言状態http-equiv属性をもつmeta要素に対して、content属性は、リテラルに文字列"text/html;"、その後に任意の数のASCII空白文字が任意で続き、その後にリテラルに文字列"charset="が続き、その後に文字エンコーディング宣言文字エンコーディングラベルが続くものからなる文字列とASCII大文字・小文字不区別で一致する値を持たなければならない。

文書は、エンコーディング宣言状態http-equiv属性をもつmeta要素と、charset属性の存在するmeta要素の両方を含んではならない。

エンコーディング宣言状態HTML文書で使用されてもよいが、その状態のhttp-equiv属性をもつ要素はXML文書で使用されてはならない。

デフォルトスタイル状態http-equiv="default-style"

このプラグマは、CSSスタイルシートセット名前を設定する。

  1. If the meta element has no content attribute, or if that attribute's value is the empty string, then abort these steps.

  2. Change the preferred CSS style sheet set name with the name being the value of the element's content attribute. [CSSOM]

リフレッシュ状態http-equiv="refresh"

このプラグマは、時限式のリダイレクトとして動作する。

  1. If another meta element with an http-equiv attribute in the Refresh state has already been successfully processed (i.e. when it was inserted the user agent processed it and reached the step labeled end), then abort these steps.

  2. If the meta element has no content attribute, or if that attribute's value is the empty string, then abort these steps.

  3. Let document be the meta element's node document.

  4. Let input be the value of the element's content attribute.

  5. Let position point at the first character of input.

  6. Skip ASCII whitespace within input given position.

  7. Collect a sequence of code points that are ASCII digits from input given position, and parse the resulting string using the rules for parsing non-negative integers. If the sequence of characters collected is the empty string, then no number will have been parsed; abort these steps. Otherwise, let time be the parsed number.

  8. Collect a sequence of code points that are ASCII digits and U+002E FULL STOP characters (.) from input given position. Ignore any collected characters.

  9. Let url be document's URL.

  10. If position is past the end of input, jump to the step labeled end.

  11. If the character in input pointed to by position is not a U+003B SEMICOLON character (;), a U+002C COMMA character (,), or ASCII whitespace, then abort these steps.

  12. Skip ASCII whitespace within input given position.

  13. If the character in input pointed to by position is a U+003B SEMICOLON character (;), a U+002C COMMA character (,), then advance position to the next character.

  14. Skip ASCII whitespace within input given position.

  15. If position is past the end of input, jump to the step labeled end.

  16. Let url be equal to the substring of input from the character at position to the end of the string.

  17. If the character in input pointed to by position is a U+0055 LATIN CAPITAL LETTER U character (U) or a U+0075 LATIN SMALL LETTER U character (u), then advance position to the next character. Otherwise, jump to the step labeled skip quotes.

  18. If the character in input pointed to by position is a U+0052 LATIN CAPITAL LETTER R character (R) or a U+0072 LATIN SMALL LETTER R character (r), then advance position to the next character. Otherwise, jump to the step labeled parse.

  19. If the character in input pointed to by position is s U+004C LATIN CAPITAL LETTER L character (L) or a U+006C LATIN SMALL LETTER L character (l), then advance position to the next character. Otherwise, jump to the step labeled parse.

  20. Skip ASCII whitespace within input given position.

  21. If the character in input pointed to by position is a U+003D EQUALS SIGN (=), then advance position to the next character. Otherwise, jump to the step labeled parse.

  22. Skip ASCII whitespace within input given position.

  23. Skip quotes: If the character in input pointed to by position is either a U+0027 APOSTROPHE character (') or U+0022 QUOTATION MARK character ("), then let quote be that character, and advance position to the next character. Otherwise, let quote be the empty string.

  24. Let url be equal to the substring of input from the character at position to the end of the string.

  25. If quote is not the empty string, and there is a character in url equal to quote, then truncate url at that character, so that it and all subsequent characters are removed.

  26. Parse: Parse url relative to document. If that fails, abort these steps. Otherwise, let urlRecord be the resulting URL record.

  27. End: Perform one or more of the following steps:

    In addition, the user agent may, as with anything, inform the user of any and all aspects of its operation, including the state of any timers, the destinations of any timed redirects, and so forth.

リフレッシュ状態http-equiv属性をもつmetaに対して、content属性はいずれかからなる値を持たなければならない:

前者の場合、整数は、そのページが再読み込みされるよりも前の秒数を表す。後者の場合、整数は、与えられたURLのページで置き換えられるよりも前の秒数を表す。

ページが5分ごとにサーバーからの自動的な再読み込みを確実にするために、報道機関のフロントページは、そのページのhead要素で次のマークアップを含むかもしれない:

<meta http-equiv="Refresh" content="300">

次のようなマークアップを用いて、連続したページは、各ページが連続で次のページにリフレッシュさせることで、自動スライドショーとして使用されるかもしれない:

<meta http-equiv="Refresh" content="20; URL=page4.html">
クッキーセッターhttp-equiv="set-cookie"

このプラグマは、HTTPクッキーを設定する。[COOKIES]

これは非適合である。実際のHTTPヘッダーを代わりに使用すべきである。

  1. If the meta element has no content attribute, or if that attribute's value is the empty string, then abort these steps.

  2. Act as if receiving a set-cookie-string for the document's URL via a "non-HTTP" API, consisting of the value of the element's content attribute encoded as UTF-8. [COOKIES] [ENCODING]

X-UA-Compatible状態http-equiv="x-ua-compatible"

実際問題として、このプラグマは、仕様により密接に従うようにInternet Explorerに勧める。

X-UA-Compatible状態におけるhttp-equiv属性をもつmeta要素の場合、content属性は、文字列"IE=edge"に ASCII大文字・小文字不区別である値を持たなければならない。

ユーザーエージェントは、このプラグマを無視することが要求される。

コンテンツセキュリティーポリシー状態http-equiv="content-security-policy"

このプラグマはDocumentContent Security Policy実施する[CSP]

  1. If the meta element is not a child of a head element, abort these steps.

  2. If the meta element has no content attribute, or if that attribute's value is the empty string, then abort these steps.

  3. Let policy be the result of executing Content Security Policy's parse a serialized Content Security Policy algorithm on the meta element's content attribute's value.

  4. Remove all occurrences of the report-uri, frame-ancestors, and sandbox directives from policy.

  5. Enforce the policy policy.

コンテンツセキュリティーポリシー状態でhttp-equiv属性をもつmeta要素の場合、content属性は妥当なコンテンツセキュリティーポリシーからなる値を持たなければならないが、任意のreport-uriframe-ancestors、またはsandboxディレクティブを含めてはならない。content属性で指定されるコンテンツセキュリティーポリシーは、現在の文書上に実施される[CSP]

ページは、次のようなポリシーを使用して、インラインのJavaScriptの実行を防止するだけでなく、すべてのプラグインコンテンツをブロックすることにより、クロスサイトスクリプティング攻撃のリスクを軽減することを選択するかもしれない。

<meta http-equiv="Content-Security-Policy" content="script-src 'self'; object-src 'none'">

Spec bugs: 28339, 28563

一度に文書で特定の状態をもつ複数のmeta要素が存在してはならない。

4.2.5.4 他のプラグマディレクティブ

プラグマディレクティブの定義済みセットに対する拡張は、WHATWG Wiki PragmaExtensions pageに登録されているかもしれない。[WHATWGWIKI]

そのような拡張は、Permanent Message Header Field Registryに登録されたHTTPヘッダーと同一の名前を使用しなければならず、HTTPヘッダーに対して説明されるものと同様に振る舞わなければならない。[IANAPERMHEADERS]

メタデータを記述するヘッダー、または特定のユーザーエージェント処理を必要としないものに対応するプラグマディレクティブは、登録されてはならない。代わりにメタデータ名を使用する。結果としてHTMLを実装するユーザーエージェントとそうでないユーザーエージェントと異なるHTTPレベルの振る舞いをもたらすので、HTTP処理モデルに影響を与えるヘッダー(たとえば、キャッシュ)に相当するプラグマディレクティブは登録されてはならない。

上記の条件を満たすプラグマディレクティブの追加は、いつでもWHATWG Wiki PragmaExtensions pageを編集することで誰もが自由にできる。そのような登録は以下の情報を指定しなければならない:

キーワード

実際の名前が定義されている。名前は、同じ要求をもつ以前に登録されたHTTPの名前と一致しなければならない。

概要

プラグマディレクティブの目的の非規範的な説明。

Specification(仕様)
対応するHTTPヘッダーを定義する仕様へのリンク。

適合性チェッカーは、値が許容されているかどうかを確立するために、WHATWG Wiki PragmaExtensionsページに記載された情報を使用しなければならない:この仕様または前述のページのいずれかに記載されない値が無効として拒否されなければならないのに対し、この仕様で定義されるまたは上記のページに記載される値は、受け入れられなければならない。適合性チェッカーは、この情報をキャッシュしてもよい(たとえば、パフォーマンス上の理由から、または信頼性の低いネットワーク接続を使用することを避けるためなど)。

4.2.5.5 文書の文字エンコーディングを指定する

Spec bugs: 18338

文字エンコーディング宣言は、文書の記憶または伝達に用いられる文字エンコーディングを指定するメカニズムである。

以下の制限が文字エンコーディング宣言に適用される。

さらに、meta要素には多くの制限があるため、文書ごとに1つのmetaベースの文字エンコーディング宣言のみがあるかもしれない。

HTML文書がBOMで開始せず、かつそのエンコーディングContent-Typeメタデータによって明示的に与えられず、かつ文書がiframe srcdoc文書でない場合、使用される文字エンコーディングはASCII互換エンコーディングでなければならず、エンコーディングはcharset属性をもつmeta要素またはエンコーディング宣言状態http-equiv属性をもつmeta要素を用いて指定されなければならない。

フォームにユーザーが入力した、スクリプトによって生成されたURLでなど、文字エンコーディングは非ASCII文字を処理するために必要とされるため、すべてのエンコーディングがUS-ASCIIの範囲にあるときでさえも、文字エンコーディング宣言は、(Content-Typeメタデータ内または明示的にファイル内のいずれか)が必要である。

文書がiframe srcdoc文書である場合、文書は文字エンコーディング宣言を持ってはならない。(この場合、文書の一部はiframeを含んでいるので、ソースはすでにデコードされている。)

HTML文書charset属性をもつmeta要素または文字エンコーディング宣言http-equiv属性をもつmeta要素を含む場合、使用される文字エンコーディングはASCII互換エンコーディングでなければならない。

著者はUTF-8を使用すべきである。適合性検査は、著者にレガシーエンコーディングを使うことに反対するよう忠告してもよい。[ENCODING]

オーサリングツールは、新たに作成される文書にUTF-8を使用することをデフォルトに設定すべきである。[ENCODING]

著者は、WHATWG Encoding standardで定義されないエンコーディングを使用してはならない。さらに、著者はISO-2022-JPを使用すべきではない。[ENCODING]

WHATWG Encoding standardで定義されない一部のエンコーディングは、包括的にU+0020からU+007Eまでの範囲の対応する文字以外の文字にエンコードするために、包括的に0x20から0x7Eまでの範囲でバイトを使用し、潜在的なセキュリティー脆弱性を表す。ユーザーエージェントは、結局はHTMLタグおよびJavaScriptとして技術的に温和なプレーンテキストの文脈で解釈することになるかもしれない。

UTF-8でないエンコーディングの使用は、デフォルトで文書の文字エンコーディングを使うことで、フォーム提出およびURLエンコーディングで予期しない結果を招くかもしれない。

XMLにおいて、必要ならば、XML宣言はインライン文字エンコーディング情報に対して使用されるべきである。

HTMLにおいて、文字エンコーディングがUTF-8であることを宣言するために、著者は(head要素内で)文書のトップの近くに次のマークアップを含むかもしれない:

<meta charset="utf-8">

XMLにおいて、マークアップのはじめでXML宣言は代わりに用いられるかもしれない:

<?xml version="1.0" encoding="utf-8"?>

4.2.6 The style element

カテゴリー
メタデータコンテンツ
この要素を使用できるコンテキスト
メタデータコンテンツが期待される場所。
headの子であるnoscript要素内。
コンテンツモデル
type属性の値に依存するが、下記の文に記述される要求に一致しなければならない。
text/htmlにおけるタグ省略
どちらのタグも省略不可。
コンテンツ属性
グローバル属性
media — 受け入れ可能なメディア
nonceContent Security Policyチェックで使用される暗号nonce [CSP]
type — 埋め込みリソースタイプ
また、title属性はこの要素で特別なセマンティックスを持つ:CSSスタイルシートセット名
DOMインターフェイス
[HTMLConstructor]
interface HTMLStyleElement : HTMLElement {
  [CEReactions] attribute DOMString media;
  [CEReactions] attribute DOMString nonce;
  [CEReactions] attribute DOMString type;
};
HTMLStyleElement implements LinkStyle;

style要素は、著者が文書にスタイル情報の埋め込みを許可する。style要素は、スタイリング処理モデルへの、複数の入力の1つである。この要素は、ユーザーへのコンテンツを表すものでない。

type属性はスタイル言語を与える。属性が存在する場合、その値はスタイル言語を示す妥当なMIMEタイプでなければならない。charsetパラメーターを指定してはならない。属性が存在しない場合に用いられるtype属性に対するデフォルト値は、"text/css"である。[RFC2318]

言語をサポートするかどうかを判断するためにタイプを検査する際、ユーザーエージェントは、未知のMIMEパラメーターを無視してはならない―未知のパラメーターをもつタイプがサポートされないことを仮定しなければならない。charsetパラメーターは、ここではMIMEタイプを比較するために未知のパラメーターとして扱われなければならない。

media属性は、スタイルが適用されるメディアを言う。値は妥当なメディアクエリーリストでなければならない。media属性の値が環境にマッチしかつ他の関連する条件が適用される場合、ユーザーエージェントはスタイルを適用しなければならず、そうでなければスタイルを適用してはならない。

スタイルは、たとえば@mediaブロックの使用とともにCSSにおいて、さらに範囲が制限されるかもしれない。この仕様は、そのような追加の制限や要件を上書きしない。

media属性が省略される場合、デフォルトでは"all"であり、デフォルトのスタイルにより、すべてのメディアに適用されることを意味する。

nonce属性は、要素で指定されたスタイルが文書に適用されるかどうかを決定するためにContent Security Policyによって使用することができる(「一度に使用される数」)暗号ノンスを表す。値はテキストである。[CSP]

style要素のtitle属性はCSSスタイルシートセットを定義する。style要素がtitle属性を持たない場合、タイトルを持たない。先祖のtitle属性はstyle要素に適用しない。style要素が文書ツリー内にない場合、title属性は無視される。[CSSOM]

link要素のtitle属性のような、style要素のtitle属性は、グローバルtitle属性とタイトルなしのstyleブロックが親要素のタイトルを継承しないという点で異なる。それは単にタイトルを持たない。

style要素のtextContentは以下のABNFでstyle生成物と対等でなければならず、Unicodeである文字セットとなる。[ABNF]

style         = no-c-start *( c-start no-c-end c-end no-c-start )
no-c-start    = < any string that doesn't contain a substring that matches c-start >
c-start       = "<!--"
no-c-end      = < any string that doesn't contain a substring that matches c-end >
c-end         = "-->"

The user agent must run the update a style block algorithm that applies for the style sheet language specified by the style element's type attribute, passing it the element's style data, whenever one of the following conditions occur:

For styling languages that consist of pure text (as opposed to XML), a style element's style data is the child text content of the style element. For XML-based styling languages, the style data consists of all the child nodes of the style element.

The update a style block algorithm for CSS (text/css) is as follows:

  1. Let element be the style element.

  2. If element has an associated CSS style sheet, remove the CSS style sheet in question.

  3. If element's root is neither a shadow root nor a document, then abort these steps.

  4. If the Should element's inline behavior be blocked by Content Security Policy? algorithm returns "Blocked" when executed upon the style element, "style", and the style element's style data, then abort these steps. [CSP]

  5. Create a CSS style sheet with the following properties:

    type

    text/css

    owner node

    element

    media

    The media attribute of element.

    This is a reference to the (possibly absent at this time) attribute, rather than a copy of the attribute's current value. The CSSOM specification defines what happens when the attribute is dynamically set, changed, or removed.

    title

    The title attribute of element, if element is in a document tree, or the empty string otherwise.

    Again, this is a reference to the attribute.

    alternate flag

    Unset.

    origin-clean flag

    Set.

    location
    parent CSS style sheet
    owner CSS rule

    null

    disabled flag

    Left at its default value.

    CSS rules

    Left uninitialized.

This specification does not define any other styling language's update a style block algorithm.

Once the attempts to obtain the style sheet's critical subresources, if any, are complete, or, if the style sheet has no critical subresources, once the style sheet has been parsed and processed, the user agent must, if the loads were successful or there were none, queue a task to fire an event named load at the style element, or, if one of the style sheet's critical subresources failed to completely load for any reason (e.g. DNS error, HTTP 404 response, a connection being prematurely closed, unsupported Content-Type), queue a task to fire an event named error at the style element. Non-network errors in processing the style sheet or its subresources (e.g. CSS parse errors, PNG decoding errors) are not failures for the purposes of this paragraph.

The task source for these tasks is the DOM manipulation task source.

The element must delay the load event of the element's node document until all the attempts to obtain the style sheet's critical subresources, if any, are complete.

この仕様はスタイル規則を指定しないが、CSSは多くのウェブブラウザーによってサポートされることが期待される。[CSS]

The media, nonce, and type IDL attributes must reflect the respective content attributes of the same name.

LinkStyleインターフェイスはまた、この要素によって実装される。[CSSOM]

次の文書は、デフォルトのイタリック体で作品とラテン語のタイトルを残したまま、イタリックテキストよりも明るい赤色のテキストとして強調するスタイルを持つ。適切な要素を使用した、文書のより簡単な再スタイル付けを可能にする方法を示す。

<!DOCTYPE html>
<html lang="en-US">
 <head>
  <title>My favorite book</title>
  <style>
   body { color: black; background: white; }
   em { font-style: normal; color: red; }
  </style>
 </head>
 <body>
  <p>My <em>favorite</em> book of all time has <em>got</em> to be
  <cite>A Cat's Life</cite>. It is a book by P. Rahmel that talks
  about the <i lang="la">Felis Catus</i> in modern human society.</p>
 </body>
</html>

4.2.7 スタイルとスクリプトの相互作用

スタイルシートは、link要素、style要素、<?xml-stylesheet?>処理命令、HTTP `Link:`ヘッダー、または他のメカニズムで追加されようがなかろうが、最初に設定されない、スタイルシートレディフラグを持つ。

スタイルシートを適用する準備ができている場合、そのスタイルシートレディフラグを設定しなければならない。If the style sheet referenced no other resources (e.g. it was an internal style sheet given by a style element with no @import rules), then the style rules must be immediately made available to script; otherwise, the style rules must only be made available to script once the event loop reaches its update the rendering step.

HTMLパーサーまたはXMLパーサーDocumentのコンテキストにおけるスタイルシートは、要素がそのDocumentのパーサーによって作成された場合、スクリプトをブロックしているスタイルシートであると言われ、かつその要素は、要素がパーサーによって作成された際にスタイル処理モデルに貢献する外部リソースリンクであったstyle要素またはlink要素のいずれかであり、かつ要素がパーサーによって作成された際に要素のスタイルシートを有効にして、かつ要素のスタイルシートレディフラグはまだ設定されておらず、かつ最後の時間のイベントループステップ1に到達し、要素はそのDocumentにあって、かつユーザーエージェントは、まだその特定のスタイルシートをあきらめていない。ユーザーエージェントは、いつでもスタイルシートをあきらめてもよい。

スタイルシートが最終的にまだロードする場合、スタイルシートをロードする前にスタイルシートをあきらめることは、スクリプトが誤った情報で動作して終わるかもしれないことを意味する。たとえば、スタイルシートが要素の色緑に設定するが、シートがロードされる前に実行される結果のスタイルを検査するスクリプトを設定する場合、スクリプトは要素が黒であること(またはデフォルトの色である何か)がわかり、したがって(緑の代わりに、ページ上の他の場所で色として黒の使用を決定するなど)粗末な選択を行うかもしれない。実装者は、終了するための遅いネットワーク要求を待つ間に何もし​ないことのパフォーマンスの影響で誤った情報を使用してスクリプトの可能性のバランスを取る必要がある。

そのDocumentのコンテキストでスクリプトをブロックしているスタイルシートのいずれかが存在する場合、またはそのDocument親ブラウジングコンテキストを持つブラウジングコンテキストにあり、かつその親ブラウジングコンテキスト自身のアクティブな文書スクリプトをブロックしているスタイルシートを持つ場合、Documentスクリプトをブロックしているスタイルシートを持つ

前の段落で定義されるようなスクリプトをブロックしているスタイルシートを持たない場合、Documentスクリプトをブロックしているスタイルシートを持たない