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の目的0において,~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 であることを意味する(すなわち、~ASCII空白や`制御~文字$も包含しない)。 ◎ 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 spaces or control characters).

要素の `子~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.

用語 `符号単位@ は、 `DOMString$I の最小の不可分な成分である, 16~bit無符号~整数であり、~WebIDL仕様にて定義される。 (これは、~Unicodeによるものより狭義の定義であり,符号位置と同じではない。) `WEBIDL$r ◎ The term code unit is used as defined in the Web IDL specification: a 16 bit unsigned integer, the smallest atomic component of a DOMString. (This is a narrower definition than the one used in Unicode, and is not the same as a code point.) [WEBIDL]

用語 `~Unicode符号位置@ は、次に述べるように,[ 可能0な所では `~Unicode~scalar値^i / そうでない所では 対にされてない~surrogate符号位置(代用符号位置) ]を意味する `UNICODE$r 。 文字/~Unicode符号位置 の用語を通して適合性~要件が定義されるときは:

  • [ 上位~surrogate, 下位~surrogate ]の並びからなる`符号単位$の対(代用対)は,その対で表現される 1 個の符号位置として扱われ~MUST。
  • 一方で,対にされてない~surrogateは、その~surrogate値を伴う 1 個の符号位置として扱われ~MUST。
◎ The term Unicode code point means a Unicode scalar value where possible, and an isolated surrogate code point when not. When a conformance requirement is defined in terms of characters or Unicode code points, a pair of code units consisting of a high surrogate followed by a low surrogate must be treated as the single code point represented by the surrogate pair, but isolated surrogates must each be treated as the single code point with the value of the surrogate. [UNICODE]

この仕様における用語 `文字@ は、特に`~Unicode文字$と記されない所では、`~Unicode符号位置$と同義である。 ◎ In this specification, the term character, when not qualified as Unicode character, is synonymous with the term Unicode code point.

一方で,用語 `~Unicode文字@ は、`~Unicode~scalar値^i を意味するときに利用される(すなわち,~surrogate符号位置でない~Unicode符号位置)。 `UNICODE$r ◎ The term Unicode character is used to mean a Unicode scalar value (i.e. any Unicode code point that is not a surrogate code point). [UNICODE]

文字列の `符号単位~長さ@ は、その文字列~内に含まれる`符号単位$の個数である。 ◎ The code-unit length of a string is the number of code units in that string.

注記: この複雑さは、~DOM~APIを`~Unicode文字$の用語を通してではなく,16~bit `符号単位$( UTF-16 )の用語を通して定義することにした、歴史的~決断による結果である。 ◎ This complexity results from the historical decision to define the DOM API in terms of 16 bit (UTF-16) code units, rather than in terms of Unicode characters.

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. 共通の小構文

~HTMLでは,種々の所で,日付や数などを表現する特定0の~data型を受容する。 この節では、それらの形式による内容に対する適合性の判定基準, および それらを構文解析する方法について述べる。 ◎ There are various places in HTML that accept particular data types, such as dates or numbers. This section describes what the conformance criteria for content in those formats is, and how to parse them.

注記: 実装者には、以下に述べる構文の構文解析を実装するにあたり,第三者主体による~libraryの利用を考慮するときは、注意深く検分することが強く督促される。 例えば、日付~libraryにおける~errorの取扱いは、この仕様にて要求されるものから相違する挙動を実装している~~可能性が高い。 ~error取扱いの挙動は、この仕様にて利用される構文に類似する日付~構文を述べる仕様では,定義されていないことが多いため、実装によって大きく異なる傾向にある。 ◎ Implementors are strongly urged to carefully examine any third-party libraries they might consider using to implement the parsing of syntaxes described below. For example, date libraries are likely to implement error handling behavior that differs from what is required in this specification, since error-handling behavior is often not defined in specifications that describe date syntaxes similar to those used in this specification, and thus implementations tend to vary greatly in how they handle errors.

2.3.1. 共通の成句的な構文解析器

この仕様の目的0においては、次に挙げる各種~文字~範囲が定義される: ◎ ↓

`White_Space 文字@
~Unicode `PropList.txt^c ~data~fileにおいて ~Unicode~prop "White_Space" を有するもの。 `UNICODE$r ◎ The White_Space characters are those that have the Unicode property "White_Space" in the Unicode PropList.txt data file. [UNICODE]
注記: これを `Unicode.txt^c ~data~fileの "Bidi_Class" ~propに対する "White_Space" 値(略称 "WS" )と混同しないように。 ◎ This is not to be confused with the "White_Space" value (abbreviated "WS") of the "Bidi_Class" property in the Unicode.txt data file.
`制御~文字@
~Unicode `UnicodeData.txt^c ~data~fileにおいて, ~Unicode "General_Category" ~propの値が "Cc" であるもの。 `UNICODE$r ◎ The control characters are those whose Unicode "General_Category" property has the value "Cc" in the Unicode UnicodeData.txt data file. [UNICODE]

以下に述べる一部の構文解析器は、構文解析される文字列を保持する変数 %入力, および 次に構文解析される文字を指す変数 %位置 を用いる~patternに従う。 ◎ Some of the micro-parsers described below follow the pattern of having an input variable that holds the string being parsed, and having a position variable pointing at the next character to parse in input.

【 以下に現れる %位置↗ という表記は、 %位置 が指す文字を表す(詳細は`位置~変数$を参照されたし)。 】

2.3.2. 真偽~属性

一部の内容~属性は、 `真偽~属性@ とされている。 要素~上の真偽~属性の存在0は ~T 値を表現し、不在は ~F 値を表現する: ◎ A number of attributes are boolean attributes. The presence of a boolean attribute on an element represents the true value, and the absence of the attribute represents the false value.

真偽~属性は、在するならば,[ その値 ~IN~ACI { 空~文字列, 属性の正準的な名前 } ]で~MUST( 属性~値の 頭部/尾部 に空白は許容されない)。 ◎ If the attribute is present, its value must either be the empty string or a value that is an ASCII case-insensitive match for the attribute's canonical name, with no leading or trailing whitespace.

注記: 真偽~属性に対する、値[ `true^l, `false^l ]は許容されない。 ~F 値を表現するためには、属性~自体も省略される必要がある。 ◎ The values "true" and "false" are not allowed on boolean attributes. To represent a false value, the attribute has to be omitted altogether.

~checkされ, かつ不能化されている( checked & disabled )~checkboxの例をここに示す。 `checked$a, `disabled$a 属性はいずれも真偽~属性である。 ◎ Here is an example of a checkbox that is checked and disabled. The checked and disabled attributes are the boolean attributes.

<label><input
    type=checkbox
    `checked^mark
    name=cheese
    `disabled^mark
> Cheese</label>

これは、次のように書いても等価になる: ◎ This could be equivalently written as this:

<label><input
    type=checkbox
    `checked=checked^mark
    name=cheese
    `disabled=disabled^mark
> Cheese</label>

次のように書き方を混在させても依然として等価になる: ◎ You can also mix styles; the following is still equivalent:

<label><input
    type='checkbox'
    `checked^mark
    name=cheese
    `disabled=""^mark
> Cheese</label>

2.3.3. ~keyword, 列挙ed属性

一部の内容~属性は、とり得る値の範囲が,いくつかの~keywordの有限~集合として定義されている。 そのような属性は、 `列挙ed属性@ 呼ばれる。 各~keywordは、特定0の 状態 に対応付けられるものと定義される(複数の~keywordが、同じ状態に対応付けられることもある — そのような~keywordは,互いに同義語になる。 加えて,~keywordのうち一部には、歴史的~理由のためのみ仕様に残されているものもある — その種のものは非~適合とされる)。 加えて、次の二つの既定~状態が定義されることもある:

  • `妥当でない値に対する既定の状態@
  • `値なしに対する既定の状態@
◎ Some attributes are defined as taking one of a finite set of keywords. Such attributes are called enumerated attributes. The keywords are each defined to map to a particular state (several keywords might map to the same state, in which case some of the keywords are synonyms of each other; additionally, some of the keywords can be said to be non-conforming, and are only in the specification for historical reasons). In addition, two default states can be given. The first is the invalid value default, the second is the missing value default.

要素が`列挙ed属性$を有する場合、[ その値 ~IN~ACI { 所与の~keyword集合のうち,非~適合とされていないもの } ]で~MUST( 属性~値の 頭部/尾部 に空白は許容されない)。 ◎ If an enumerated attribute is specified, the attribute's value must be an ASCII case-insensitive match for one of the given keywords that are not said to be non-conforming, with no leading or trailing whitespace.

( `列挙ed属性$ %A, ~keyword集合 %S ) が与えられた下で,要素において %A が表現する状態は、次の手続きで与えられる:

  1. ~IF[ 要素は %A を有する ]:

    1. ~IF[ %A の値 ~IN~ACI %S ] ⇒ ~RET その値に対応する状態
    2. ~IF[ %A には `妥当でない値に対する既定の状態$が定義されている ] ⇒ ~RET その状態
  2. ~IF[ %A には `値なしに対する既定の状態$が定義されている ] ⇒ ~RET その状態
  3. ~RET ε (表現される状態はない)
◎ When the attribute is specified, if its value is an ASCII case-insensitive match for one of the given keywords then that keyword's state is the state that the attribute represents. If the attribute value matches none of the given keywords, but the attribute has an invalid value default, then the attribute represents that state. Otherwise, if the attribute value matches none of the keywords but there is a missing value default state defined, then that is the state represented by the attribute. Otherwise, there is no default, and invalid values mean that there is no state represented. ◎ When the attribute is not specified, if there is a missing value default state defined, then that is the state represented by the (missing) attribute. Otherwise, the absence of the attribute means that there is no state represented.

注記: 空~文字列も妥当な~keywordになり得る。 ◎ The empty string can be a valid keyword.

2.3.4. 実数

`この訳では、簡潔に記述するため,次を定義する:^tnote

  • `Base10@ ( %s ) は、所与の`~ASCII数字$列 %s に対し[ %s ~EQ 空~文字列 ならば 0 / ~ELSE_ %s を 10 進~数字~列として整数に解釈した結果 ]を表す。
  • `String10@ ( %n ) は、所与の整数 %n を表現するような`妥当な整数$(文字列)のうち,可能0な限り最短の文字列を表す( %n が負でないなら `妥当な非~負~整数$になる)。
  • `Power10@ ( %n ) は、所与の整数 %n に対する ( 10 の %n 乗 ) を表す。

2.3.4.1. 有符号~整数

次の並びからなる文字列は `妥当な整数@ とされる:

  1. 0 〜 1 個の文字 ❝-
  2. 1 個以上の`~ASCII数字$
◎ A string is a valid integer if it consists of one or more ASCII digits, optionally prefixed with a U+002D HYPHEN-MINUS character (-).

`妥当な整数$は ⇒ ❝- を[ 伴わないならば 1 / 伴うならば −1 ] × `Base10$( その中の数字~列 ) を表現する。 ◎ A valid integer without a U+002D HYPHEN-MINUS (-) prefix represents the number that is represented in base ten by that string of digits. A valid integer with a U+002D HYPHEN-MINUS (-) prefix represents the number represented in base ten by the string of digits that follows the U+002D HYPHEN-MINUS, subtracted from zero.

所与の文字列 %入力 を `整数として構文解析-@ する規則は、次の~algoで与えられ,[ 整数, ~error ]のいずれかを返す: ◎ The rules for parsing integers are as given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either an integer or an error.

  1. %位置 ~LET %入力 の先頭の文字を指している~pointer ◎ Let input be the string being parsed. ◎ Let position be a pointer into input, initially pointing at the start of the string.
  2. %符号 ~LET 1 ◎ Let sign have the value "positive".
  3. %入力 内の %位置 から`~ASCII空白を読飛ばす$ ◎ Skip ASCII whitespace within input given position.
  4. %位置↗ に応じて: ◎ If position is past the end of input, return an error.

    ❝- ◎ If the character indicated by position (the first character) is a U+002D HYPHEN-MINUS character (-):
    1. %符号 ~LET −1 ◎ Let sign be "negative".
    2. %位置 ~INCBY 1 ◎ Advance position to the next character. ◎ If position is past the end of input, return an error.
    ❝+ ◎ Otherwise, if the character indicated by position (the first character) is a U+002B PLUS SIGN character (+):
    1. %位置 ~INCBY 1 ( `+^l は無視されるが適合ではない。) ◎ Advance position to the next character. (The "+" is ignored, but it is not conforming.) ◎ If position is past the end of input, return an error.
  5. ~IF[ %位置↗ ~NIN `~ASCII数字$ ] ⇒ ~RET ~error ◎ If the character indicated by position is not an ASCII digit, then return an error.
  6. ~RET %符号 × `Base10$( %入力 内の %位置 から `~ASCII数字$からなる`符号位置~並びを収集-$した結果 ) ◎ Collect a sequence of code points that are ASCII digits from input given position, and interpret the resulting sequence as a base-ten integer. Let value be that integer. ◎ If sign is "positive", return value, otherwise return the result of subtracting value from zero.

2.3.4.2. 非~負~整数

1 個以上の`~ASCII数字$からなる文字列は `妥当な非~負~整数@ とされる。 ◎ A string is a valid non-negative integer if it consists of one or more ASCII digits.

`妥当な非~負~整数$は、 `Base10$( その数字~列 ) を表現する。 ◎ A valid non-negative integer represents the number that is represented in base ten by that string of digits.

所与の文字列 %入力 を `非~負~整数として構文解析-@ する規則は、次の~algoで与えられ,[ 非~負~整数, ~error ]のいずれかを返す: ◎ The rules for parsing non-negative integers are as given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either zero, a positive integer, or an error.

  1. %値 ~LET %入力 を`整数として構文解析-$した結果 ◎ Let input be the string being parsed. ◎ Let value be the result of parsing input using the rules for parsing integers.
  2. ~IF[ %値 ~EQ ~error ]~OR[ %値 ~LT 0 ] ⇒ ~RET ~error ◎ If value is an error, return an error. ◎ If value is less than zero, return an error.
  3. ~RET %値 ◎ Return value.

2.3.4.3. 浮動小数点数

次の並びからなる文字列は、 `妥当な浮動小数点数@ とされる: ◎ A string is a valid floating-point number if it consists of:

  1. “符号~部” : 0 〜 1 個の ❝- ◎ Optionally, a U+002D HYPHEN-MINUS character (-).
  2. 次の両方, または片方のみによる並び: ◎ One or both of the following, in the given order:

    1. “整数~部” : 1 個以上の`~ASCII数字$からなる並び ◎ A series of one or more ASCII digits.
    2. 次の並び: ◎ Both of the following, in the given order:

      1. 1 個の ❝. ◎ A single U+002E FULL STOP character (.).
      2. “小数~部” : 1 個以上の`~ASCII数字$からなる並び ◎ A series of one or more ASCII digits.
  3. “指数~部” : 空~文字列, または 次の並び: ◎ Optionally:

    1. 1 個の[ ❝e, または ❝E ] ◎ Either a U+0065 LATIN SMALL LETTER E character (e) or a U+0045 LATIN CAPITAL LETTER E character (E).
    2. “指数~部の符号~部” : 0 〜 1 個の[ ❝-, または ❝+ ] ◎ Optionally, a U+002D HYPHEN-MINUS character (-) or U+002B PLUS SIGN character
    3. “指数~部の数字~列” : 1 個以上の`~ASCII数字$からなる並び ◎ A series of one or more ASCII digits.

`妥当な浮動小数点数$は、 ( %符号 × %仮数 × `Power10$( %指数 ) ) で得られる数を表現する — ここで:

  • %符号 ~EQ [ 前述の “符号~部” ~EQ ❝- ならば −1 / ~ELSE_ 1 ]
  • %仮数 ~EQ %整数 + %小数 — ここで:

    • %整数 ~EQ 前述の “整数~部” が[ あれば `Base10$( “整数~部” ) / なければ 0 ]
    • %小数 ~EQ 前述の “小数~部” が[ あれば `Base10$( “小数~部” ) ÷ `Power10$( “小数~部” の文字~数 ) / なければ 0 ]
  • %指数 ~EQ [ 前述の “指数~部” ~NEQ 空~文字列ならば ( %符号 × %指数 ) / ~ELSE_ 0 ] — ここで:

    • %符号 ~EQ [ 前述の “指数~部の符号~部” ~EQ ❝- ならば −1 / ~ELSE_ 1 ]
    • %指数 ~EQ `Base10$( 前述の “指数~部の数字~列” )
◎ A valid floating-point number represents the number obtained by multiplying the significand by ten raised to the power of the exponent, where the significand is the first number, interpreted as base ten (including the decimal point and the number after the decimal point, if any, and interpreting the significand as a negative number if the whole string starts with a U+002D HYPHEN-MINUS character (-) and the number is not zero), and where the exponent is the number after the E, if any (interpreted as a negative number if there is a U+002D HYPHEN-MINUS character (-) between the E and the number and the number is not zero, or else ignoring a U+002B PLUS SIGN character (+) between the E and the number if there is one). If there is no E, then the exponent is treated as zero.

注記: Infinity, NaN( Not-a-Number )いずれの値も,`妥当な浮動小数点数$ではない。 ◎ The Infinity and Not-a-Number (NaN) values are not valid floating-point numbers.

注記: `妥当な浮動小数点数$の概念は、概して,作者に許容されるものを制約する利用に限られる。 一方で、~UAに課される要件には,`浮動小数点数として構文解析-$する規則が利用される(例: `progress$e 要素の `max$a 属性 )。 しかしながら,一部の事例では、文字列が`妥当な浮動小数点数$かどうか検査することも~UA要件に含まれる(例: `Number$st 状態にある `input$e 要素に対する 値の消毒 / `srcset^a 属性を 構文解析する ~algo)。 ◎ The valid floating-point number concept is typically only used to restrict what is allowed for authors, while the user agent requirements use the rules for parsing floating-point number values below (e.g., the max attribute of the progress element). However, in some cases the user agent requirements include checking if a string is a valid floating-point number (e.g., the value sanitization algorithm for the Number state of the input element, or the parse a srcset attribute algorithm).

実数 %n に対する `浮動小数点数として最良の表現@ は、 `ToString$jA( %n ) を走らせて得られる文字列である。 `ToString()^jA 抽象演算の結果は一意に決定されるとは限らない — 特定0の値に対する `ToString()^jA の結果として複数の文字列が可能0な場合、~UAは常に同じ結果を返さ~MUST(他の~UAは相違する値を利用するかもしれないが)。 ◎ The best representation of the number n as a floating-point number is the string obtained from running ToString(n). The abstract operation ToString is not uniquely determined. When there are multiple possible strings that could be obtained from ToString for a particular value, the user agent must always return the same string for that value (though it may differ from the value used by other user agents).

所与の文字列 %入力 を `浮動小数点数として構文解析-@ する規則は、次の~algoで与えられ,[ 実数, ~error ]のいずれかを返す: ◎ The rules for parsing floating-point number values are as given in the following algorithm. This algorithm must be aborted at the first step that returns something. This algorithm will return either a number or an error.

  1. %位置 ~LET %入力 の先頭の文字を指している~pointer ◎ Let input be the string being parsed. ◎ Let position be a pointer into input, initially pointing at the start of the string. ◎ Let value have the value 1. ◎ Let divisor have the value 1. ◎ Let exponent have the value 1.
  2. %入力 内の %位置 から`~ASCII空白を読飛ばす$ ◎ Skip ASCII whitespace within input given position. ◎ If position is past the end of input, return an error. ↓
  3. %符号 ~SET [ %位置↗ ~EQ ❝- ならば −1 / ~ELSE_ 1 ] ◎ If the character indicated by position is a U+002D HYPHEN-MINUS character (-): • Change value and divisor to −1. • Advance position to the next character. • If position is past the end of input, return an error. ↓
  4. ~IF[ %位置↗ ~IN { ❝-, ❝+ } ] ⇒ %位置 ~INCBY 1 ( `+^l は適合でないが無視される) ◎ Otherwise, if the character indicated by position (the first character) is a U+002B PLUS SIGN character (+): • Advance position to the next character. (The "+" is ignored, but it is not conforming.) • If position is past the end of input, return an error.
  5. ~IF[ %位置↗ ~NIN `~ASCII数字$ ] ⇒ ~IF[ %位置↗ ~NEQ ❝. ]~OR[ ( %位置 + 1 )↗ ~NIN `~ASCII数字$ ] ⇒ ~RET ~error ◎ ↑↓
  6. %値 ~SET `Base10$( %入力 内の %位置 から `~ASCII数字$からなる`符号位置~並びを収集-$した結果 ) ◎ If the character indicated by position is a U+002E FULL STOP (.), and that is not the last character in input, and the character after the character indicated by position is an ASCII digit, then set value to zero and jump to the step labeled fraction. ◎ If the character indicated by position is not an ASCII digit, then return an error. ◎ Collect a sequence of code points that are ASCII digits from input given position, and interpret the resulting sequence as a base-ten integer. Multiply value by that integer. ◎ If position is past the end of input, jump to the step labeled conversion.
  7. ~IF[ %位置↗ ~EQ ❝. ]:

    1. %位置 ~INCBY 1
    2. %小数 ~LET %入力 内の %位置 から `~ASCII数字$からなる`符号位置~並びを収集-$した結果
    3. %値 ~INCBY `Base10$( %小数 ) ÷ `Power10$( %小数 の文字数 )
    ◎ Fraction: If the character indicated by position is a U+002E FULL STOP (.), run these substeps: • Advance position to the next character. • If position is past the end of input, or if the character indicated by position is not an ASCII digit, U+0065 LATIN SMALL LETTER E (e), or U+0045 LATIN CAPITAL LETTER E (E), then jump to the step labeled conversion. • If the character indicated by position is a U+0065 LATIN SMALL LETTER E character (e) or a U+0045 LATIN CAPITAL LETTER E character (E), skip the remainder of these substeps. •• Fraction loop: Multiply divisor by ten. ••Add the value of the character indicated by position, interpreted as a base-ten digit (0..9) and divided by divisor, to value. ••Advance position to the next character. ••If position is past the end of input, then jump to the step labeled conversion. ••If the character indicated by position is an ASCII digit, jump back to the step labeled fraction loop in these substeps.
  8. ~IF[ %位置↗ ~IN { ❝e, ❝E } ]: ◎ If the character indicated by position is a U+0065 LATIN SMALL LETTER E character (e) or a U+0045 LATIN CAPITAL LETTER E character (E), run these substeps:

    1. %位置 ~INCBY 1 ◎ Advance position to the next character. ◎ If position is past the end of input, then jump to the step labeled conversion.
    2. %指数 ~SET [ %位置↗ ~EQ ❝- ならば −1 / ~ELSE_ 1 ] ◎ If the character indicated by position is a U+002D HYPHEN-MINUS character (-): • Change exponent to −1. • Advance position to the next character. • If position is past the end of input, then jump to the step labeled conversion.
    3. ~IF[ %位置↗ ~IN { ❝-, ❝+ } ] ⇒ %位置 ~INCBY 1 ◎ Otherwise, if the character indicated by position is a U+002B PLUS SIGN character (+): • Advance position to the next character. • If position is past the end of input, then jump to the step labeled conversion.
    4. %指数 ~SET %指数 × `Base10$( %入力 内の %位置 から `~ASCII数字$からなる`符号位置~並びを収集-$した結果 ) ◎ If the character indicated by position is not an ASCII digit, then jump to the step labeled conversion. ◎ Collect a sequence of code points that are ASCII digits from input given position, and interpret the resulting sequence as a base-ten integer. Multiply exponent by that integer.
    5. %値 ~SET %値 × `Power10$( %指数 ) ◎ Multiply value by ten raised to the exponentth power.
  9. %値 ~SET %値 × %符号 ◎ ↑↑
  10. %S ~LET [[ 有限 IEEE 754倍精度 浮動小数点数の集合 ]から −0 を除いた集合 ]に 2 個の特別な値[ %max ~EQ ( 2 の 1024 乗 ), %min ~EQ −( 2 の 1024 乗 ) ]を追加した集合 ◎ Conversion: Let S be the set of finite IEEE 754 double-precision floating-point values except −0, but with two special values added: 21024 and −21024.
  11. %結果 ~LET %S 内の数であって, %値 に最も近いもの — ここで、%値 が %S 内の 2 個の数に等しく近い場合は、仮数が偶数である方を選ぶ(この目的0においては、 %max, %min の仮数は偶数と見なす)。 ◎ Let rounded-value be the number in S that is closest to value, selecting the number with an even significand if there are two equally close values. (The two special values 21024 and −21024 are considered to have even significands for this purpose.)
  12. ~IF[ %結果 ~IN { %max, %min } ] ⇒ ~RET ~error ◎ If rounded-value is 21024 or −21024, return an error.
  13. ~RET %結果 ◎ Return rounded-value.

【 この訳では、等価な結果が得られるように,原文の~algoをかなり単純化している。 】

2.3.4.4. 百分率, 長さ

所与の文字列 %入力 を `寸法~値として構文解析-@ する規則は、次の~algoで与えられ, [ ( 実数, 種別 ) の組, ~error ]のいずれかを返す — ここで、実数は 0.0 以上, 種別は[ `百分率^i, `長さ^i ]のいずれかである: ◎ The rules for parsing dimension values are as given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either a number greater than or equal to 0.0, or an error; if a number is returned, then it is further categorized as either a percentage or a length.

  1. %位置 ~LET %入力 の先頭の文字を指している~pointer ◎ Let input be the string being parsed. ◎ Let position be a pointer into input, initially pointing at the start of the string.
  2. %入力 内の %位置 から`~ASCII空白を読飛ばす$ ◎ Skip ASCII whitespace within input given position.
  3. ~IF[ %位置↗ ~EQ ❝+ ] ⇒ %位置 ~INCBY 1 ◎ If position is past the end of input, return an error. ◎ If the character indicated by position is a U+002B PLUS SIGN character (+), advance position to the next character.
  4. ~IF[ %位置↗ ~NIN `~ASCII数字$ ] ⇒ ~RET ~error ◎ If position is past the end of input, return an error. ◎ If the character indicated by position is not an ASCII digit, then return an error.
  5. %値 ~LET `Base10$( %入力 内の %位置 から `~ASCII数字$からなる`符号位置~並びを収集-$した結果 ) ◎ Collect a sequence of code points that are ASCII digits from input given position, and interpret the resulting sequence as a base-ten integer. Let value be that number. ◎ If position is past the end of input, return value as a length. ↓
  6. ~IF[ %位置↗ ~EQ ❝. ]: ◎ If the character indicated by position is a U+002E FULL STOP character (.):

    1. %位置 ~INCBY 1 ◎ Advance position to the next character.
    2. ~IF[ %位置↗ ~NIN `~ASCII数字$ ] ⇒ ~RET ( %値, `長さ^i ) ◎ If position is past the end of input, or if the character indicated by position is not an ASCII digit, then return value as a length.
    3. %小数 ~LET %入力 内の %位置 から `~ASCII数字$からなる`符号位置~並びを収集-$した結果 ◎ ↓
    4. %値 ~INCBY `Base10$( %小数 ) ÷ `Power10$( %小数 の文字数 ) ◎ Let divisor have the value 1. ◎ Fraction loop: Multiply divisor by ten. ◎ Add the value of the character indicated by position, interpreted as a base-ten digit (0..9) and divided by divisor, to value. ◎ Advance position to the next character. ◎ If position is past the end of input, then return value as a length. ◎ If the character indicated by position is an ASCII digit, return to the step labeled fraction loop in these substeps.
  7. ~IF[ %位置↗ ~EQ ❝% ] ⇒ ~RET ( %値, `百分率^i ) ◎ If position is past the end of input, return value as a length. ◎ If the character indicated by position is a U+0025 PERCENT SIGN character (%), return value as a percentage.
  8. ~RET ( %値, `長さ^i ) ◎ Return value as a length.

2.3.4.5. 非~zeroの百分率と長さ

所与の文字列 %入力 を `非~zero寸法~値として構文解析-@ する規則は、次の~algoで与えられ,[[ ( 0.0 以上の実数, 種別(`百分率^i または `長さ^i )) の組 ], ~error ]のいずれかを返す: ◎ The rules for parsing non-zero dimension values are as given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either a number greater than 0.0, or an error; if a number is returned, then it is further categorized as either a percentage or a length.

  1. %V ~LET %入力 を`寸法~値として構文解析-$した結果 ◎ Let input be the string being parsed. ◎ Let value be the result of parsing input using the rules for parsing dimension values.
  2. ~IF[ %V ~EQ ~error ]~OR [ %V ~EQ 0 ] ⇒ ~RET ~error ◎ If value is an error, return an error. ◎ If value is zero, return an error.
  3. ~RET %V ◎ If value is a percentage, return value as a percentage. ◎ Return value as a length.

2.3.4.6. 浮動小数点数~list

❝, で互いに区切られた, 0 個以上の`妥当な浮動小数点数$からなる文字列は、 `妥当な浮動小数点数~list@ とされる。 区切りには他の文字(`~ASCII空白$など)は含まない。 加えて,許容される 浮動小数点数の個数 には、制約が課されることもある。 ◎ A valid list of floating-point numbers is a number of valid floating-point numbers separated by U+002C COMMA characters, with no other characters (e.g. no space characters). In addition, there might be restrictions on the number of floating-point numbers that can be given, or on the range of values allowed.

所与の文字列 %入力 を `浮動小数点数~listとして構文解析-@ する規則は、次で与えられる: ◎ The rules for parsing a list of floating-point numbers are as follows:

  1. %位置 ~LET %入力 の先頭の文字を指している~pointer ◎ Let input be the string being parsed. ◎ Let position be a pointer into input, initially pointing at the start of the string.
  2. %実数~list ~LET 空~list — この~listが~algoの結果になる。 ◎ Let numbers be an initially empty list of floating-point numbers. This list will be the result of this algorithm.
  3. %区切子 ~LET { `0020^U ( SPACE ), ❝,, ❝; } ◎ ↓
  4. %入力 内の %位置 から %区切子 からなる`符号位置~並びを収集-$する — これは、頭部の区切子を読飛ばす。 ◎ Collect a sequence of code points that are space characters, U+002C COMMA, or U+003B SEMICOLON characters from input given position. This skips past any leading delimiters.
  5. ~WHILE ( %位置↗ ~NEQ ε ): ◎ While position is not past the end of input:

    1. %入力 内の %位置 から { %区切子, `~ASCII数字$, ❝., ❝- } 以外の`符号位置~並びを収集-$する — これは、頭部の無用な文字~並びを読飛ばす。 ◎ Collect a sequence of code points that are not space characters, U+002C COMMA, U+003B SEMICOLON, ASCII digits, U+002E FULL STOP, or U+002D HYPHEN-MINUS characters from input given position. This skips past leading garbage.
    2. %実数~文字列 ~LET %入力 内の %位置 から %区切子 以外の`符号位置~並びを収集-$した結果 ◎ Collect a sequence of code points that are not space characters, U+002C COMMA, or U+003B SEMICOLON characters from input given position, and let unparsed number be the result.
    3. %実数 ~LET %実数~文字列 を`浮動小数点数として構文解析-$した結果 ◎ Let number be the result of parsing unparsed number using the rules for parsing floating-point number values.
    4. ~IF[ %実数 ~EQ ~error ] ⇒ %実数 ~SET 0 ◎ If number is an error, set number to zero.
    5. %実数~list に %実数 を付加する ◎ Append number to numbers.
    6. %入力 内の %位置 から %区切子 からなる`符号位置~並びを収集-$する — これは、次の区切子を読飛ばす。 ◎ Collect a sequence of code points that are space characters, U+002C COMMA, or U+003B SEMICOLON characters from input given position. This skips past the delimiter.
  6. ~RET %実数~list ◎ Return numbers.

2.3.4.7. 寸法~list

所与の文字列 %生~入力 を `寸法~listとして構文解析-@ する規則は、次で与えられ,[ 0 個以上の[ ( 実数, 単位 ) の組 ]からなる~listを返す — ここで、単位は[ `百分率^i, `相対^i, `絶対^i ]のいずれかである: ◎ The rules for parsing a list of dimensions are as follows. These rules return a list of zero or more pairs consisting of a number and a unit, the unit being one of percentage, relative, and absolute.

  1. ~IF[ %生~入力 の最後の文字 ~EQ ❝, ] ⇒ %生~入力 から最後の文字を除去する ◎ Let raw input be the string being parsed. ◎ If the last character in raw input is a U+002C COMMA character (,), then remove that character from raw input.
  2. %~token列 ~LET %生~入力 を`~commaで分割-$した結果 ◎ Split the string raw input on commas. Let raw tokens be the resulting list of tokens.
  3. %結果 ~LET 空~list ◎ Let result be an empty list of number/unit pairs.
  4. ~FOR %~token列 内の ~EACH ( ~token %入力 ) に対し: ◎ For each token in raw tokens, run the following substeps:

    1. %位置 ~LET %入力 の先頭の文字を指している~pointer ◎ Let input be the token. ◎ Let position be a pointer into input, initially pointing at the start of the string.
    2. %値 ~LET 0 ◎ Let value be the number 0. ◎ Let unit be absolute.
    3. %位置↗ に応じて:

      ε
      %結果 に組 ( %値, `相対^i ) を追加する;
      ~CONTINUE ◎ If position is past the end of input, set unit to relative and jump to the last substep.
      `~ASCII数字$
      %値 ~INCBY `Base10$( %入力 内の %位置 から `~ASCII数字$からなる`符号位置~並びを収集-$した結果 ) ◎ If the character at position is an ASCII digit, collect a sequence of code points that are ASCII digits from input given position, interpret the resulting sequence as an integer in base ten, and increment value by that integer.
      ❝. ◎ If the character at position is a U+002E FULL STOP character (.), run these substeps:
      1. %s ~LET %入力 内の %位置 から { `~ASCII空白$, `~ASCII数字$ } からなる`符号位置~並びを収集-$した結果 ◎ Collect a sequence of code points consisting of space characters and ASCII digits from input given position. Let s be the resulting sequence.
      2. %s から`~ASCII空白$すべてを除去する ◎ Remove all space characters in s.
      3. %値 ~INCBY ( `Base10$( %s ) ÷ `Power10$( %s の文字~数 ) ) ◎ If s is not the empty string, run these subsubsteps: • Let length be the number of characters in s (after the spaces were removed). • Let fraction be the result of interpreting s as a base-ten integer, and then dividing that number by 10length. • Increment value by fraction.
    4. %入力 内の %位置 から`~ASCII空白を読飛ばす$ ◎ Skip ASCII whitespace within input given position.
    5. %単位 ~LET %位置↗ に応じて,次で与えられる単位:

      ❝%
      `百分率^i ◎ If the character at position is a U+0025 PERCENT SIGN character (%), then set unit to percentage.
      ❝*
      `相対^i ◎ Otherwise, if the character at position is a U+002A ASTERISK character (*), then set unit to relative.
      その他
      `絶対^i
    6. %結果 に組 ( %値, %単位 ) を追加する ◎ Add an entry to result consisting of the number given by value and the unit given by unit.
  5. ~RET %結果 ◎ Return the list result.

2.3.5. 日付と時刻

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

2.3.6. 色

`単純~色@ は、3 個の[ 範囲 0 〜 255 の 8-bit数 ]からなり,順に sRGB 色~空間~内の色の ( ~red, ~green, ~blue ) 成分を表現する。 `SRGB$r ◎ A simple color consists of three 8-bit numbers in the range 0..255, representing the red, green, and blue components of the color respectively, in the sRGB color space. [SRGB]

次をすべて満たす文字列 %s は、 `妥当な単純~色@ とされる:

  • %s の文字~数 ~EQ 7
  • %s の最初の文字 ~EQ ❝#
  • %s の残りの 6 文字は すべての `~ASCII~hex数字$ — この 6 文字を成す各 2 文字ずつが、順に ( ~red, ~green, ~blue ) 成分を~hex数字による整数で表現する。
◎ A string is a valid simple color if it is exactly seven characters long, and the first character is a U+0023 NUMBER SIGN character (#), and the remaining six characters are all ASCII hex digits, with the first two digits representing the red component, the middle two digits representing the green component, and the last two digits representing the blue component, in hexadecimal.

`妥当な単純~色$であって,範囲 ❝A 〜 ❝F 内の文字は含まれていない文字列は `妥当な小文字~単純~色@ とされる。 ◎ A string is a valid lowercase simple color if it is a valid simple color and doesn't use any characters in the range U+0041 LATIN CAPITAL LETTER A to U+0046 LATIN CAPITAL LETTER F.

所与の文字列 %入力 を `単純~色として構文解析-@ する規則は、次の~algoで与えられ,[ `単純~色$, ~error ]のいずれかを返す: ◎ The rules for parsing simple color values are as given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either a simple color or an error.

  1. ~IF[ %入力 は`妥当な単純~色$でない ] ⇒ ~RET ~error ◎ Let input be the string being parsed. ◎ If input is not exactly seven characters long, then return an error. ◎ If the first character in input is not a U+0023 NUMBER SIGN character (#), then return an error. ◎ If the last six characters of input are not all ASCII hex digits, then return an error.
  2. ~RET %入力 の ( 2 〜 3 個目, 4 〜 5 個目, 6 〜 7 個目 ) の文字を~hex数字として整数に解釈した結果を, ( ~red, ~green, ~blue ) 成分とする`単純~色$ ◎ Let result be a simple color. ◎ Interpret the second and third characters as a hexadecimal number and let the result be the red component of result. ◎ Interpret the fourth and fifth characters as a hexadecimal number and let the result be the green component of result. ◎ Interpret the sixth and seventh characters as a hexadecimal number and let the result be the blue component of result. ◎ Return result.

所与の`単純~色$ %C を `単純~色として直列化する規則@ は、次の~algoで与えられ,`妥当な小文字~単純~色$を返す: ◎ The rules for serializing simple color values given a simple color are as given in the following algorithm:

  1. %結果 ~LET 1 個の ❝# からなる文字列 ◎ Let result be a string consisting of a single U+0023 NUMBER SIGN character (#).
  2. ~FOR %C 内の~EACH ( 成分 %成分 ) に対し,[ ~red, ~green, ~blue ]の順に ⇒ %結果 に[ %成分 を ( 2 個の~hex数字 ) に変換した結果 ]を付加する — ここで、数字には`小文字~ASCII~hex数字$を利用し,必要なら先頭に~zeroを付け加えるとする。 ◎ Convert the red, green, and blue components in turn to two-digit hexadecimal numbers using ASCII lower hex digits, zero-padding if necessary, and append these numbers to result, in the order red, green, blue.
  3. ~RET %結果 ◎ Return result, which will be a valid lowercase simple color.

一部の廃用にされた旧来の属性は、色を構文解析するときに,より混み入った `旧来の色~値として構文解析-@ する規則を利用する。 それは,次の~algoで与えられ、所与の文字列 %入力 に対し[ `単純~色$, ~error ]のいずれかを返す: ◎ Some obsolete legacy attributes parse colors in a more complicated manner, using the rules for parsing a legacy color value, which are given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either a simple color or an error.

  1. ~IF[ %入力 ~EQ 空~文字列 ] ⇒ ~RET ~error ◎ Let input be the string being parsed. ◎ If input is the empty string, then return an error.
  2. %入力 から`頭部と尾部の~ASCII空白を剥ぐ$ ◎ Strip leading and trailing ASCII whitespace from input.
  3. ~IF[ %入力 ~EQ~ACI `transparent^l ] ⇒ ~RET ~error ◎ If input is an ASCII case-insensitive match for the string "transparent", then return an error.
  4. ~IF[ %入力 ~IN~ACI `有名~色$ ] ⇒ ~RET その~keywordに対応する`単純~色$ `CSSCOLOR$r ◎ If input is an ASCII case-insensitive match for one of the named colors, then return the simple color corresponding to that keyword. [CSSCOLOR]

    注記: CSS2 System Color は認識されない。 ◎ CSS2 System Colors are not recognized.

  5. ~IF[ %入力 は[ ❝#, 3 個の`~ASCII~hex数字$ ]の並びである ] ⇒ ~RET 次のようにされた`単純~色$ ⇒ ( ~red, ~green, ~blue ) 成分 ~SET 順に, %入力 の (2, 3, 4) 個目の文字を[ (~hex数字として整数に解釈した結果 ) × 17 ] ◎ If input is four characters long, and the first character in input is a U+0023 NUMBER SIGN character (#), and the last three characters of input are all ASCII hex digits, then run these substeps: • Let result be a simple color. • Interpret the second character of input as a hexadecimal digit; let the red component of result be the resulting number multiplied by 17. • Interpret the third character of input as a hexadecimal digit; let the green component of result be the resulting number multiplied by 17. • Interpret the fourth character of input as a hexadecimal digit; let the blue component of result be the resulting number multiplied by 17. • Return result.

  6. %入力 内の U+FFFF を超える~Unicode符号位置(すなわち,基本多言語面に含まれない文字)すべてを `00^l に置換する ◎ Replace any characters in input that have a Unicode code point greater than U+FFFF (i.e. any characters that are not in the basic multilingual plane) with the two-character string "00".
  7. %入力 ~SET %入力 の最初の 128 文字までの文字列 ◎ If input is longer than 128 characters, truncate input, leaving only the first 128 characters.
  8. ~IF[ %入力 の最初の文字 ~EQ ❝# ] ⇒ %入力 から最初の文字を除去する ◎ If the first character in input is a U+0023 NUMBER SIGN character (#), remove it.
  9. %入力 内の非`~ASCII~hex数字$はすべて ❝0 に置換する ◎ Replace any character in input that is not an ASCII hex digit with the character U+0030 DIGIT ZERO (0).
  10. ~IF[ %入力 ~EQ 空~文字列 ] ⇒ %入力 ~SET `000^l ◎ ↓
  11. ~WHILE ( %入力 の長さは 3 の倍数でない ) ⇒ %入力 に ❝0 を付加する ◎ While input's length is zero or not a multiple of three, append a U+0030 DIGIT ZERO (0) character to input.
  12. ( %R, %G, %B ) ~LET %入力 を等しい長さの 3 個の文字列に分割した結果 ◎ ↓
  13. %L ~LET %R の長さ ◎ Split input into three strings of equal length, to obtain three components. Let length be the length of those components (one third the length of input).
  14. ~IF[ %L ~GT 8 ]

    1. ( %R, %G, %B ) の ~EACH( %成分 ) に対し ⇒ %成分 から頭部の ( %L ~MINUS 8 ) 個の文字を除去する
    2. %L ~SET 8
    ◎ If length is greater than 8, then remove the leading length-8 characters in each component, and let length be 8.
  15. ~WHILE ( [ %L ~GT 2 ]~AND[ ( %R, %G, %B ) の最初の文字はいずれも ~EQ ❝0 ] ) ⇒ ( %R, %G, %B ) の最初の文字をいずれも除去する;
    %L ~DECBY 1 ◎ While length is greater than two and the first character in each component is a U+0030 DIGIT ZERO (0) character, remove that character and reduce length by one.
  16. ~IF[ %L ~GT 2 ] ⇒ ( %R, %G, %B ) の ~EACH( %成分 ) に対し ⇒ %成分 ~SET %成分 の最初の 2 文字までの文字列 ◎ If length is still greater than two, truncate each component, leaving only the first two characters in each.
  17. ~RET 次のようにされた`単純~色$ ⇒ ( ~red, ~green, ~blue ) 成分 ~SET 順に, ( %R, %G, %B ) を~hex数字~列として整数に解釈した結果 ◎ Let result be a simple color. ◎ Interpret the first component as a hexadecimal number; let the red component of result be the resulting number. ◎ Interpret the second component as a hexadecimal number; let the green component of result be the resulting number. ◎ Interpret the third component as a hexadecimal number; let the blue component of result be the resulting number. ◎ Return result.

注記: 2D ~graphics文脈 は、不透明度も取扱う別々の色~構文を有する。 ◎ The 2D graphics context has a separate color syntax that also handles opacity.

2.3.7. 空白区切りの~token列

`空白区切りの~token集合@ とは、[ 1 個以上の`~ASCII空白$並び ]で互いに区切られた, 0 個以上の~tokenからなる文字列である — ここでの~tokenとは ⇒ [ `~ASCII空白$でない 1 個以上の文字 ]からなる~~任意の文字列である。 ◎ A set of space-separated tokens is a string containing zero or more words (known as tokens) separated by one or more space characters, where words consist of any string of one or more characters, none of which are space characters.

`空白区切りの~token集合$は: ◎ ↓

  • [ 頭部/尾部 ]に`~ASCII空白$並びがあってもよい。 ◎ A string containing a set of space-separated tokens may have leading or trailing space characters.
  • その中の どの~tokenも重複していないならば、 `空白区切りの一意な~tokenからなる無順序~集合@ という。 ◎ An unordered set of unique space-separated tokens is a set of space-separated tokens where none of the tokens are duplicated.
  • その中の どの~tokenも重複していない, かつ 順序も有意義とされるならば、 `空白区切りの一意な~tokenからなる有順序~集合@ という。 ◎ An ordered set of unique space-separated tokens is a set of space-separated tokens where none of the tokens are duplicated but where the order of the tokens is meaningful.
  • 文脈によっては、各~tokenに許容される集合が定義されることもある。 そのような場合、どの~tokenも,この集合に入ってい~MUST — さもなければ、値は非~適合になる。 そのような集合が特に供されていない場合、どの~tokenも適合することになる。 ◎ Sets of space-separated tokens sometimes have a defined set of allowed values. When a set of allowed values is defined, the tokens must all be from that list of allowed values; other values are non-conforming. If no such set of allowed values is provided, then all values are conforming.

注記: `空白区切りの~token集合$内の各~tokenを比較する方法(文字大小区別かどうかなど)は、~token集合ごとに定義される。 ◎ How tokens in a set of space-separated tokens are to be compared (e.g. case-sensitively or not) is defined on a per-set basis.

2.3.8. ~comma区切りの~token列

`~comma区切りの~token集合@ とは、 1 個の ❝, で互いに区切られた, 0 個以上の前後~空白~可の~tokenからなる文字列である — ここでの前後~空白~可の~tokenとは、次の並びで与えられる~~任意の文字列である:

  1. 0 個以上の`~ASCII空白$
  2. [ 空であるか, または次のいずれも満たす ]ような文字列( “~token” ):

    • どの文字も ❝, でない
    • 最初の文字 ~NIN `~ASCII空白$
    • 最後の文字 ~NIN `~ASCII空白$
  3. 0 個以上の`~ASCII空白$
◎ A set of comma-separated tokens is a string containing zero or more tokens each separated from the next by a single U+002C COMMA character (,), where tokens consist of any string of zero or more characters, neither beginning nor ending with space characters, nor containing any U+002C COMMA characters (,), and optionally surrounded by space characters.

具体的には、文字列 ` a ,b,,d d ^l は、 4 個の~token[ `a^l, `b^l, 空~文字列, `d d^l ]からなる。 各~tokenの頭部と尾部の空白は、~tokenの一部をなさず,空~文字列も~tokenとされる。 ◎ For instance, the string " a ,b,,d d " consists of four tokens: "a", "b", the empty string, and "d d". Leading and trailing whitespace around each token doesn't count as part of the token, and the empty string can be a token.

`~comma区切りの~token集合$には、何が妥当な~tokenを成すかについて,更なる制約が~~課されることもあり、その場合の各~tokenはその制約を満たさ~MUST。 さもなければ値は非~適合とされる。 ◎ Sets of comma-separated tokens sometimes have further restrictions on what consists a valid token. When such restrictions are defined, the tokens must all fit within those restrictions; other values are non-conforming. If no such restrictions are specified, then all values are conforming.

2.3.9. 参照

次の並びからなる文字列は、 %文書 内の[ `要素~型$ %型 の要素 ]への `妥当な~hash名~参照@ とされる:

  1. ❝#
  2. 次を満たす %文字列 ⇒ 同じ`木$内に次を満たすような %要素 がある ⇒ [ %要素 の`要素~型$ ~EQ %型 ]~AND[ %文字列 ~EQ %要素 の `name^a 属性の値 ]
◎ A valid hash-name reference to an element of type type is a string consisting of a U+0023 NUMBER SIGN character (#) followed by a string which exactly matches the value of the name attribute of an element with type type in the same tree.

文脈~node %視野 が与えられた下で,所与の文字列 %入力 を`要素~型$ %型 の要素への `~hash名~参照として構文解析-@ する規則は、次で与えられる: ◎ The rules for parsing a hash-name reference to an element of type type, given a context node scope, are as follows:

  1. ~IF[ %入力 内に ❝# はない ] ⇒ ~RET ~NULL ◎ ↓
  2. %~hash ~LET %入力 内の最初の ❝# より後の文字すべてからなる文字列 ◎ ↓
  3. ~IF[ %~hash ~EQ 空~文字列 ] ⇒ ~RET ~NULL ◎ If the string being parsed does not contain a U+0023 NUMBER SIGN character, or if the first such character in the string is the last character in the string, then return null and abort these steps. ◎ Let s be the string from the character immediately after the first U+0023 NUMBER SIGN character in the string being parsed up to the end of that string.
  4. ~IF[ 次の条件すべてを満たす要素はある ]…:

    • [ %視野 を根とする木 ]内にある
    • `要素~型$ ~EQ %型
    • %~hash ~IN { 要素の `id$a 属性~値, 要素の `name^a 属性~値 }

    …ならば ⇒ ~RET それらのうち `木~順序$で最初のもの

    ◎ Return the first element of type type in scope's tree, in tree order, that has an id or name attribute whose value is s, or null if there is no such element.

    注記: `id$a 属性は、構文解析-時には織り込まれるが,その値が`妥当な~hash名~参照$かどうか決定するときには利用されない。 すなわち, `id$a 属性に基づいて要素を指すような~hash名~参照は、(その要素が同じ値をとる `name^a 属性も有していない限り)適合性~errorとされる。 ◎ Although id attributes are accounted for when parsing, they are not used in determining whether a value is a valid hash-name reference. That is, a hash-name reference that refers to an element based on id is a conformance error (unless that element also has a name attribute with the same value).

  5. ~RET ~NULL ◎ ↑

2.3.10. 媒体~query

Media Queries 仕様 `MQ$r の `media-query-list^t 生成規則に合致する文字列は `妥当な媒体~query~list@ とされる。 ◎ A string is a valid media query list if it matches the <media-query-list> production of the Media Queries specification. [MQ]

次のいずれかに該当する文字列は、 `利用者の環境に合致する@ とされる:

  • 0 個以上の`~ASCII空白$のみからなる文字列
  • Media Queries 仕様による定義に則って,利用者の環境に合致するような 媒体~query~list
◎ A string matches the environment of the user if it is the empty string, a string consisting of only space characters, or is a media query list that matches the user's environment according to the definitions given in the Media Queries specification. [MQ]

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 substeps:

  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 substeps:

  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

`11235^bug

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 %入力 の先頭の文字を指している~pointer ◎ 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 状態である。 `反映$の目的0においては、 `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 の存在0。 ◎ 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 `String10$( `指定~値$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 `String10$( %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属性の目的0においては、次に与える “下位手続き (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$ − 1 ) } とする(~listが空ならば空)。 ◎ 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の安全な渡し方

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