2. 共通基盤

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

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

2.1. 各種用語

この仕様は、同じ文脈~内で[ ~HTML/~XML ]属性, および~IDL属性( ~IDL~interfaceに定義される属性)の両者を指すことが多い。 どちらを指すか明白でない所では、[ ~HTML/~XML ]属性を指すときは `内容~属性@ と記され、~IDL属性を指すときは `~IDL属性@ と記される。 同様に、用語 “~prop” も[ ~JS~obj~prop, ~CSS~prop ]の両者に利用される。 多義的になる所では、順に `~obj~prop^dfn, `~CSS~prop^dfn と記される。 ◎ This specification refers to both HTML and XML attributes and IDL attributes, often in the same context. When it is not clear which is being referred to, they are referred to as content attributes for HTML and XML attributes, and IDL attributes for those defined on IDL interfaces. Similarly, the term "properties" is used for both JavaScript object properties and CSS properties. When these are ambiguous they are qualified as object properties and CSS properties respectively.

一般に、仕様にて,ある特色機能を[ `~HTML構文$, `~XML構文$ ]のいずれかに適用するよう定められる所では、他方も含まれる。 特色機能を,この二つの言語の片方にのみ特に適用する所では、次のように,他方の形式には適用されないものと定められる ⇒ “~HTML に対しては、 ... (これは~XMLには適用されない)”。 ◎ Generally, when the specification states that a feature applies to the HTML syntax or the XML syntax, it also includes the other. When a feature specifically only applies to one of the two languages, it is called out by explicitly stating that it does not apply to the other format, as in "for HTML, ... (this does not apply to XML)".

この仕様における用語 `文書@ は、~HTMLの~~任意の利用を指す — 短い静的な文書から 多彩な~multimediaを伴う長い小論や報告書,更には本格的な対話的~appまでににわたるような。 この用語は、文脈に依存して[ `文書$0とその 子孫~DOM木, ], [ `~HTML構文$ / `~XML構文$ を利用して直列化された~byte~stream ]のいずれかを指す: ◎ This specification uses the term document to refer to any use of HTML, ranging from short static documents to long essays or reports with rich multimedia, as well as to fully-fledged interactive applications. The term is used to refer both to Document objects and their descendant DOM trees, and to serialized byte streams using the HTML syntax or the XML syntax, depending on context.

  • ~DOM構造の文脈における用語 `~HTML文書$ / `~XML文書$ は、~DOM仕様 `DOM$r にて定義される,二つの異なる~modeを指す。 `文書$0は、このいずれかの~mode下に属する。 (そのような利用は、常にその定義に~hyperlinkされる) ◎ In the context of the DOM structures, the terms HTML document and XML document are used as defined in the DOM specification, and refer specifically to two different modes that Document objects can find themselves in. [DOM] (Such uses are always hyperlinked to their definition.)
  • ~byte~streamの文脈における用語[ ~HTML文書 / ~XML文書 ]は、[ `~HTML~MIME型$ / `~XML~MIME型$ ]の資源を指す。 ◎ In the context of byte streams, the term HTML document refers to resources labeled as text/html, and the term XML document refers to resources labeled with an XML MIME type.

~~記述を単純にするため、利用者~向けに文書を具現化する仕方を指す際に[ “示される( shown )” / “表示される( displayed )” / “可視の( visible )” ]などの語が利用されることもある。 これらの用語は、視覚的~媒体のみを含意するものではなく、他の媒体にも,等価な仕方で適用されるものと見なされ~MUST。 ◎ For simplicity, terms such as shown, displayed, and visible might sometimes be used when referring to the way a document is rendered to the user. These terms are not meant to imply a visual medium; they must be considered to apply to other media in equivalent ways.

ある~algo %A が~algo %B を~callしている下で,~algo %B にて[ ~RET / “〜を返す” ]と記された所では、実装は, %A において %B を~callした所から継続し~MUST。 ◎ ↓

一部の~algoにおいては、[ `並列的に@ 走らす ]と記される所がある — これは、その~algoの後続の手続きを,仕様~内の他の~logic(例えば `~event-loop$)と同時並行的に走らすことを意味する。 この仕様は、これが達成される精確な仕組みは定義しない — 例えば、時間を共有する協調的[ multitasking, fibers, threads, processes ], あるいは異なる[ hyperthread, core, CPU, machine ]の利用, 等々。 対照的に、 `即時に@ 走らすような演算は、現在~走らせている~taskを中断して, その演算を走らせ終えてから, 中断した~taskを再開し~MUST。 ◎ When an algorithm B says to return to another algorithm A, it implies that A called B. Upon returning to A, the implementation must continue from where it left off in calling B. Some algorithms run in parallel; this means that the algorithm's subsequent steps are to be run, one after another, at the same time as other logic in the specification (e.g. at the same time as the event loop). This specification does not define the precise mechanism by which this is achieved, be it time-sharing cooperative multitasking, fibers, threads, processes, using different hyperthreads, cores, CPUs, machines, etc. By contrast, an operation that is to run immediately must interrupt the currently running task, run itself, and then resume the previously running task.

用語 “黒地透明” は、 ( ~red, ~green, ~blue, ~alpha ) 各~channelがすべて 0 にされた色を指す。 ◎ The term "transparent black" refers to the color with red, green, blue, and alpha channels all set to zero.

2.1.1. 資源

資源に対する用語 `~support^dfn される, 〜されている, 〜する, 等々は、~UAの実装が当の外部~資源の意味論を復号する能力を有することを指す。 実装は、外部~資源の[ 形式/型 ]を,その形式/型において必須とされる側面を無視することなく処理できるならば、~supportするという。 特定の資源が~supportされるかどうかは、その資源の形式に備わる どの特色機能が利用-中にあるかにも依存し得る。 ◎ The specification uses the term supported when referring to whether a user agent has an implementation capable of decoding the semantics of an external resource. A format or type is said to be supported if the implementation can process an external resource of that format or type without critical aspects of the resource being ignored. Whether a specific resource is supported can depend on what features of the resource's format are in use.

例えば PNG 画像は、その~pixel~dataを復号して具現化できるならば、その画像に,実装が知識を有さない~animation~dataが包含されていたとしても、~supportされる形式と見なされるであろう。 ◎ For example, a PNG image would be considered to be in a supported format if its pixel data could be decoded and rendered, even if, unbeknownst to the implementation, the image also contained animation data.

実装は、 MPEG-4 動画~fileの~metadataから動画の寸法を決定できたとしても,利用されている圧縮~形式を~supportしないならば、その形式を~supportするとは見なされないことになる。 ◎ An MPEG-4 video file would not be considered to be in a supported format if the compression format used was not supported, even if the implementation could determine the dimensions of the movie from the file's metadata.

一部の他の仕様 — 特に~HTTP仕様 — において `表現^i ( representation )と称されるもの `参照先^tnote は、この仕様では `資源@ と称される。 `HTTP$r ◎ What some specifications, in particular the HTTP specification, refer to as a representation is referred to in this specification as a resource. [HTTP]

資源の `必須の下位資源@ とは、その資源を正しく処理するためには,可用になる必要がある資源である。 どの資源が必須( critical )と見なされるかは、当の資源の形式を定義する仕様により定義される。 ◎ A resource's critical subresources are those that the resource needs to have available to be correctly processed. Which resources are considered critical or not is defined by the specification that defines the resource's format.

2.1.2. ~XMLとの互換性

~HTMLから~XMLへの移行を容易にするため、この仕様に適合している~UAは、少なくとも ~DOM/~CSSの目的において,~HTMLにおける要素を `~HTML名前空間$( `http://www.w3.org/1999/xhtml^l )に属させることになる。 この仕様の用語 `~HTML要素@ は、その名前空間に属する~~任意の要素を指す — 要素が~XML文書~内にある場合でも。 ◎ To ease migration from HTML to XML, UAs conforming to this specification will place elements in HTML in the http://www.w3.org/1999/xhtml namespace, at least for the purposes of the DOM and CSS. The term "HTML elements", when used in this specification, refers to any element in that namespace, even in XML documents.

他から定められない限り、この仕様に現れる:

  • どの要素も, `~HTML名前空間$に属する。
  • どの属性も,属する名前空間はない。
◎ Except where otherwise stated, all elements defined or mentioned in this specification are in the HTML namespace ("http://www.w3.org/1999/xhtml"), and all attributes defined or mentioned in this specification have no namespace.

用語 `要素~型@ とは、[ 所与の局所~名を持つ, かつ 所与の名前空間に属する ]ような要素からなる集合を指す。 例えば `button$e 要素の要素~型は `button$e であり、次を意味する:

  • その局所~名は `button^l である,かつ
  • (上述にて暗黙的に定義したように) `~HTML名前空間$に属する。
◎ The term element type is used to refer to the set of elements that have a given local name and namespace. For example, button elements are elements with the element type button, meaning they have the local name "button" and (implicitly as defined above) the HTML namespace.

次を満たす属性~名は、 `~XML互換@ とされる:

  • `XML$r にて定義される `Name$p 生成規則に合致する,かつ
  • ❝: は包含しない。
◎ Attribute names are said to be XML-compatible if they match the Name production defined in XML and they contain no U+003A COLON characters (:). [XML]

2.1.3. DOM 木

要素または属性 が[ `無視される@ / 何か他の値として扱われる / それが他の何かであったかのように取扱われる ]ものと定められる所は、[ 当の~nodeが~DOM内にある後における~nodeの処理 ]のみを指す。 ~UAは、そのような状況において~DOMを変異させては~MUST_NOT。 ◎ When it is stated that some element or attribute is ignored, or treated as some other value, or handled as if it was something else, this refers only to the processing of the node after it is in the DOM. A user agent must not mutate the DOM in such situations.

内容~属性が所与の値 %V に `変更される/変化した^dfn と記されるのは、 %V が元の値と異なる場合に限られる — 属性に その元の値と同じ値を設定しても,それは変化しない。 ◎ A content attribute is said to change value only if its new value is different than its previous value; setting an attribute to a value it already has does not change it.

[ 属性~値 / `Text$I ~node / 文字列 ]に対し利用される用語 `空^dfn は、~textの長さが 0 であることを意味する(すなわち、 `0020^U SPACE や`制御~文字$も包含しない)。 ◎ The term empty, when used for an attribute value, Text node, or string, means that the length of the text is zero (i.e., not even containing controls or U+0020 SPACE).

要素の `子~text内容@ は、要素の子である `Text$I ~nodeすべての`~data$を,~nodeの`木~順序$で連結した結果である( ~commentや要素など,他種の~nodeは無視する)。 ◎ An element's child text content is the concatenation of the data of all the Text nodes that are children of the element (ignoring any other nodes such as comments or elements), in tree order.

所与の~node %A, %B に対し:

  • %A が %B の中へ `挿入される@node とは、 ( ~node %A, 新たな親 %B ) を引数に`挿入-時の手続き$が呼出されることをいう。
  • 逆に, %A が %B から `除去される@node とは、 ( 除去される~node %A, ~nodeの元の親 %B ) を引数に`除去-時の手続き$が呼出されることをいう。
◎ A node A is inserted into a node B when the insertion steps are invoked with A as the argument and A's new parent is B. Similarly, a node A is removed from a node B when the removing steps are invoked with A as the removedNode argument and B as the oldParent argument.

所与の~node %N に対し:

  • %N は `文書~内に挿入された@ とは ⇒ %N は`文書~木~内$にない下で、 %N を引数に`挿入-時の手続き$が呼出され, %N は`文書~木~内$にあるようになったことをいう。

  • %N は `文書から除去された@ とは、逆に ⇒ %N は`文書~木~内$にある下で、 %N を引数に`除去-時の手続き$が呼出され, %N は`文書~木~内$にないようになったことをいう。

【 ~nodeが元々`文書~木~内$にあったとしても, “挿入し直される” ような処理-時には、除去-, 挿入- 2 つの~eventが連続して生じるかもしれない。 】【 この定義が、変化させる手段も含めているのか,[ 単に,状態の変化のみに基づくものであって、状態を変化させる手段は述べられたものに限られる ]ことを述べているのか、判別できない。 下の定義も同様。 】

◎ A node is inserted into a document when the insertion steps are invoked with it as the argument and it is now in a document tree. Analogously, a node is removed from a document when the removing steps are invoked with it as the argument and it is now no longer in a document tree.

所与の~node %N に対し:

  • %N は `接続された@ ( becomes connected )とは ⇒ %N は`接続されて$いない下で、 %N を引数に`挿入-時の手続き$が呼出され, %N は`接続されて$いるようになったことをいう。
  • %N は `切断された@ ( becomes disconnected )とは、逆に ⇒ %N は`接続されて$いる下で、 %N を引数に`除去-時の手続き$が呼出され, %N は`接続されて$いないようになったことをいう。

【 ~nodeが元々`接続されて$いたとしても, “接続し直される” ような処理-時には、切断-, 接続- 2 つの~eventが連続して生じるかもしれない。 】

◎ A node becomes connected when the insertion steps are invoked with it as the argument and it is now connected. Analogously, a node becomes disconnected when the removing steps are invoked with it as the argument and it is now no longer connected.

所与の~node %N に対し:

  • %N は `閲覧文脈に接続されて@ いるとは、 %N が次を満たすことをいう:

    • %N は`接続されて$いる~AND
    • %N の`~shadowも含む根$が`属する閲覧文脈$ ~NEQ ε
  • %N は `閲覧文脈に接続された@ ( becomes browsing-context connected )とは ⇒ %N は`閲覧文脈に接続されて$いない下で、 %N を引数に`挿入-時の手続き$が呼出され, %N は`閲覧文脈に接続されて$いるようになったことをいう。
  • %N は `閲覧文脈から切断された@ ( becomes browsing-context disconnected )とは、逆に ⇒ %N は`閲覧文脈に接続されて$いる下で、[ %N を引数に`除去-時の手続き$が呼出された ]か, または[ %N の`~shadowも含む根$が`属する閲覧文脈$ ~EQ ε ]になった結果, %N は`閲覧文脈に接続されて$いないようになったことをいう。
◎ A node is browsing-context connected when it is connected and its shadow-including root has a browsing context. A node becomes browsing-context connected when the insertion steps are invoked with it as the argument and it is now browsing-context connected. A node becomes browsing-context disconnected either when the removing steps are invoked with it as the argument and it is now no longer browsing-context connected, or when its shadow-including root no longer has a browsing context.

2.1.4. ~scripting

所与の~interface `Foo^I に対する句 “`Foo^I ~obj” は、 “~interface `Foo^I を実装している~obj” の略記である。 ◎ The construction "a Foo object", where Foo is actually an interface, is sometimes used instead of the more accurate "an object implementing the interface Foo".

【 `Foo^I を継承する~interfaceを実装している~objも含まれる。 】

~IDL属性に対し、(例えば作者~scriptから)[ その値を得ようと/新たな値をあてがおうと ]~~試みられるときの挙動を記すときは、[ `取得子は…^dfn / `設定子は…^dfn ]のように表記される。

【 “~~取得子( ...’s getter )” は,原文では “On getting, ...” (訳すなら “被取得時” )であるが、同じ文脈で前者の getter も利用されている。 設定子( “...’s setter” / “On setting, ...” )についても同様。 ~web~platform全般にわたり,この 2 種類のどちらで表記しても特に違いはない/区別を要する箇所はないと見られるので、和訳では “取得子”, “設定子” の表記に統一している。 】【 ~IDL~methodにおける対応する表記( “..., when invoked, ...” )は、 “被呼出時には…” と記される。 】

◎ An IDL attribute is said to be getting when its value is being retrieved (e.g. by author script), and is said to be setting when a new value is assigned to it.

`~liveである@ とされた~DOM~objに対しては、その~obj上の[ 属性, ~method ]は、~dataの~snapshotではなく,実際の `すなわち,現在の^tnote 下層の~dataに対し演算され~MUST。 ◎ If a DOM object is said to be live, then the attributes and methods on that object must operate on the actual underlying data, not a snapshot of the data.

2.1.5. ~plugin

用語 `~plugin@ は、~UAが利用し,~UAにより定義される内容~handlerであって、~UAによる `文書$0の具現化の一部をなし得るが,[ `文書$0の`子~閲覧文脈$として動作する ]ことも, [ `文書$0の~DOMに `Node$I ~objを導入する ]こともないものを指す。 ◎ The term plugin refers to a user-agent defined set of content handlers used by the user agent that can take part in the user agent's rendering of a Document object, but that neither act as child browsing contexts of the Document nor introduce any Node objects to the Document's DOM.

そのような内容~handlerは、概して 第三者主体から提供される — ~UAも,自身に組込みの内容~handlerを~pluginとして指名できるが。 ◎ Typically such content handlers are provided by third parties, though a user agent can also designate built-in content handlers as plugins.

~UAは、~MIME型[ `text/plain$c / `application/octet-stream$c ]に対しては、登録済みの`~plugin$があるものと見なしては~MUST_NOT。 ◎ A user agent must not consider the types text/plain and application/octet-stream as having a registered plugin.

~pluginの一例として、利用者が PDF ~fileへ~navigateしたときに`閲覧文脈$内で~instance化される PDF ~viewerが挙げられる。 これは、~UA自身が PDF ~viewer部品を実装した主体であるかどうかに関わらず,~pluginに数えられることになる。 一方で、~UAが(自身の~UIを利用するのではなく,)別々の PDF ~viewer~appを起動させる場合、その~appは,この定義においては~pluginではない。 ◎ One example of a plugin would be a PDF viewer that is instantiated in a browsing context when the user navigates to a PDF file. This would count as a plugin regardless of whether the party that implemented the PDF viewer component was the same as that which implemented the user agent itself. However, a PDF viewer application that launches separate from the user agent (as opposed to using the same interface) is not a plugin by this definition.

注記: この仕様は、~pluginとやりとりする仕組みは定義しない — それは[ ~UA/~platform ]特有と予期されているので。 ~UAには、 Netscape Plugin ~API などの~pluginを~~選択的に組み込める仕組みを~supportするものもあれば、遠隔操作の内容~変換器を利用するものや, 一定の内容~型に対しては組込みの~pluginで~supportするものもある。 ~~実際、この仕様では,~UAによる~pluginの~supportは全く要求されない。 `NPAPI$r ◎ This specification does not define a mechanism for interacting with plugins, as it is expected to be user-agent- and platform-specific. Some UAs might opt to support a plugin mechanism such as the Netscape Plugin API; others might use remote content converters or have built-in support for certain types. Indeed, this specification doesn't require user agents to support plugins at all. [NPAPI]

~pluginは、 `sandbox$a 属性の意味論を尊守するならば, `保安化-@ し得る。 ◎ A plugin can be secured if it honors the semantics of the sandbox attribute.

例えば,保安化された~pluginは、~sandbox化された `iframe$e の内側で~instance化されたときには,その内容は~pop-up-windowを作成できなくされることになる。 ◎ For example, a secured plugin would prevent its contents from creating pop-up windows when the plugin is instantiated inside a sandboxed iframe.

~browserは、`~plugin$用に意図される外部~内容とやりとりするときには,特段の注意を払うべきである。 第三者主体の手による~softwareを~UA自身と同じ特権で走らせた場合、その~software内の脆弱性は,~UA内のそれと同等に危険になる。 ◎ Browsers should take extreme care when interacting with external content intended for plugins. When third-party software is run with the same privileges as the user agent itself, vulnerabilities in the third-party software become as dangerous as those in the user agent.

利用者が有する`~plugin$の集合は利用者ごとに異なり、利用者が一意に識別されるような機会を増やすような指紋収集の~~手段を提供するので、~UAには,どの利用者に対しても 正確に同じ`~plugin$の集合を~supportすることが奨励される。 ~FINGERPRINTING ◎ Since different users having different sets of plugins provides a fingerprinting vector that increases the chances of users being uniquely identified, user agents are encouraged to support the exact same set of plugins for each user.

2.1.6. 文字~符号化方式

`文字~符号化方式@( 参照先 )は、~byte~streamと~Unicode文字列との間で相互に変換する仕方であり, WHATWG Encoding 標準 `ENCODING$r にて定義される。 多義的にならない所では、単に “符号化方式” とも称される。 各 `符号化方式$には、[ `符号化方式~名@( 参照先 )と 1 個以上の `符号化方式~label@( 参照先 ) ]が~~定義されている。 ◎ A character encoding, or just encoding where that is not ambiguous, is a defined way to convert between byte streams and Unicode strings, as defined in the WHATWG Encoding standard. An encoding has an encoding name and one or more encoding labels, referred to as the encoding's name and labels in the Encoding standard. [ENCODING]

`UTF-16@ 符号化方式とは、`符号化方式~名$が[ `UTF-16BE$, または `UTF-16LE$ ]である符号化方式を指す。 `ENCODING$r ◎ A UTF-16 encoding is UTF-16BE or UTF-16LE. [ENCODING]

`符号化方式$のうち,`UTF-16$ でないものは、 `~ASCII互換@ という。 `ENCODING$r ◎ An ASCII-compatible encoding is any encoding that is not a UTF-16 encoding. [ENCODING]

注記: WHATWG Encoding 標準にて定義されていない`符号化方式$に対する~supportは禁制されるので、この仕様が`~ASCII互換$でないものとして扱う必要がある符号化方式は、 `UTF-16$ に限られる。 ◎ Since support for encodings that are not defined in the WHATWG Encoding standard is prohibited, UTF-16 encodings are the only encodings that this specification needs to treat as not being ASCII-compatible encodings.

2.1.7. 各種~適合性~class

【 この節の和訳は 別ページにて

2.1.8. 依存関係

【 この節の和訳は 別ページにて

2.1.9. 拡張性

【 この節の和訳は 別ページにて

2.1.10. XPath&XSLT との相互作用

【 この節の和訳は 別ページにて

2.2. 文字大小区別の有無と文字列の比較

2 つの文字列を `文字大小区別@ で比較するとは、符号位置ごとに正確に比較することを意味する。 ◎ Comparing two strings in a case-sensitive manner means comparing them exactly, code point for code point.

他から定められない限り,文字列は`文字大小区別$で比較され~MUST。 ◎ Except where otherwise stated, string comparisons must be performed in a case-sensitive manner.

【 この訳(または他の仕様の和訳)では、`文字大小区別$による比較は,単に “~EQ” で表現する(特に明示する必要がある場合を除いて)。 】

文字列 %~pattern が文字列 %S に `先頭一致@ するとは、 %L を %~pattern の文字~数とするとき,[ %~pattern ~EQ [ %S の中の,先頭から %L 個までの文字が成す文字列 ]]であることを意味する。 ◎ A string pattern is a prefix match for a string s when pattern is not longer than s and truncating s to pattern's length leaves the two strings as matches of each other.

2.3. 共通の小構文

【 この節の内容の和訳は、 別ページにて

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$xに利用される。 ◎ 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]

`文書$0 %文書 の `~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$x ~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$x ◎ Return the document's address.

`文書$0 %文書 の `文書~基底~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 は、次のいずれかである ⇒ `文書$0 / `環境~設定群~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 に応じて,次で与えられる値:

    `文書$0
    %基底~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 を`~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でない^tnote `応答$は、次の種類に大別される `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型$を返す:

◎ 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 ❝= ] ⇒ ~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 space characters 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 space characters that immediately follow the equals sign (there might not be any).
  4. %符号化方式 ~LET ε
  5. %位置↗ に応じて:

    ε
    ~RET ε
    ❝"
    1. %符号化方式 ~SET %入力 内の %位置 から ❝" 以外の`符号位置~並びを収集-$した結果
    2. ~IF[ %位置↗ ~NEQ ❝" ] ⇒ ~RET ε
    ❝'
    1. %符号化方式 ~SET %入力 内の %位置 から ❝' 以外の`符号位置~並びを収集-$した結果
    2. ~IF[ %位置↗ ~NEQ ❝" ] ⇒ ~RET ε
    その他
    %符号化方式 ~SET %入力 内の %位置 から { `~ASCII空白$, ❝; } 以外の`符号位置~並びを収集-$した結果
    ◎ 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. •• Return the result of getting an encoding from the substring that consists of this character up to but not including the first space character or U+003B SEMICOLON character (;), or the end of s, whichever comes first.
  6. ~RET [ %符号化方式 から`符号化方式を取得-$した結果 ~NEQ `失敗^i ならば その結果 / ~ELSE_ ε ] ◎ ↑

この~algoは、~HTTP仕様のものとは別個の形をとる(例えば、~HTTPでは,一重引用符( ❝' )の利用は許容されず、また,この~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, 状態 ]を挙げる。 表の一列目の~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.

~keyword 状態 概要
`anonymous@v `Anonymous@st ( “匿名” ) 要素に対する`要請$の `~mode$rqを `cors^l に, `資格証~mode$rqを `same-origin^l に設定する。 ◎ Requests for the element will have their mode set to "cors" and their credentials mode set to "same-origin".
`use-credentials@v `Use Credentials@st ( “資格証を利用” ) 要素に対する`要請$の `~mode$rqを `cors^l に, `資格証~mode$rqを `include^l に設定する。 ◎ Requests for the element will have their mode set to "cors" and their credentials mode set to "include".

空~文字列も妥当な~keywordであり、 `Anonymous$st 状態に対応付けられる。 属性の`妥当でない値に対する既定の状態$は、 `Anonymous$st 状態である。 `反映$の目的においては、 `Anonymous$st 状態に対する正準的な文字大小は `anonymous$v である。 属性の省略-時に利用される`値なしに対する既定の状態$は、 `No CORS@st 状態である。 ◎ 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施策$xは、空~文字列も含め,この属性に対する~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. 最後に、[ `Referrer-Policy$h ~headerや, `~nameM$a 属性が `referrer$v に設定された `meta$e 要素 ]を介して送達される,大域的な施策。 ◎ Finally, a global policy, delivered via the `Referrer-Policy` header or a meta element with name attribute set to referrer.

2.6. 共通の DOM ~interface

2.6.1. ~IDL属性による内容~属性の反映-法

一部の~IDL属性は、特定0の内容~属性を `反映-@ するものと定義される。 これは、その~IDL属性の[ 取得子 / 設定子 ]は,内容~属性の[ 現在の値を返す / 値を所与の値に変更する ]ことを意味する。 ◎ Some IDL attributes are defined to reflect a particular content attribute. This means that on getting, the IDL attribute returns the current value of the content attribute, and on setting, the IDL attribute changes the value of the content attribute to the given value.

以下,この節における `~IDL属性@V は、ある `要素@V 上の,ある `内容~属性@V を`反映-$しているものとする。 加えて:

  • `内容~値@V は、 `要素$V が `内容~属性$V を[ 有するならば その値 / 有さないならば ε ]とする。
  • `既定~値@V は、 `~IDL属性$V に対する既定の値が定義されて[ いるならば その値 / いなければ ε ]とする。
  • `指定~値@V は、 `~IDL属性$V の設定子に渡された値(~WebIDLに則って, `~IDL属性$V の型に変換された結果の値)を表すとする。

一般に,[ `内容~値$V ~EQ ε ]の下では、 `~IDL属性$V は:

  • 取得子は、(他が指定されない限り)[ `内容~値$V ~EQ 空~文字列 ]であったかのように動作し~MUST。
  • 設定子は、先ず, `要素$V に `内容~属性$V を追加し~MUST。
◎ In general, on getting, if the content attribute is not present, the IDL attribute must act as if the content attribute's value is the empty string; and on setting, if the content attribute is not present, it must first be added.

`USVString$I 型の `~IDL属性$V の挙動は、[ `内容~属性$V が 1 個の`~URL$を値にとる ]ものと定義されているならば,以下の定義に従わ~MUST:

  • 取得子は、次を走らす:

    1. ~IF[ `内容~値$V ~EQ ε ] ⇒ ~RET 空~文字列
    2. %~url ~LET `内容~値$V を `要素$V の`~node文書$に`相対的に構文解析-$した`結果の~URL文字列$
    3. ~IF [ %~url ~NEQ ~error ] ⇒ ~RET %~url ]
    4. ~RET `内容~値$V を `USVString$I 型に変換した結果
  • 設定子は、次を走らす:

    1. `内容~属性$V の値 ~SET `指定~値$V
◎ If a reflecting IDL attribute is a USVString attribute whose content attribute is defined to contain a URL, then on getting, if the content attribute is absent, the IDL attribute must return the empty string. Otherwise, the IDL attribute must parse the value of the content attribute relative to the element's node document and if that is successful, return the resulting URL string. If parsing fails, then the value of the content attribute must be returned instead, converted to a USVString. On setting, the content attribute must be set to the specified new value.

`DOMString$I 型の `~IDL属性$V の挙動は、[ `内容~属性$V が`列挙ed属性$である ]ならば,以下の定義に従わ~MUST: ◎ ↓

`~IDL属性$V は、ある集合 %S 内の `既知の値のみに制限され@ ている場合:

取得子は、次を走らす:

  1. ~IF[ `内容~値$V は[ %S 内の ある値 %V に結付けられている状態 ]を表現している ] ⇒ ~RET %V ( %V の文字大小は、正準的なそれとする)
  2. ~RET 空~文字列

設定子は、次を走らす:

  1. `内容~属性$V の値 ~SET `指定~値$V
◎ If a reflecting IDL attribute is a DOMString attribute whose content attribute is an enumerated attribute, and the IDL attribute is limited to only known values, then, on getting, the IDL attribute must return the conforming value associated with the state the attribute is in (in its canonical case), if any, or the empty string if the attribute is in a state that has no associated keyword value or if the attribute is not in a defined state (e.g. the attribute is missing and there is no missing value default). On setting, the content attribute must be set to the specified new value.
`~IDL属性$V は~nullableである場合:

取得子は、次を走らす:

  1. ~IF[ `内容~属性$V の状態 ~EQ `値なしに対する既定の状態$ ] ⇒ ~RET ~NULL
  2. ~RET `内容~属性$V の状態に結付けられている適合~値(正準的な文字大小とする)

設定子は、次を走らす:

  1. ~IF[ `指定~値$V ~EQ ~NULL ] ⇒ `要素$V から `内容~属性$V を除去する
  2. ~ELSE ⇒ `内容~属性$V の値 ~SET `指定~値$V
◎ If a reflecting IDL attribute is a nullable DOMString attribute whose content attribute is an enumerated attribute, then, on getting, if the corresponding content attribute is in its missing value default then the IDL attribute must return null, otherwise, the IDL attribute must return the conforming value associated with the state the attribute is in (in its canonical case). On setting, if the new value is null, the content attribute must be removed, and otherwise, the content attribute must be set to the specified new value.

上述に該当しない `DOMString$I 型, または `USVString$I 型の `~IDL属性$V の[ 取得子/設定子 ]は、文字大小を保全するように透過的に[ 取得する/設定する ]とする。 `すなわち、この節の冒頭に示した,一般~規則にそのまま従う。^tnote ◎ If a reflecting IDL attribute is a DOMString or USVString attribute but doesn't fall into any of the above categories, then the getting and setting must be done in a transparent, case-preserving manner.

`~IDL列挙~型$xの`~IDL属性$V の挙動は、以下の定義に従わ~MUST:

  • 取得子は、[ `内容~値$V ~IN [ その列挙~型がとり得る値 ]ならば その値 / ~ELSE_ `既定~値$V ]を返す `したがって、既定~値は,常に定義されることになる^tnote
  • 設定子は、[ `内容~属性$V の値 ~SET `指定~値$V ]にする
◎ If a reflecting IDL attribute is an IDL enumeration attribute, then, on getting, if the corresponding content attribute's value case-sensitively matches one of the enumerated values, then the IDL attribute must return the content attribute's value; otherwise it must return the content attribute's default value. On setting, the content attribute must be set to the specified new value.

`boolean$I 型の `~IDL属性$V の挙動は、以下の定義に従わ~MUST:

  • 取得子は、次を走らす:

    1. ~IF[ `内容~値$V ~NEQ ε ] ⇒ ~RET ~T
    2. ~RET ~F
  • 設定子は、次を走らす:

    1. ~IF[ `指定~値$V ~EQ ~F ] ⇒ `要素$V 上から `内容~属性$V を除去する
    2. ~ELSE ⇒ `内容~属性$V の値 ~SET 空~文字列

(これらは、`真偽~内容~属性$の規則に対応する。)

◎ If a reflecting IDL attribute is a boolean attribute, then on getting the IDL attribute must return true if the content attribute is set, and false if it is absent. On setting, the content attribute must be removed if the IDL attribute is set to false, and must be set to the empty string if the IDL attribute is set to true. (This corresponds to the rules for boolean content attributes.)

実数~型の `~IDL属性$V の挙動は、以下の定義に従わ~MUST: ◎ ↓

有符号~整数~型( `long$I )の `~IDL属性$V に対しては:
この種の `~IDL属性$V には、 `非~負数のみに制限され@ るものもある。 ◎ ↓

取得子は、次を走らす:

  1. ~IF[ `内容~値$V ~NEQ ε ]:
    1. %V ~LET `内容~値$V
    2. ~IF[ `~IDL属性$V は`非~負数のみに制限され$ている ] ⇒ %V ~SET %V を`非~負~整数として構文解析-$した結果
    3. ~ELSE ⇒ %V ~SET %V を`整数として構文解析-$した結果
    4. ~IF[ %V ~NEQ ~error ]~AND[ %V ~IN `~IDL属性$V の型がとり得る範囲 ] ⇒ ~RET %V
  2. ~IF [ `既定~値$V ~NEQ ε ] ⇒ ~RET `既定~値$V
  3. ~RET [ `~IDL属性$V は`非~負数のみに制限され$ているならば −1 / ~ELSE_ 0 ]

設定子は、次を走らす:

  1. ~IF[ `~IDL属性$V は`非~負数のみに制限され$ている ]~AND[ `指定~値$V ~LT 0 ] ⇒ ~THROW `IndexSizeError$E
  2. `内容~属性$V の値 ~SET `指定~値$V を表現するような`妥当な整数$のうち,可能な限り最短の文字列
◎ If a reflecting IDL attribute has a signed integer type (long) then, on getting, the content attribute must be parsed according to the rules for parsing signed integers, and if that is successful, and the value is in the range of the IDL attribute's type, the resulting value must be returned. If, on the other hand, it fails or returns an out of range value, or if the attribute is absent, then the default value must be returned instead, or 0 if there is no default value. On setting, the given value must be converted to the shortest possible string representing the number as a valid integer and then that string must be used as the new content attribute value. ◎ If a reflecting IDL attribute has a signed integer type (long) that is limited to only non-negative numbers then, on getting, the content attribute must be parsed according to the rules for parsing non-negative integers, and if that is successful, and the value is in the range of the IDL attribute's type, the resulting value must be returned. If, on the other hand, it fails or returns an out of range value, or if the attribute is absent, the default value must be returned instead, or −1 if there is no default value. On setting, if the value is negative, the user agent must throw an "IndexSizeError" DOMException. Otherwise, the given value must be converted to the shortest possible string representing the number as a valid non-negative integer and then that string must be used as the new content attribute value.
無符号~整数~型( `unsigned long$I )の `~IDL属性$V に対しては:
この種の `~IDL属性$V には:
  • (A) `非~zero数に制限され@る, あるいは
  • (B) `~fallbackありの下で非~zero数に制限され@る
ものもある。 (B) に該当する場合、当の~fallbackが何らかの `既定~値$V ~IN { 1 〜 2147483647 } を与えているものとして,以下を適用する。 ◎ ↓

取得子は、次を走らす:

  1. %下限 ~LET [ `~IDL属性$V は上述の (A), (B) いずれかに該当するならば 1 / ~ELSE_ 0 ]
  2. ~IF[ `内容~値$V ~NEQ ε ]:

    1. %V ~LET `内容~値$V を`非~負~整数として構文解析-$した結果
    2. ~IF[ %V ~NEQ ~error ]~AND[ %V ~IN { %下限 〜 2147483647 } ] ⇒ ~RET %V
  3. ~RET[ `既定~値$V ~NEQ ε ならば `既定~値$V / ~ELSE_ %下限 ]

設定子は、次を走らす:

  1. %V ~LET `指定~値$V
  2. ~IF[ `~IDL属性$V は`非~zero数に制限され$ている ]~AND[ %V ~EQ 0 ] ⇒ ~THROW `IndexSizeError$E
  3. %下限 ~LET [ `~IDL属性$V は上述の (A), (B) いずれかに該当するならば 1 / ~ELSE_ 0 ]
  4. ~IF[ %V ~NIN { %下限 〜 2147483647 } ] ⇒ %V ~SET [ `既定~値$V ~NEQ ε ならば `既定~値$V / ~ELSE_ %下限 ]
  5. `内容~属性$V の値 ~SET %V を表現するような`妥当な整数$のうち,可能な限り最短の文字列
◎ If a reflecting IDL attribute has an unsigned integer type (unsigned long) then, on getting, the content attribute must be parsed according to the rules for parsing non-negative integers, and if that is successful, and the value is in the range 0 to 2147483647 inclusive, the resulting value must be returned. If, on the other hand, it fails or returns an out of range value, or if the attribute is absent, the default value must be returned instead, or 0 if there is no default value. On setting, first, if the new value is in the range 0 to 2147483647, then let n be the new value, otherwise let n be the default value, or 0 if there is no default value; then, n must be converted to the shortest possible string representing the number as a valid non-negative integer and that string must be used as the new content attribute value. ◎ If a reflecting IDL attribute has an unsigned integer type (unsigned long) that is limited to only non-negative numbers greater than zero, then the behavior is similar to the previous case, but zero is not allowed. On getting, the content attribute must first be parsed according to the rules for parsing non-negative integers, and if that is successful, and the value is in the range 1 to 2147483647 inclusive, the resulting value must be returned. If, on the other hand, it fails or returns an out of range value, or if the attribute is absent, the default value must be returned instead, or 1 if there is no default value. On setting, if the value is zero, the user agent must throw an "IndexSizeError" DOMException. Otherwise, first, if the new value is in the range 1 to 2147483647, then let n be the new value, otherwise let n be the default value, or 1 if there is no default value; then, n must be converted to the shortest possible string representing the number as a valid non-negative integer and that string must be used as the new content attribute value. ◎ If a reflecting IDL attribute has an unsigned integer type (unsigned long) that is limited to only non-negative numbers greater than zero with fallback, then the behavior is similar to the previous case, but disallowed values are converted to the default value. On getting, the content attribute must first be parsed according to the rules for parsing non-negative integers, and if that is successful, and the value is in the range 1 to 2147483647 inclusive, the resulting value must be returned. If, on the other hand, it fails or returns an out of range value, or if the attribute is absent, the default value must be returned instead. On setting, first, if the new value is in the range 1 to 2147483647, then let n be the new value, otherwise let n be the default value; then, n must be converted to the shortest possible string representing the number as a valid non-negative integer and that string must be used as the new content attribute value.
浮動小数点数~型( `double$I / `unrestricted double$I )の `~IDL属性$V に対しては:
この種の `~IDL属性$V には、 `正数に制限され@ るものもある。 ◎ ↓

取得子は、次を走らす:

  1. ~IF[ `内容~値$V ~NEQ ε ]:

    1. %V ~LET `内容~値$V を`浮動小数点数として構文解析-$した結果
    2. ~IF[ %V ~NEQ ~error ]:

      1. ~IF[ `~IDL属性$V は`正数に制限され$ていない ]~OR[ %V ~GT 0.0 ] ⇒ ~RET %V
  2. ~IF [ `既定~値$V ~NEQ ε ] ⇒ ~RET `既定~値$V
  3. ~RET 0.0

設定子は、次を走らす:

  1. ~IF[ `~IDL属性$V は`正数に制限され$ている ]~AND[ `指定~値$V ~LTE 0 ] ⇒ ~RET (無視する)
  2. `内容~属性$V の値 ~SET `指定~値$V を`浮動小数点数として最良の表現$に変換した結果
◎ If a reflecting IDL attribute has a floating-point number type (double or unrestricted double), then, on getting, the content attribute must be parsed according to the rules for parsing floating-point number values, and if that is successful, the resulting value must be returned. If, on the other hand, it fails, or if the attribute is absent, the default value must be returned instead, or 0.0 if there is no default value. On setting, the given value must be converted to the best representation of the number as a floating-point number and then that string must be used as the new content attribute value. ◎ If a reflecting IDL attribute has a floating-point number type (double or unrestricted double) that is limited to numbers greater than zero, then the behavior is similar to the previous case, but zero and negative values are not allowed. On getting, the content attribute must be parsed according to the rules for parsing floating-point number values, and if that is successful and the value is greater than 0.0, the resulting value must be returned. If, on the other hand, it fails or returns an out of range value, or if the attribute is absent, the default value must be returned instead, or 0.0 if there is no default value. On setting, if the value is less than or equal to zero, then the value must be ignored. Otherwise, the given value must be converted to the best representation of the number as a floating-point number and then that string must be used as the new content attribute value.

注記: ~WebIDL仕様にて定義されるように、実数~型の~IDL属性の設定子に対する値 Infinity, NaN( Not-a-Number )は、例外を投出させる。 `WEBIDL$r ◎ The values Infinity and Not-a-Number (NaN) values throw an exception on setting, as defined in the Web IDL specification. [WEBIDL]

`DOMTokenList$I 型の `~IDL属性$V の挙動は、以下の定義に従わ~MUST:

◎ If a reflecting IDL attribute has the type DOMTokenList, then on getting it must return a DOMTokenList object whose associated element is the element in question and whose associated attribute's local name is the name of the attribute in question.

`HTMLElement$I 型(またはその派生型)の `~IDL属性$V の挙動は、以下の定義に従わ~MUST: ◎ If a reflecting IDL attribute has the type HTMLElement, or an interface that descends from HTMLElement, then, on getting, it must run the following algorithm (stopping at the first point where a value is returned):

  • 取得子は、次を走らす: ◎ ↑

    1. ~IF[ `内容~値$V ~EQ ε ] ⇒ ~RET ~NULL ◎ If the corresponding content attribute is absent, then the IDL attribute must return null.
    2. %候補 ~LET 現在の `内容~値$V を引数に渡して,[ `要素$V の`~node文書$上の `getElementById()$m ~method ]を~callした結果 ◎ Let candidate be the element that the document.getElementById() method would find when called on the content attribute's element's node document if it were passed as its argument the current value of the corresponding content attribute.
    3. ~RET [ %候補 の型は `~IDL属性$V の型に互換ならば %候補 / ~ELSE_ ~NULL ] ◎ If candidate is null, or if it is not type-compatible with the IDL attribute, then the IDL attribute must return null. ◎ Otherwise, it must return candidate.
  • 設定子は、次を走らす:

    1. %新~要素 ~LET `指定~値$V
    2. %木 ~LET `要素$V の`木$
    3. ~IF[ %新~要素 の`木$ ~EQ %木 ]~AND[ %新~要素 は `id$a 属性 %ID属性 を有する ]~AND[ %新~要素 ~EQ %木 内の[ `~ID$ ~EQ %ID属性 の値 ]なる最初の要素 ] ⇒ `内容~属性$V の値 ~SET %ID属性 の値
    4. ~ELSE ⇒ `内容~属性$V の値 ~SET 空~文字列
    ◎ On setting, if the given element has an id attribute, and has the same tree as the element of the attribute being set, and the given element is the first element in that tree whose ID is the value of that id attribute, then the content attribute must be set to the value of that id attribute. Otherwise, the content attribute must be set to the empty string.

2.6.2. ~collection

[ `HTMLFormControlsCollection$I / `HTMLOptionsCollection$I ]~interfaceは、 `HTMLCollection$I ~interfaceから派生する`~collection$である。 `HTMLAllCollection$I ~interfaceは、`~collection$であるが,そのように派生されるものではない。 ◎ The HTMLFormControlsCollection and HTMLOptionsCollection interfaces are collections derived from the HTMLCollection interface. The HTMLAllCollection interface is a collection, but is not so derived.

2.6.2.X. 共通の定義

【 この節は、共通の記述を集約するために,この訳に導入したものである。 】

所与の[ `HTMLFormControlsCollection$I / `HTMLOptionsCollection$I ]~obj %C に対し:

  • “%N 番” という表記は、 %C で`表現され$る要素のうち,`木~順序$で, 0 から数えて %N 個目にある~nodeを指す。
  • 所与の文字列 %name に `~IDか名前が一致する要素たち@ とは、 %C で`表現され$る要素のうち,次のいずれかを満たすものからなる `木~順序$による~listを意味する:

    • `id$a 属性を有していて その値 ~EQ %name
    • `name$a 属性を有していて その値 ~EQ %name
  • `被support~prop名を収集-@ するときは、次を走らす:

    1. %~list ~LET 空~list
    2. %C により`表現され$る ~EACH ( %要素 ) に対し,`木~順序$で:

      1. ~IF[ %要素 は `id$a 属性を有する ]~AND[ その値 %V ~NIN %~list ]~AND[ %V ~NEQ 空~文字列 ] ⇒ %~list に %V を付加する
      2. ~IF[ %要素 は `name$a 属性を有する ]~AND[ その値 %V ~NIN %~list ]~AND[ %V ~NEQ 空~文字列 ] ⇒ %~list に %V を付加する
    3. ~RET %~list

`name@a 属性は、[ `option$e 要素に対しては,その `~nameO$a 属性 / 他の要素に対しては,その `~nameF$a 属性 ]を指すとする。

`新たな空option@ とは、 新たに作成される `option$e 要素であって,属性も子~nodeも伴わないものとする。

2.6.2.1. `HTMLAllCollection^I ~interface

【 この節の和訳は、省略する。 】

2.6.2.2. `HTMLFormControlsCollection^I ~interface

`HTMLFormControlsCollection$I ~interfaceは `form$e 要素~内に`~listされる要素$からなる`~collection$に利用される。 ◎ The HTMLFormControlsCollection interface is used for collections of listed elements in form elements.

interface `HTMLFormControlsCollection@I : `HTMLCollection$I {
  // `~length0$m, `item()$m を継承する
  getter (`RadioNodeList$I or `Element$I)? `namedItem$m(DOMString name); // 継承された `~namedItem0()$m を隠蔽する
};

interface `RadioNodeList@I : `NodeList$I {
  attribute DOMString `value$m;
};
%collection . `length$m
%collection 内の要素の個数を返す。 ◎ Returns the number of elements in the collection.
%element = %collection . `item(index)$m
%element = %collection[%index]
%collection 内の %index 番の~itemを返す。 ◎ Returns the item with index index from the collection. The items are sorted in tree order.
%element = %collection . `namedItem(name)$m
%radioNodeList = %collection . `namedItem(name)$m
%element = %collection[%name]
%radioNodeList = %collection[%name]
%collection 内で, %name に`~IDか名前が一致する要素たち$を返す。 ◎ Returns the item with ID or name name from the collection.
合致する要素が複数ある場合、それらすべてからなる `RadioNodeList$I ~objが返される。 ◎ If there are multiple matching items, then a RadioNodeList object containing all those elements is returned.
%radioNodeList . `value$m [ = %value ]
この~objにより表現される~radio-buttonであって,~checkされているもののうち,最初のものの値を返す。 ◎ Returns the value of the first checked radio button represented by the object.
設定して,~objにより表現される~radio-buttonであって, `value$a に %value を伴うもののうち,最初のものを~checkできる。 ◎ Can be set, to check the first radio button with the given value represented by the object.

`HTMLFormControlsCollection$I ~obj %C に対しては:

  • %C の`被support~prop~index$xは、 `HTMLCollection$I ~objに対し定義されるそれになる。 ◎ The object's supported property indices are as defined for HTMLCollection objects.
  • %C の`被support~prop名$xは、その時点で, %C に対し`被support~prop名を収集-$した結果として定義される。 ◎ The supported property names consist of the non-empty values of all the id and name attributes of all the elements represented by the collection, in tree order, ignoring later duplicates, with the id of an element preceding its name if it contributes both, they differ from each other, and neither is the duplicate of an earlier entry.
`namedItem(name)@m

被呼出時には、次を走らせ~MUST: ◎ The namedItem(name) method must act according to the following algorithm:

  1. ~IF[ %name ~EQ 空~文字列 ] ⇒ ~RET ~NULL ◎ If name is the empty string, return null and stop the algorithm.
  2. ~IF[ 此れ内で, %name に`~IDか名前が一致する要素たち$は 1 個だけある ] ⇒ ~RET その要素 ◎ If, at the time the method is called, there is exactly one node in the collection that has either an id attribute or a name attribute equal to name, then return that node and stop the algorithm.
  3. ~IF[ 此れ内で, %name に`~IDか名前が一致する要素たち$はない ] ⇒ ~RET ~NULL ◎ Otherwise, if there are no nodes in the collection that have either an id attribute or a name attribute equal to name, then return null and stop the algorithm.
  4. ~RET [ 此れ内で, %name に`~IDか名前が一致する要素たち$ ]の~viewを表現するような,新たな[ `~liveである$ `RadioNodeList$I ~obj ] ◎ Otherwise, create a new RadioNodeList object representing a live view of the HTMLFormControlsCollection object, further filtered so that the only nodes in the RadioNodeList object are those that have either an id attribute or a name attribute equal to name. The nodes in the RadioNodeList object must be sorted in tree order. ◎ Return that RadioNodeList object.

`RadioNodeList$I ~interfaceが `NodeList$I ~interfaceから継承する~memberは、 `NodeList$I ~obj上にあるかのようにふるまわ~MUST。 ◎ Members of the RadioNodeList interface inherited from the NodeList interface must behave as they would on a NodeList object.

`value@m

この~IDL属性の目的においては、次に与える “下位手続き (A)” が用いられる。 それは、所与の %条件 に対し,要素 または ε を返す:

  1. ~IF[ 次の条件すべてを満たす要素はある ]…:

    • この `RadioNodeList$I ~objにより`表現され$る要素である
    • `input$e 要素である
    • `type$a 属性は `Radio$st 状態にある
    • %条件 を満たす

    …ならば ⇒ ~RET 該当する要素のうち,`木~順序$で最初の要素

  2. ~RET ε
◎ ↓

取得子は、次を走らせた結果を返さ~MUST:

  1. %要素 ~LET 上の下位手続き (A) に条件[ 要素の`~checkedness$ ~EQ ~T ]を渡して走らせた結果
  2. ~IF[ %要素 ~EQ ε ] ⇒ ~RET ~NULL
  3. ~RET [ %要素 は `value$a 属性を有するならば その値 / ~ELSE_ 文字列 `on^l ]
◎ The value IDL attribute on the RadioNodeList object, on getting, must return the value returned by running the following steps: • Let element be the first element in tree order represented by the RadioNodeList object that is an input element whose type attribute is in the Radio Button state and whose checkedness is true. Otherwise, let it be null. • If element is null, return the empty string. • If element is an element with no value attribute, return the string "on". • Otherwise, return the value of element's value attribute.

設定子は、次を走らせ~MUST:

  1. %要素 ~LET 上の下位手続き (A) に条件[ 要素は `value$a 内容~属性を[ 有する ~AND その値 ~EQ 所与の値 ]~OR[ 有さない ~AND 所与の値 ~EQ `on^l ]]を渡して走らせた結果
  2. ~IF[ %要素 ~NEQ ε ] ⇒ %要素 の `~checkedness$ ~SET ~T
◎ On setting, the value IDL attribute must run the following steps: • If the new value is the string "on": let element be the first element in tree order represented by the RadioNodeList object that is an input element whose type attribute is in the Radio Button state and whose value content attribute is either absent, or present and equal to the new value, if any. If no such element exists, then instead let element be null. • Otherwise: let element be the first element in tree order represented by the RadioNodeList object that is an input element whose type attribute is in the Radio Button state and whose value content attribute is present and equal to the new value, if any. If no such element exists, then instead let element be null. • If element is not null, then set its checkedness to true.

2.6.2.3. `HTMLOptionsCollection^I ~interface

`HTMLOptionsCollection$I ~interfaceは、 `option$e 要素たちの`~collection$に利用される。 その根は,常に `select$e 要素にされ、その子孫を操作する属性や~methodを備える。 ◎ The HTMLOptionsCollection interface is used for collections of option elements. It is always rooted on a select element and has attributes and methods that manipulate that element's descendants.

interface `HTMLOptionsCollection@I : `HTMLCollection$I {
  // `item()$m, `~namedItem0()$m を継承する
  [`CEReactions$] attribute unsigned long `length$m; // 継承された `~length0$m を隠蔽する
  [`CEReactions$] `setter$m void (unsigned long index, `HTMLOptionElement$I? option);
  [`CEReactions$] void `add$m((`HTMLOptionElement$I or `HTMLOptGroupElement$I) element, optional (`HTMLElement$I or long)? before = null);
  [`CEReactions$] void `remove$m(long index);
  attribute long `selectedIndex$m;
};
%collection . `length$m [ = %value ]

%collection 内の要素の個数 %N を返すことに加え: ◎ Returns the number of elements in the collection.

  • %value ~LT %N の場合、 %collection の根~内から最後の ( %N − %value ) 個の `option$e 要素を~~削る。 ◎ When set to a smaller number, truncates the number of option elements in the corresponding container.
  • %value ~GT %N の場合、 %collection の根~内に ( %value − %N ) 個の`新たな空option$を追加する。 ◎ When set to a greater number, adds new blank option elements to that container.
%element = %collection . `item(index)$m
%element = %collection[%index]
%collection 内の %index 番の~itemを返す。 ◎ Returns the item with index index from the collection. The items are sorted in tree order.
%collection[%index] = %element
%index ~GT ( %collection 内の~itemの個数 ) の場合、 %collection の根~内に`新たな空option$を追加する。 ◎ When index is a greater number than the number of items in the collection, adds new blank option elements in the corresponding container.
%element ~EQ ~NULL の場合、 %collection から %index 番の~itemを除去する。 ◎ When set to null, removes the item at index index from the collection.
%element が `option$e 要素である場合、 %element を %collection の %index 番の~itemとして追加するか,または %collection の %index 番の~itemを %element に置換する。 ◎ When set to an option element, adds or replaces it at index index from the collection.
%element = %collection . `namedItem(name)$m
%element = %collection[%name]
[ %collection 内で, %name に`~IDか名前が一致する要素たち$ ]のうち,最初のものを返す。 ◎ Returns the item with ID or name name from the collection. ◎ If there are multiple matching items, then the first is returned.
%collection . `add(element [, before ] )$m

%before 引数が指す~nodeの前に %element を挿入する:

  • %before が数の場合、 %element は, %collection 内の %before 番の~itemの前に挿入される
  • %before が %collection 内の要素である場合、 %element はその要素の前に挿入される。
  • %before が[ 省略されている / ~NULL / 範囲~外の数である ]場合、 %element は~listの末尾に追加される。
◎ Inserts element before the node given by before. ◎ The before argument can be a number, in which case element is inserted before the item with that number, or an element from the collection, in which case element is inserted before that element. ◎ If before is omitted, null, or a number out of range, then element will be added at the end of the list.
%element が 挿入-先の要素( %collection の根)の先祖である場合、 `HierarchyRequestError$E を投出する。 ◎ This method will throw a "HierarchyRequestError" DOMException if element is an ancestor of the element into which it is to be inserted.
【 %before が %collection 内にない要素である場合、 `NotFoundError$E を投出する。 】
%collection . `remove(index)$m
%collection から %index 番の~itemを除去する。 ◎ Removes the item with index index from the collection.
%collection . `selectedIndex$m [ = %value ]
選択されている~itemが[ あれば それらのうち最初の~itemの~index / なければ −1 ]を返す。 ◎ Returns the index of the first selected item, if any, or −1 if there is no selected item.
設定して,選択を変更できる。 ◎ Can be set, to change the selection.

`HTMLOptionsCollection$I ~objの`被support~prop~index$xは、 `HTMLCollection$I ~objに対し定義されるそれになる。 ◎ The object's supported property indices are as defined for HTMLCollection objects.

`length@m

取得子は、此れにより`表現され$る~nodeの個数を返さ~MUST。 ◎ On getting, the length attribute must return the number of nodes represented by the collection.

設定子は、次を走らせ~MUST:

  1. %select ~LET 此れの根である `select$e 要素
  2. %n ~LET 所与の値 − ( 此れにより`表現され$る~nodeの個数 )
  3. %n に応じて:

    %n ~EQ 0
    何もしない
    %n ~GT 0
    %n 個の`新たな空option$を %select に付加した上で, `新たな空option$を包含する `DocumentFragment$I が挿入されたかのように,変異~eventを発火する
    %n ~LT 0
    此れ内の最後の ( − %n ) 個の~nodeを親~nodeから除去する
◎ On setting, the behavior depends on whether the new value is equal to, greater than, or less than the number of nodes represented by the collection at that time. If the number is the same, then setting the attribute must do nothing. If the new value is greater, then n new option elements with no attributes and no child nodes must be appended to the select element on which the HTMLOptionsCollection is rooted, where n is the difference between the two numbers (new value minus old value). Mutation events must be fired as if a DocumentFragment containing the new option elements had been inserted. If the new value is lower, then the last n nodes in the collection must be removed from their parent nodes, where n is the difference between the two numbers (old value minus new value).
注記: `optgroup$e 要素に関しては、 `length$m に何かを設定しても,[ %select 内のそれが除去される / %select にそれが追加される / %select 内のそれに新たな子が追加される ]ことは、決してない( %select 内のそれの子は除去され得るが)。 ◎ Setting length never removes or adds any optgroup elements, and never adds new children to existing optgroup elements (though it can remove children from them).

`HTMLOptionsCollection$I ~obj %C に対する`被support~prop名$xは、その時点で, %C に対し`被support~prop名を収集-$した結果として定義される。 ◎ The supported property names consist of the non-empty values of all the id and name attributes of all the elements represented by the collection, in tree order, ignoring later duplicates, with the id of an element preceding its name if it contributes both, they differ from each other, and neither is the duplicate of an earlier entry.

~UAは、 `HTMLOptionsCollection$I ~obj %C 上で[ `新たな有index~propの値を設定する$x / `既存の有index~propの値を設定する$x ]ときは,所与の ( ~prop~index %index, 新たな値 %値 ) に対し、次を走らせ~MUST: ◎ When the user agent is to set the value of a new indexed property or set the value of an existing indexed property for a given property index index to a new value value, it must run the following algorithm:

  1. ~IF[ %値 ~EQ ~NULL ]:

    1. %index を引数に, %C 上の `remove()$m ~methodの手続きを呼出す
    2. ~RET
    ◎ If value is null, invoke the steps for the remove method with index as the argument, and abort these steps.
  2. %select ~LET %C の根である `select$e 要素 ◎ ↓
  3. %n ~LET %index − ( %C により`表現され$る~nodeの個数 ) ◎ Let length be the number of nodes represented by the collection. ◎ Let n be index minus length.
  4. ~IF[ %n ~GT 0 ] ⇒ ( %n-1 ) 個の`新たな空option$を子に持つ `DocumentFragment$I を %select に`付加-$する ◎ If n is greater than zero, then append a DocumentFragment consisting of n-1 new option elements with no attributes and no child nodes to the select element on which the HTMLOptionsCollection is rooted.
  5. ~IF[ %n ~GTE 0 ] ⇒ %値 を %select に`付加-$する ◎ ↓
  6. ~ELSE ⇒ %C 内の %index 番の要素を %値 に`置換-$する ◎ If n is greater than or equal to zero, append value to the select element. Otherwise, replace the indexth element in the collection by value.
`add(element, before)@m

被呼出時には、次を走らせ~MUST ◎ The add(element, before) method must act according to the following algorithm:

  1. %select ~LET 此れの根である `select$e 要素
  2. ~IF[ %element は %select の先祖である ] ⇒ ~THROW `HierarchyRequestError$E ◎ If element is an ancestor of the select element on which the HTMLOptionsCollection is rooted, then throw a "HierarchyRequestError" DOMException and abort these steps.
  3. ~IF[ %before は要素である ]: ◎ ↓

    1. ~IF[ %before は %select の子孫でない ] ⇒ ~THROW `NotFoundError$E ◎ If before is an element, but that element isn't a descendant of the select element on which the HTMLOptionsCollection is rooted, then throw a "NotFoundError" DOMException and abort these steps.
    2. ~IF[ %element ~EQ %before ] ⇒ ~RET ◎ If element and before are the same element, then return and abort these steps.
  4. ~ELSE( %before は整数である) ⇒ %before ~SET [ 此れ内に %before 番の~nodeはあるならば それ / ~ELSE_ ~NULL ] ◎ If before is a node, then let reference be that node. Otherwise, if before is an integer, and there is a beforeth node in the collection, let reference be that node. Otherwise, let reference be null.
  5. %親 ~LET[ %before ~NEQ ~NULL ならば %before の親~node / ~ELSE_ %select ] ◎ If reference is not null, let parent be the parent node of reference. Otherwise, let parent be the select element on which the HTMLOptionsCollection is rooted.
  6. %親 の中で, %element を %before の前に`前挿入-$する ◎ Pre-insert element into parent node before reference.
`remove(index)@m

被呼出時には、次を走らせ~MUST: ◎ The remove(index) method must act according to the following algorithm:

  1. ~IF[ 0 ~LTE %index ~LT ( 此れにより`表現され$る~nodeの個数 ) ] ⇒ 此れ内の %index 番の要素をその親から除去する ◎ If the number of nodes represented by the collection is zero, abort these steps. ◎ If index is not a number greater than or equal to 0 and less than the number of nodes represented by the collection, abort these steps. ◎ Let element be the indexth element in the collection. ◎ Remove element from its parent node.
`selectedIndex@m
取得子は、此れの根である `select$e 要素~上の同じ名前の~IDL属性と同様に動作し~MUST。 ◎ The selectedIndex IDL attribute must act like the identically named attribute on the select element on which the HTMLOptionsCollection is rooted

2.6.3. `DOMStringList$I ~interface

`DOMStringList$I ~interfaceは、文字列の~listを昔風の仕方で表現する。 ◎ The DOMStringList interface is a non-fashionable retro way of representing a list of strings.

[Exposed=(Window,Worker)]
interface `DOMStringList@I {
  readonly attribute unsigned long `length$sL;
  getter DOMString? `item$sL(unsigned long %index);
  boolean `contains$sL(DOMString %string);
};

新たな~APIは、 `DOMStringList$I ではなく, `sequence<DOMString>^c または それに等価なものを利用し~MUST。 ◎ New APIs must use sequence<DOMString> or equivalent rather than DOMStringList.

%strings . `length$sL
%strings が包含している文字列の個数を返す。 ◎ Returns the number of strings in strings.
%strings[%index]
%strings . `item(index)$sL
%strings 内の~index %index 番の文字列を返す。 ◎ Returns the string with index index from strings.
%strings . `contains(string)$sL
%strings が %string を[ 包含するならば ~T / ~ELSE_ ~F ]を返す ◎ Returns true if strings contains string, and false otherwise.

各 `DOMStringList$I ~objには`~list$が結付けられる。 ◎ Each DOMStringList object has an associated list.

`DOMStringList$I ~objの`被support~prop~index$xは、 0 以上[ その~listの`~size$ ]未満とする。 ◎ The supported property indices for a DOMStringList object are the numbers zero to the associated list's size minus one. If its associated list is empty, it has no supported property indices.

`length@sL
取得子は、此れの~listの`~size$を返さ~MUST。 ◎ The length attribute's getter must this DOMStringList object's associated list's size.
`item(index)@sL
被呼出時には、[[ %index ~LT 此れの~listの`~size$ ]ならば 此れの~listの %index 番の~item / ~ELSE_ ~NULL ]を返さ~MUST。 ◎ The item(index) method, when invoked, must return the indexth item in this DOMStringList object's associated list, or null if index plus one is less than this DOMStringList object's associated list's size.
`contains(string)@sL
被呼出時には、[ 此れの~listが %string を`包含-$するならば ~T / ~ELSE_ ~F ]返さ~MUST。 ◎ The contains(string) method, when invoked, must return true if this DOMStringList object's associated list contains string, and false otherwise.

2.6.4. ~garbage収集

存在していた( pre-existing ) ~objを返す~IDL属性からは、その~objへの `暗黙の強い参照@ がある。 ◎ There is an implied strong reference from any IDL attribute that returns a pre-existing object to that object.

例えば `window.document$m 属性は、`Window$I ~objから その `Document$I ~objへの強い参照があることを意味する。 同様に,`文書$0から子孫~nodeへの, および ~nodeから その`~node文書$への強い参照が常にある。 ◎ For example, the window.document attribute means that there is a strong reference from a Window object to its Document object. Similarly, there is always a strong reference from a Document to any descendant nodes, and from any node to its node document.

2.7. 有構造~dataの安全な渡し方

【 この節とその下位節の和訳は 別ページにて