【この訳に固有の表記規約】

この訳の,~algoや定義の記述に利用されている各種記号( ~LET, ε, ~IF, ~THROW 等々)の意味や定義の詳細は,~SYMBOL_DEF_REFを~~参照されたし。

2.4. ~URL

2.4.1. 各種用語

`妥当かつ空でない~URL@ とは、空~文字列でない,`妥当な~URL文字列$である。 ◎ A string is a valid non-empty URL if it is a valid URL string but it is not the empty string.

`前後~空白~可の妥当な~URL@ とは、`前後の~ASCII空白~列を剥いだ$結果が`妥当な~URL文字列$になる文字列である。 ◎ A string is a valid URL potentially surrounded by spaces if, after stripping leading and trailing ASCII whitespace from it, it is a valid URL string.

`前後~空白~可の妥当かつ空でない~URL@ とは、`前後の~ASCII空白~列を剥いだ$結果が`妥当かつ空でない~URL$になる文字列である 。 ◎ A string is a valid non-empty URL potentially surrounded by spaces if, after stripping leading and trailing ASCII whitespace from it, it is a valid non-empty URL.

この仕様は、予約済みかつ解決不能な `about_$sc ~URL `ABOUT$r として、次の~URLを定義する: ◎ ↓

`about_legacy-compat@sc
これは、~XML~toolとの互換性に必要なとき,`~HTML文書$内の `DOCTYPE$ にて利用される。 ◎ This specification defines the URL about:legacy-compat as a reserved, though unresolvable, about: URL, for use in DOCTYPEs in HTML documents when needed for compatibility with XML tools. [ABOUT]
`about_html-kind@sc
これは、~media-trackの種類のための識別子として利用される。 ◎ This specification defines the URL about:html-kind as a reserved, though unresolvable, about: URL, that is used as an identifier for kinds of media tracks. [ABOUT]
`about_srcdoc@sc
これは、`~iframe-srcdoc文書$の`~URL$docに利用される。 ◎ This specification defines the URL about:srcdoc as a reserved, though unresolvable, about: URL, that is used as the URL of iframe srcdoc documents. [ABOUT]

`文書$ %文書 の `~fallback基底~URL@ は、次を走らせて得られる`~URL~record$である: ◎ The fallback base URL of a Document object document is the URL record obtained by running these steps:

  1. %閲覧文脈 ~LET %文書 が`属する閲覧文脈$ ◎ ↓
  2. ~IF[ %文書 は`~iframe-srcdoc文書$である ] ⇒ ~RET [[ %閲覧文脈 の`閲覧文脈~容器$ ]の`~node文書$ ]の`文書~基底~URL$ ◎ If document is an iframe srcdoc document, then return the document base URL of document's browsing context's browsing context container's node document.
  3. ~IF[ %文書 の`~URL$doc ~EQ `about_blank$sc ]~AND[ %閲覧文脈 の`作成元~閲覧文脈$ ~NEQ ε ] ⇒ ~RET %文書 の`作成元の基底~URL$ ◎ If document's URL is about:blank, and document's browsing context has a creator browsing context, then return the creator base URL.
  4. ~RET %文書 の`~URL$doc ◎ Return document's URL.

`文書$ %文書 の `文書~基底~URL@ は、次を走らせて得られる`絶対~URL$である: ◎ The document base URL of a Document object is the absolute URL obtained by running these steps:

  1. %base ~LET %文書 内の `~hrefM$a 属性を有するような `base$e 要素のうち,`木~順序$で最初のもの ◎ If there is no base element that has an href attribute in the Document, then the document base URL is the Document's fallback base URL; abort these steps.
  2. ~RET [ %base ~EQ ε ならば %文書 の`~fallback基底~URL$ / ~ELSE_ %base の`凍結~基底~URL$ ◎ Otherwise, the document base URL is the frozen base URL of the first base element in the Document that has an href attribute, in tree order.

2.4.2. ~URLの構文解析

~URLの構文解析は、文字列を入力に,それが表現する`~URL~record$を得る処理-である。 この処理は WHATWG `URL$r 標準にて定義されているが、簡便にするため,~HTML標準では,それに対する~wrapperを定義する。 ◎ Parsing a URL is the process of taking a string and obtaining the URL record that it represents. While this process is defined in the WHATWG URL standard, the HTML standard defines a wrapper for convenience. [URL]

注記: この~wrapperが有用になるのは、`~URL構文解析器$に用いる文字~符号化方式を,旧来の理由から[ 文書/環境~設定群~obj ]に合致させる必要がある場合に限られる。 該当しない事例では、`~URL構文解析器$を直接的に利用できる。 ◎ This wrapper is only useful when the character encoding for the URL parser has to match that of the document or environment settings object for legacy reasons. When that is not the case the URL parser can be used directly.

所与の`~URL$ %~url を,所与の %基底~obj に `相対的に構文解析-@ するときは、以下に述べる手続きを利用し~MUST — ここで:

  • %基底~obj は、次のいずれかである ⇒ `文書$ / `環境~設定群~obj$
  • `結果の~URL~record@ は、この手続きの結果として定義され,[ ~error, または`~URL~record$ ]になる。
  • `結果の~URL文字列@ は、この手続きの結果 %結果 が[ ~errorならば ~error / ~ELSE_ `~URLを直列化する$( %結果 ) ]として定義される。
◎ To parse a URL url, relative to either a document or environment settings object, the user agent must use the following steps. Parsing a URL either results in failure or a resulting URL string and resulting URL record.
  1. ( %符号化方式, %基底~URL ) ~LET %基底~obj に応じて,次で与えられる値:

    `文書$
    %基底~obj の ( `文書~符号化方式$, `文書~基底~URL$ )
    `環境~設定群~obj$
    %基底~obj により指定される ( `~API~URL符号化方式$, `~API基底~URL$ )
    ◎ Let encoding be document's character encoding, if document was given, and environment settings object's API URL character encoding otherwise. ◎ Let baseURL be document's base URL, if document was given, and environment settings object's API base URL otherwise.
  2. %~URL~record ~LET `~URL構文解析する$( %~url, %基底~URL, %符号化方式 ) ◎ Let urlRecord be the result of applying the URL parser to url, with baseURL and encoding.
  3. ~IF[ %~URL~record ~EQ `失敗^i ] ⇒ ~RET ~error ◎ If urlRecord is failure, then abort these steps with an error.
  4. ~RET %~URL~record ◎ Let urlString be the result of applying the URL serializer to urlRecord. ◎ Return urlString as the resulting URL string and urlRecord as the resulting URL record.

2.4.3. 基底~URLに対する動的な変化

文書の `文書~基底~URL$ が変化したとき、その文書~内のすべての要素は,その`基底~URLの変化により影響される$ `DOM$r。 ◎ When a document's document base URL changes, all elements in that document are affected by a base URL change.

要素 %要素 が`基底~URLの変化により影響される$ときに走らす`基底~URL変更-手続き$ `DOM$r は、次で与えられる: ◎ The following are base URL change steps, which run when an element is affected by a base URL change (as defined by the DOM specification):

%要素 は`~hyperlink$を作成するものである場合: ◎ If the element creates a hyperlink

~IF[ その~hyperlinkにより識別される`~URL$から導出される~dataは表示に影響している(~URLは利用者に示されているなど) ] ⇒ ~UAは次を行うべきである ⇒ 当の `href$a 属性を %要素 の`~node文書$に`相対的に構文解析-$し直した上で,該当する~UIを適切に更新する。 ◎ If the URL identified by the hyperlink is being shown to the user, or if any data derived from that URL is affecting the display, then the href attribute should be reparsed relative to the element's node document and the UI updated appropriately.

例えば~CSS `link$ps / `visited$ps `疑似類$は、影響され得る。 ◎ For example, the CSS :link/:visited pseudo-classes might have been affected.

~IF[ その~hyperlinkは `ping$a 属性を有する ]~AND[ その`~URL$(たち)は利用者に示されている ] ⇒ ~UAは次を行うべきである ⇒ 当の `ping$a 属性の各~tokenを %要素 の`~node文書$に`相対的に構文解析-$し直した上で,該当する~UIを適切に更新する。 ◎ If the hyperlink has a ping attribute and its URL(s) are being shown to the user, then the ping attribute's tokens should be reparsed relative to the element's node document and the UI updated appropriately.

%要素 は `cite^a 属性を有する[ `q$e / `blockquote$e / `ins$e / `del$e ]要素である場合: ◎ If the element is a q, blockquote, ins, or del element with a cite attribute
~IF[ `cite^a 属性から識別される`~URL$から導出される~dataは表示に影響している(~URLは利用者に示されているなど) ] ⇒ ~UAは次を行うべきである ⇒ 当の`~URL$を %要素 の`~node文書$に`相対的に構文解析-$し直した上で,該当する~UIを適切に更新する。 ◎ If the URL identified by the cite attribute is being shown to the user, or if any data derived from that URL is affecting the display, then the URL should be reparsed relative to the element's node document and the UI updated appropriately.
他の場合:
%要素 は直接的に影響されない。 ◎ The element is not directly affected.
具体的には、基底~URLを変更しても, `img$e 要素により表示されている画像には影響しない — ~scriptからの `src$m ~IDL属性に対する後続の~accessに対しては,新たな`絶対~URL$が返されることになるが、示されている画像には対応しなくなるであろう。 ◎ For instance, changing the base URL doesn't affect the image displayed by img elements, although subsequent accesses of the src IDL attribute from script will return a new absolute URL that might no longer correspond to the image being shown.

2.5. 資源の~fetching

2.5.1. 各種用語

~network~errorでない】 `応答$は、次の種類に大別される `FETCH$r :

`~CORS同一生成元@
`種別$rs ~IN { `basic^l, `cors^l, `default^l } なるもの。
`~CORS非同一生成元@
`種別$rs ~IN { `opaque^l, `opaqueredirect^l } なるもの。
◎ A response whose type is "basic", "cors", or "default" is CORS-same-origin. [FETCH] ◎ A response whose type is "opaque" or "opaqueredirect" is CORS-cross-origin.

`応答$の `非安全~応答@ は、その`内部~応答$rsが[ あれば それ / なければ`応答$自身 ]である。 ◎ A response's unsafe response is its internal response if it has one, and the response itself otherwise.

`~CORSになり得る要請を作成する@ ときは、所与の ( %~url, %行先, %~CORS属性~状態, %同一生成元~fallback~flag(省略時は ~OFF )) に対し,次を走らす: ◎ To create a potential-CORS request, given a url, destination, corsAttributeState, and an optional same-origin fallback flag, run these steps:

  1. %~mode ~LET [ %~CORS属性~状態 ~EQ `No CORS$st ならば `no-cors^l / ~ELSE_ `cors^l ] ◎ Let mode be "no-cors" if corsAttributeState is No CORS, and "cors" otherwise.
  2. ~IF[ %同一生成元~fallback~flag ~EQ ~ON ]~AND[ %~mode ~EQ `no-cors^l ] ⇒ %~mode ~SET `same-origin^l ◎ If same-origin fallback flag is set and mode is "no-cors", set mode to "same-origin".
  3. %資格証~mode ~LET `include^l ◎ Let credentialsMode be "include".
  4. ~IF[ %~CORS属性~状態 ~EQ `Anonymous$st ] ⇒ %資格証~mode ~SET `same-origin^l ◎ If corsAttributeState is Anonymous, set credentialsMode to "same-origin".
  5. %要請 ~LET 次のようにされた新たな`要請$

    • `~url$rq ~SET %~url
    • `行先$rq ~SET %行先
    • `~mode$rq ~SET %~mode
    • `資格証~mode$rq ~SET %資格証~mode
    • `~URL資格証~利用~mode$rq ~SET ~ON
    ◎ Let request be a new request whose url is url, destination is destination, mode is mode, credentials mode is credentialsMode, and whose use-URL-credentials flag is set.

2.5.2. 資源の型の決定-法

資源の `Content-Type ~metadata@ は、 WHATWG MIME Sniffing 標準 `MIMESNIFF$r による要件に整合する方式で,得られ, 解釈され~MUST。 ◎ The Content-Type metadata of a resource must be obtained and interpreted in a manner consistent with the requirements of the WHATWG MIME Sniffing standard. [MIMESNIFF]

資源から`算出される~MIME型$は、 `MIMESNIFF$r に与えられる[ 関連する~octet列から `sniffed media type^i を見出すための要件 ]に整合する方式で,見出され~MUST。 ◎ The computed MIME type of a resource must be found in a manner consistent with the requirements given in the WHATWG MIME Sniffing standard. [MIMESNIFF]

次に挙げる規則も `MIMESNIFF$r にて定義され、`~MIME型$を返す:

  • `特に画像を~sniffする規則$
  • `資源は~textか~binaryかを判別する規則$
  • `特に音声, 動画を~sniffする規則$
◎ The rules for sniffing images specifically, the rules for distinguishing if a resource is text or binary, and the rules for sniffing audio and video specifically are also defined in the WHATWG MIME Sniffing standard. These rules return a MIME type as their result. [MIMESNIFF]

`MIMESNIFF$r による規則には正確に従うことが絶対必要である。 内容~型~検出に対し,~serverが予期するものと異なる経験則を利用するような~UAにおいては、保安上の問題が生じ得る。 更なる詳細は、その仕様を見よ。 ◎ It is imperative that the rules in the WHATWG MIME Sniffing standard be followed exactly. When a user agent uses different heuristics for content type detection than the server expects, security problems can occur. For more details, see the WHATWG MIME Sniffing standard. [MIMESNIFF]

2.5.3. `meta^e 要素から文字~符号化方式を抽出する

`meta 要素から符号化方式を抽出する@ ~algoは、所与の文字列 %入力 に対し[ `文字~符号化方式$, ε(なし) ]のいずれかを返す: ◎ The algorithm for extracting a character encoding from a meta element, given a string s, is as follows. It either returns a character encoding or nothing.

  1. %位置 ~LET %入力 の先頭の文字を指している`位置~変数$ ◎ Let position be a pointer into s, initially pointing at the start of the string.
  2. ~WHILE 無条件:

    1. ~IF[ %入力 の %位置 以降の部分に`~ASCII大小無視$で `charset^l に合致する文字列がある ] ⇒ %位置 ~SET 該当する文字列のうち,最初のものの直後を指す位置
    2. ~ELSE ⇒ ~RET ε
    3. %入力 内の %位置 から`~ASCII空白を読飛ばす$
    4. ~IF[ %位置↗ ~EQ `003D^U `=^smb ] ⇒ ~BREAK
    ◎ Loop: Find the first seven characters in s after position that are an ASCII case-insensitive match for the word "charset". If no such match is found, return nothing and abort these steps. ◎ Skip any ASCII whitespace that immediately follow the word "charset" (there might not be any) ◎ If the next character is not a U+003D EQUALS SIGN (=), then move position to point just before that next character, and jump back to the step labeled loop.
  3. %入力 内の %位置 から`~ASCII空白を読飛ばす$ ◎ Skip any ASCII whitespace that immediately follow the equals sign (there might not be any).
  4. ~IF[ %位置↗ ~EQ ε ] ⇒ ~RET ε ◎ ↓
  5. %符号化方式 ~LET ε ◎ ↓
  6. ~IF[ %位置↗ ~IN { `0022^U `"^smb, `0027^U `'^smb } ]:

    1. %引用符 ~LET %位置↗
    2. %位置 ~INCBY 1
    3. %符号化方式 ~SET %入力 内の %位置 から %引用符 以外の`符号位置~並びを収集-$した結果
    4. ~IF[ %位置↗ ~NEQ %引用符 ] ⇒ ~RET ε
    ◎ Process the next character as follows: • If it is a U+0022 QUOTATION MARK character (") and there is a later U+0022 QUOTATION MARK character (") in s • If it is a U+0027 APOSTROPHE character (') and there is a later U+0027 APOSTROPHE character (') in s •• Return the result of getting an encoding from the substring that is between this character and the next earliest occurrence of this character. • If it is an unmatched U+0022 QUOTATION MARK character (") • If it is an unmatched U+0027 APOSTROPHE character (') • If there is no next character •• Return nothing.
  7. ~ELSE ⇒ %符号化方式 ~SET %入力 内の %位置 から { `~ASCII空白$, `003B^U `;^smb } 以外の`符号位置~並びを収集-$した結果 ◎ • Otherwise •• Return the result of getting an encoding from the substring that consists of this character up to but not including the first ASCII whitespace or U+003B SEMICOLON character (;), or the end of s, whichever comes first.
  8. ~RET [ %符号化方式 から`符号化方式を取得-$した結果 ~NEQ `失敗^i ならば その結果 / ~ELSE_ ε ] ◎ ↑

この~algoは、~HTTP仕様のものとは別個の形をとる(例えば、~HTTPでは,一重引用符( `0027^U `'^smb )の利用は許容されず、また,この~algoが~supportしない ~backslashによる~escapeの仕組みを~supportすることが要求されている)。 この~algoは,歴史的に~HTTPに関係する文脈で利用されていたが、実装により~supportされる構文は,あるときから分岐した。 `HTTP$r ◎ This algorithm is distinct from those in the HTTP specification (for example, HTTP doesn't allow the use of single quotes and requires supporting a backslash-escape mechanism that is not supported by this algorithm). While the algorithm is used in contexts that, historically, were related to HTTP, the syntax as supported by implementations diverged some time ago. [HTTP]

2.5.4. ~CORS 設定群~属性

内容~属性には、 `~CORS設定群~属性@ とされるものもある。 それは、`列挙ed属性$である。 そのような属性~用の[ ~keyword, および 対応付けられる状態 ]を,次に挙げる: ◎ A CORS settings attribute is an enumerated attribute. The following table lists the keywords and states for the attribute — the keywords in the left column map to the states in the cell in the second column on the same row as the keyword.

`use-credentials@v
`Use Credentials@st 状態( “資格証を利用する” )に対応付けられる。
要素による`要請$の ( `~mode$rq, `資格証~mode$rq ) を ( `cors^l, `include^l ) に設定する。
`anonymous@v
空~文字列
`妥当でない値に対する既定$
いずれも `Anonymous@st 状態 ( “匿名” )に対応付けられる。 空~文字列も,~keywordとして妥当である。
要素による`要請$の ( `~mode$rq, `資格証~mode$rq ) を ( `cors^l, `same-origin^l ) に設定する。
`反映$の目的においては、 `Anonymous$st 状態に対する正準的な文字大小は `anonymous$v とする。
`値なしに対する既定$(属性の省略-時)
`No CORS@st 状態に対応付けられる。
◎ Keyword | State | Brief description anonymous | Anonymous | Requests for the element will have their mode set to "cors" and their credentials mode set to "same-origin". use-credentials | Use Credentials | Requests for the element will have their mode set to "cors" and their credentials mode set to "include". ◎ The empty string is also a valid keyword, and maps to the Anonymous state. The attribute's invalid value default is the Anonymous state. For the purposes of reflection, the canonical case for the Anonymous state is the anonymous keyword. The missing value default, used when the attribute is omitted, is the No CORS state.

2.5.5 ~referrer施策~属性

内容~属性には、 `~referrer施策~属性@ とされるものもある。 それは、`列挙ed属性$である。 各 `~referrer施策$ — 空~文字列も含む — は、この属性~用の~keywordを与え,同じ名前の状態に対応付けられる。 ◎ A referrer policy attribute is an enumerated attribute. Each referrer policy, including the empty string, is a keyword for this attribute, mapping to a state of the same name.

[ `妥当でない値に対する既定$, `値なしに対する既定$ ]は、いずれも,空~文字列~状態とする。 ◎ The attribute's invalid value default and missing value default are both the empty string state.

これらの状態による各種`~fetch$の処理~modelへの影響0については、この仕様を通して, および `FETCH$r `REFERRERPOLICY$r にて,より詳細に定義される。 ◎ The impact of these states on the processing model of various fetches is defined in more detail throughout this specification, in the WHATWG Fetch standard, and in Referrer Policy. [FETCH] [REFERRERPOLICY]

注記: [ 所与の`~fetch$がどの処理~modelを利用するか ]に寄与し得る情報0には,いくつかあり、`~referrer施策~属性$は その一つである。 一般に、これらの情報0は,次の順序で処理される: ◎ Several signals can contribute to which processing model is used for a given fetch; a referrer policy attribute is only one of them. In general, the order in which these signals are processed are:

  1. 最初に、~link型 `noreferrer$v の~~存在。 ◎ First, the presence of a noreferrer link type;
  2. `~referrer施策~属性$の値。 ◎ Then, the value of a referrer policy attribute;
  3. `~nameM$a 属性が `referrer$v に設定された `meta$e 要素の~~存在。 ◎ Then, the presence of any meta element with name attribute set to referrer.
  4. 最後に、 `Referrer-Policy$h ~header。 ◎ Finally, the `Referrer-Policy` HTTP header.