W3C

CSS オブジェクトモデル (CSSOM)

2016 年 8 月 26 日付 作業草案

このバージョン
編集者草案
https://drafts.csswg.org/cssom/
最新発行バージョン
https://www.w3.org/TR/cssom-1/
以前のバージョン
https://www.w3.org/TR/2016/WD-cssom-1-20160317/
https://www.w3.org/TR/2015/WD-cssom-1-20150529/
https://www.w3.org/TR/2013/WD-cssom-20131205/
https://www.w3.org/TR/2011/WD-cssom-20110712/
https://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/
テスト一式
http://test.csswg.org/suites/cssom-1_dev/nightly-unstable
最新の課題
仕様内
GitHub Issues
編集
Simon Pieters (Opera Software ASA)
Daniel Glazman (Disruptive Innovations)
前任編集者
Glenn Adams (Cox Communications, Inc.) glenn.adams@cos.com
Anne van Kesteren (Opera Software ASA) annevk@annevk.nl
旧来の課題リスト
Bugzilla
Copyright © 2016 W3C® (MIT, ERCIM, Keio, Beihang). W3C liability, trademark and document use rules apply.

要約

CSSOM は、 Media Queries, Selectors, および CSS 自身のための(一般的な構文解析と直列化の規則も含めた) API を定義する。 CSSOM defines APIs (including generic parsing and serialization rules) for Media Queries, Selectors, and of course CSS itself.

CSS は、( HTML や XML などの)構造を備える文書から, スクリーン, 紙, スピーチ, 等々 の媒体への具現化法を記述するための言語である。 CSS is a language for describing the rendering of structured documents (such as HTML and XML) on screen, on paper, in speech, etc.

この文書の位置付け

これは編集者草案の公開の複製です… 【 以下、この節の内容は CSS 日本語訳 共通ページ に委譲 】

1. 概要

この文書は CSS Object Model (以下, “CSSOM” )の中核をなす特色機能を規定する。 CSSOM に基づく他の仕様, および他の CSS 関連の仕様は、これらの特色機能に対する拡張を定義する。 ◎ This document formally specifies the core features of the CSS Object Model (CSSOM). Other documents in the CSSOM family of specifications as well as other CSS related specifications define extensions to these core features.

CSSOM の中核をなす特色機能は、作者定義~scriptから~style関連の状態~情報への~accessおよび操作を可能にするための,基本的な能力を提供することを目的とする。 ◎ The core features of the CSSOM are oriented towards providing basic capabilities to author-defined scripts to permit access to and manipulation of style related state information and processes.

以下で定義される特色機能は、 W3C DOM Working Group の手による先行の仕様, 主に `DOM-LEVEL-2-STYLE$r を基にしている。 この文書の目的は:

  • (試験し易さと相互運用性を向上させるため)より技術的な詳細を提供して,先行の仕事を向上させる。
  • 限られた~~範囲にしか実装されておらず,この文脈において最早~本質的とは見なされていない一部の特色機能を、非推奨に, もしくは除去する。
  • 広く実装されてきている, あるいはそうなるものと予期されている,ある種の拡張を新たに指定する。

The features defined below are fundamentally based on prior specifications of the W3C DOM Working Group, primarily [DOM-LEVEL-2-STYLE]. The purposes of the present document are (1) to improve on that prior work by providing more technical specificity (so as to improve testability and interoperability), (2) to deprecate or remove certain less-widely implemented features no longer considered to be essential in this context, and (3) to newly specify certain extensions that have been or expected to be widely implemented.

【日本語訳に固有の表記規約】

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

加えて、次の記法も用いる:

記法 意味
%s ~APPEND %a ~APPEND %b ~APPEND … 左辺の文字列 %s の末尾に後続の文字列 %a, %b, … を示された順に~~付加する演算を表す。 式として用いられた場合、結果の %s がその値になる。
~SP 1個の space 文字 `0020^cp を表す。
`~ACI@ この表記が添えられた ~EQ/~NEQ/~IN/~NIN は、 `ASCII 文字大小無視$による比較に基づくことを意味する。

2. 各種用語

この仕様は次の文書から一部の用語を取り入れている: `DOM$r `HTML$r `CSS3SYN$r `ENCODING$r `URL$r `FETCH$r `XML-STYLESHEET$r `XML$r ◎ This specification employs certain terminology from the following documents: DOM, HTML, CSS Syntax, Encoding, URL, Fetch, Associating Style Sheets with XML documents and XML. [DOM] [HTML] [CSS3SYN] [ENCODING] [URL] [FETCH] [XML-STYLESHEET] [XML]

`A^I を~ifcとするとき, “`A^I ~ifcを実装する~obj” の略記として、語 “`A^I ~obj” が用いられる。 ◎ When this specification talks about object A where A is actually an interface, it generally means an object implementing interface A.

setunset は、~flagや変数の `true^c / `false^c 値を表す。 これらの語は、一部の値を `true^c / `false^c に~~変更する際にも用いられる。 【 他の仕様の和訳との一貫性をとるため、この訳では,この語は利用せず,前節に述べた ~ON, ~OFF を用いる。 】 ◎ The terms set and unset to refer to the true and false values of binary flags or variables, respectively. These terms are also used as verbs in which case they refer to mutating some value to make it true or false, respectively.

`~supportされる~styling言語@ は CSS を指す。 ◎ The term supported styling language refers to CSS.

注記: UA が他の~styling言語も~supportするようになった場合,この仕様も必要に応じて更新されることが予期されている。 ◎ Note: If another styling language becomes supported in user agents, this specification is expected to be updated as necessary.

`~supportされる~css~prop@ は、~UAが実装する~css~propであって,~vendor接頭辞~付きの~propも含まれるが、`~custom~prop$は除外される。 この仕様における比較~目的においては、`~supportされる~css~prop$は小文字化されてい~MUST。 ◎ The term supported CSS property refers to a CSS property that the user agent implements, including any vendor-prefixed properties, but excluding custom properties. A supported CSS property must be in its lowercase form for the purpose of comparisons in this specification.

この仕様においては、どの要素に対しても[ `before$pe, `after$pe ]疑似要素は,存在するものと見なされる — それらに対する~boxは生成されないとしても。 ◎ In this specification the ::before and ::after pseudo-elements are assumed to exist for all elements even if no box is generated for them.

IDL ~ifc~member(~meth/属性)から別の~memberが呼ばれるときは、~UAは,~memberの内部 API を呼出さ~MUST — すなわち、作者は独自の ECMAScript ~propや関数で上書きして,~memberのふるまいを変更することはできない。 ◎ When a method or an attribute is said to call another method or attribute, the user agent must invoke its internal API for that attribute or method so that e.g. the author can’t change the behavior by overriding attributes or methods with custom properties or functions in ECMAScript.

特に指定されない限り、文字列の比較は `文字大小区別$で行われる。 ◎ Unless otherwise stated, string comparisons are done in a case-sensitive manner.

【 他の仕様からの,この仕様で利用される語の一部を下の一覧に挙げる 】

参照先/原語表記 — 備考
以下は, `CSS21$r にて定義される:
`無視される@ ignore
以下は, `CSS3CASCADE$r にて定義される:
`~cascaded値@ cascaded value
`算出値@ computed value
`使用値@ used value
`初期値@ initial value
`指定値@ specified value
`略式~prop@ shorthand — 関連する一連の`下位prop$をまとめて指定する~prop
`下位prop@ longhand sub-properties
`正準的~順序@ “canonical order” — 所与の`略式~prop$を規定する仕様において,その~propの定義表の中の値~定義 欄に示されている`下位prop$を直列化する順序を意味する(定義表の中で別途,その順序を指定する欄が設けられることもある)。
以下は, `SELECTORS4$r にて定義される:
`選択子@ selector — 以下に挙げられる “選択子~list” と “〜選択子” の総称。
`選択子~list@ selector list — 原文には Selectors Level 3 までの呼称 `group of selectors@ (“選択子群”)が用いられているが、この訳では, Selectors Level 4 に基づく呼称に変更している。
`複体~選択子@ complex selector — `結合子$で連結された`合体~選択子$の並び。 Selectors Level 4 にて(選択子の構造をより明確に述べるために)導入された語。 一部の~algoの定義を明確化するため,この訳ではこの語を利用する。
`合体~選択子@ compound selector
`単体~選択子@ simple selector
`全称~選択子@ universal selector
`属性~選択子@ attribute selector
`ID 選択子@ ID selector
`型~選択子@ type selector
`~class選択子@ class selector
`疑似類@ pseudo-class
`疑似要素@ pseudo-element
`結合子@ combinator
以下は, `CSS3NAMESPACE$r にて定義される:
`名前空間~接頭辞@ namespace prefix
`既定の名前空間@ default namespace
`~null名前空間@ null namespace — どの名前空間にも属さないことを意味する。
以下は, `CSS3PAGE$r にて定義される:
`頁~選択子@ page selector
`~margin at-規則@ margin at-rules — page-margin box を作成する種々の at-規則の総称
`~css頁~選択子の~list@ page_selector_list — `頁~選択子$の,~comma区切りによる~list
以下は, `MEDIAQUERIES-4$r にて定義される:
`媒体~照会@ media query
`媒体~特能@ media feature
以下は, `DOM$r にて定義される:
`文書の文字~符号化方式@ document’s character encoding
`Document@I Document — `Document^I ~objを指して,単に`文書$とも記すことにする。
`Element@I Element
`ProcessingInstruction@I ProcessingInstruction
`~node@ node
以下は,その他の仕様にて定義される:
`before@pe, `after@pe 疑似要素 `before^pe, `after^pe — `CSS-PSEUDO-4$r
`環境~符号化方式@ environment encoding — `CSS3SYN$r
`符号化方式を取得@ get an encoding — `ENCODING$r
`CORS 同一生成元@ CORS-same-origin — `HTML$r

2.1. 直列化-時の成句的な手続き

文字 %c を `~escape@ するときは、文字列[ ❝\ ~APPEND %c ]を生成する。 ◎ To escape a character means to create a string of "\" (U+005C), followed by the character.

文字 %c を `符号位置として~escape@ するときは、文字列[ ❝\ ~APPEND[ 基数 16 の下で, %c の Unicode 符号位置を最小個数の 16 進~数字( { ❝0 〜 ❝9, ❝a 〜 ❝f } の文字)で表現する文字~並び ]~APPEND ~SP ]を生成する。 ◎ To escape a character as code point means to create a string of "\" (U+005C), followed by the Unicode code point as the smallest possible number of hexadecimal digits in the range 0-9 a-f (U+0030 to U+0039 and U+0061 to U+0066) to represent the code point in base 16, followed by a single SPACE (U+0020).

文字列 %入力 を `識別子として直列化-@ するときは、次を実行した結果を返す: ◎ To serialize an identifier means to create a string represented by the concatenation of, for each character of the identifier:

【 これは ~css識別子 を生成する 】

  1. %文字列 ~LET 空文字列 ◎ ↑
  2. ~FOR %入力 内の ~EACH ( 文字 %c ) に対し,順に: ◎ ↑

    1. ~IF[ %c ~EQ NULL 文字 `0000^cp ] ⇒ %文字列 ~APPEND[ REPLACEMENT CHARACTER `FFFD^cp ] ◎ If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD).
    2. ~ELIF[ %c ~IN { U+0001 〜 U+001F, U+007F } ] ⇒ %文字列 ~APPEND[ %c を`符号位置として~escape$した結果 ] ◎ If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F, then the character escaped as code point.
    3. ~ELIF[ これは初回の反復である ]~AND[ %c ~IN { ❝0 〜 ❝9 } ] ⇒ %文字列 ~APPEND[ %c を`符号位置として~escape$した結果 ] ◎ If the character is the first character and is in the range [0-9] (U+0030 to U+0039), then the character escaped as code point.
    4. ~ELIF[ これは2回目の反復である ]~AND[ %c ~IN { ❝0 〜 ❝9 } ]~AND[ %入力 の最初の文字 ~EQ ❝- ] ⇒ %文字列 ~APPEND[ %c を`~escape$した結果 ] ◎ If the character is the second character and is in the range [0-9] (U+0030 to U+0039) and the first character is a "-" (U+002D), then the character escaped as code point.
    5. ~ELIF[ これは初回の反復である ]~AND[ %c ~EQ ❝- ]~AND[ これは最後の反復である ] ⇒ %文字列 ~APPEND[ %c を`~escape$した結果 ] ◎ If the character is the first character and is a "-" (U+002D), and there is no second character, then the escaped character.
    6. ~ELIF[ %c ~IN { U+0080 以上, ❝-, ❝_, ❝0 〜 ❝9, ❝A 〜 ❝Z, ❝a 〜 ❝z } ] ⇒ %文字列 ~APPEND %c ◎ If the character is not handled by one of the above rules and is greater than or equal to U+0080, is "-" (U+002D) or "_" (U+005F), or is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to U+005A), or \[a-z] (U+0061 to U+007A), then the character itself.
    7. ~ELSE ⇒ %文字列 ~APPEND[ %c を`~escape$した結果 ] ◎ Otherwise, the escaped character.
  3. ~RET %文字列 ◎ ↑

文字列 %入力 を `文字列として直列化-@ するときは、次を実行した結果を返す: ◎ To serialize a string means to create a string represented by '"' (U+0022), followed by the result of applying the rules below to each character of the given string, followed by '"' (U+0022):

【 これは ~css文字列 を生成する 】

  1. %文字列 ~LET ❝" ◎ ↑
  2. ~FOR %入力 内の ~EACH ( 文字 %c ) に対し,順に: ◎ ↑

    1. ~IF[ %c ~EQ NULL 文字 `0000^cp ] ⇒ %文字列 ~APPEND[ REPLACEMENT CHARACTER `FFFD^cp を`符号位置として~escape$した結果 ] ◎ If the character is NULL (U+0000), then the REPLACEMENT CHARACTER (U+FFFD) escaped as code point.
    2. ~ELIF[ %c ~IN { U+0001 〜 U+001F, U+007F } ] ⇒ %文字列 ~APPEND[ %c を`符号位置として~escape$した結果 ] ◎ If the character is in the range [\1-\1f] (U+0001 to U+001F) or is U+007F, the character escaped as code point.
    3. ~ELIF[ %c ~IN { ❝", ❝\ } ] ⇒ %文字列 ~APPEND[ %c を`~escape$した結果 ] ◎ If the character is '"' (U+0022) or "\" (U+005C), the escaped character.
    4. ~ELSE ⇒ %文字列 ~APPEND %c ◎ Otherwise, the character itself.
  3. %文字列 ~APPEND ❝" ◎ ↑
  4. ~RET %文字列 ◎ ↑

注記: ❝' は~escapeされない。 文字列は常に ❝" で括られた形で直列化されるので。 ◎ Note: "'" (U+0027) is not escaped because strings are always serialized with '"' (U+0022).

所与の文字列 %url を `~URLとして直列化-@ するときは ⇒ 文字列[ `url(^l ~APPEND[ %url を `文字列として直列化-$した結果 ] ~APPEND ❝) ]を生成する。 ◎ To serialize a URL means to create a string represented by "url(", followed by the serialization of the URL as a string, followed by ")".

文字列の~listを `~comma区切りで直列化-@ するときは ⇒ ~listの中の~EACH ( 文字列 ) を, `, ^l (すなわち[ ❝, ~APPEND ~SP ])で区切って ~list順に連結する。 ◎ To serialize a comma-separated list concatenate all items of the list in list order while separating them by ", ", i.e., COMMA (U+002C) followed by a single SPACE (U+0020).

文字列の~listを `空白~区切りで直列化-@ するときは ⇒ ~listの中の~EACH ( 文字列 ) を, ~SP で区切って ~list順に連結する。 ◎ To serialize a whitespace-separated list concatenate all items of the list in list order while separating them by " ", i.e., a single SPACE (U+0020).

注記: 上の規則により~listを直列化する際には、その先頭/末尾に余分な空白は挿入されない。 特に指定されない限り、空~listは,空文字列に直列化される。 ◎ Note: When serializing a list according to the above rules, extraneous whitespace is not inserted prior to the first item or subsequent to the last item. Unless otherwise specified, an empty list is serialized as the empty string.

3. 媒体~照会

`媒体~照会$は Media Queries 仕様にて定義される。 この節では、 API や直列化の形も含めた,`媒体~照会$を取り巻く種々の概念を定義する。 ◎ Media queries are defined by the Media Queries specification. This section defines various concepts around media queries, including their API and serialization form.

3.1. 媒体~照会の構文解析法

所与の文字列を `媒体~照会~listとして構文解析-@ する~algoは,Media Queries 仕様にて定義される。 これは,1個以上の`媒体~照会$からなる~listを返す。 ◎ To parse a media query list for a given string s into a media query list is defined in the Media Queries specification. Return the list of one or more media queries that the algorithm defined there gives.

注記: 結果が “無視される” 【 “ignored” 】 `媒体~照会$は、 `not all^l に変換されることになる。 ◎ Note: A media query that ends up being "ignored" will turn into "not all".

所与の文字列 %文字列 を `媒体~照会として構文解析-@ するときは ⇒ [ %文字列 を`媒体~照会~listとして構文解析-$した結果 ]に含まれる`媒体~照会$の個数が,[ 1 個ならば その`媒体~照会$ / ~ELSE_ ~NULL ]を返す。 ◎ To parse a media query for a given string s means to follow the parse a media query list steps and return null if more than one media query is returned or a media query if a single media query is returned.

注記: ここでも, “無視される” `媒体~照会$は、 `not all^l に変換されることになる。 ◎ Note: Again, a media query that ends up being "ignored" will turn into "not all".

3.2. 媒体~照会の直列化法

媒体~照会~list %~list を `媒体~照会~listとして直列化-@ するときは、次を実行する: ◎ To serialize a media query list run these steps:

  1. ~IF[ %~list は空である ] ⇒ ~RET 空文字列 ◎ If the media query list is empty return the empty string and terminate these steps.
  2. ~RET [ %~list 内の ~EACH ( `媒体~照会$ ) を `媒体~照会として直列化-$して得られる, %~list の順序による~list ]を,`~comma区切りで直列化-$した結果 ◎ Serialize each media query in the list of media queries, in the same order as they appear in the list of media queries, and then serialize the list.

`媒体~照会$ %媒体~照会 を `媒体~照会として直列化-@ するときは、次を実行する: ◎ To serialize a media query let s be the empty string, run the steps below, and finally return s:

  1. %文字列 ~LET 空文字列 ◎ ↑
  2. ~IF[ %媒体~照会 は否定形である ] ⇒ %文字列 ~APPEND `not^l ~APPEND ~SP ◎ If the media query is negated append "not", followed by a single SPACE (U+0020), to s.
  3. %型 ~LET %媒体~照会 の媒体~型を `識別子として直列化-$した上で,`ASCII 小文字化$した結果 ◎ Let type be the serialization as an identifier of the media type of the media query, converted to ASCII lowercase.
  4. ~IF[ %媒体~照会 に`媒体~特能$は含まれていない ] ⇒ ~RET %文字列 ~APPEND %型 ◎ If the media query does not contain media features append type, to s, then return s and terminate this algorithm.
  5. ~IF[ %型 ≠ `all^l ]~OR[ %媒体~照会 は否定形である ] ⇒ %文字列 ~APPEND %型 ~APPEND ~SP ~APPEND `and^l ~APPEND ~SP ◎ If type is not "all" or if the media query is negated append type, followed by a single SPACE (U+0020), followed by "and", followed by a single SPACE (U+0020), to s.
  6. %媒体~照会 内の~EACH ( `媒体~特能$ %特能 ) に対し,辞書式~順序で: ◎ Sort the media features in lexicographical order. ◎ Then, for each media feature:

    1. %文字列 ~APPEND ❝( ~APPEND[ %特能 の名前を`ASCII 小文字化$した結果 ] ◎ Append a "(" (U+0028), followed by the media feature name, converted to ASCII lowercase, to s.
    2. ~IF[ %特能 に値は与えられている ] ⇒ %文字列 ~APPEND ❝: ~APPEND ~SP ~APPEND[ %特能 の値を `媒体~特能~値として直列化-$した結果 ] ◎ If a value is given append a ":" (U+003A), followed by a single SPACE (U+0020), followed by the serialized media feature value, to s.
    3. %文字列 ~APPEND ❝) ◎ Append a ")" (U+0029) to s.
    4. ~IF[ この反復は最後でない ] ⇒ %文字列 ~APPEND ~SP ~APPEND `and^l ~APPEND ~SP ◎ If this is not the last media feature append a single SPACE (U+0020), followed by "and", followed by a single SPACE (U+0020), to s.
  7. ~RET %文字列 ◎

例を示す(長い行は折り~~返されている): ◎ Here are some examples of input (first column) and output (second column):

入力◎Input 出力◎Output
`not screen and (min-WIDTH:5px) AND (max-width:40px)^css `not screen and (max-width: 40px) and (min-width: 5px)^css
`all and (color) and (color)^css `(color)^css

3.2.1. 媒体~特能~値の直列化法

これは~css値の直列化に対応付けることを通して定義されるべきであろう — その上で,`媒体~特能$については~css値を通して定義されるように。 ◎ This should probably be done in terms of mapping it to serializing CSS values as media features are defined in terms of CSS values after all.

名前 %v の`媒体~特能$の値を `媒体~特能~値として直列化-@ するときは、下の一覧の最初の列から, %v に一致する行の2列目に記されている直列化~形式を用いる: ◎ To serialize a media feature value named v locate v in the first column of the table below and use the serialization format described in the second column:

`媒体~特能$◎Media Feature 直列化◎Serialization
`width$d ~UNSPECIFIED
`height$d ~UNSPECIFIED
`device-width$d ~UNSPECIFIED
`device-height$d ~UNSPECIFIED
`orientation$d 値 ~EQ `portrait^v ならば `portrait^l,
値 ~EQ `landscape^v ならば `landscape^l ◎ If the value is portrait: "portrait". If the value is landscape: "landscape".
`aspect-ratio$d ~UNSPECIFIED
`device-aspect-ratio$d ~UNSPECIFIED
`color$d ~UNSPECIFIED
`color-index$d ~UNSPECIFIED
`monochrome$d ~UNSPECIFIED
`resolution$d ~UNSPECIFIED
`scan$d 値 ~EQ `progressive^v ならば `progressive^l,
値 ~EQ `interlace^v ならば `interlace^l ◎ If the value is progressive: "progressive". If the value is interlace: "interlace".
`grid$d ~UNSPECIFIED

他の仕様はこの一覧を拡張でき,また~vendor接頭辞~付きの`媒体~特能$は独自の直列化~形式を持ち得る。 ◎ Other specifications can extend this table and vendor-prefixed media features can have custom serialization formats as well.

3.3. 媒体~照会の比較

2つの`媒体~照会$ %m1 と %m2 が `同値@ であるとは、それらを`媒体~照会として直列化-$した結果が同じになることを意味する。 【 簡潔に記すため,当訳では原文の語 “比較” ( compare media queries )から 言い回しを変えている。 】 ◎ To compare media queries m1 and m2 means to serialize them both and return true if they are a case-sensitive match and false if they are not.

3.4. `MediaList^I ~ifc

`MediaList$I ~ifcを実装する~objには, `媒体~照会~collection@ が結付けられる。 ◎ An object that implements the MediaList interface has an associated collection of media queries.

⇒! [ArrayClass] interface `MediaList@I { [TreatNullAs=EmptyString] stringifier attribute ~DS `mediaText$m; ~RA ~UL `length$m; getter ~DS? item(~UL %index); void `appendMedium$m(~DS %medium); void `deleteMedium$m(~DS %medium); };◎

~objの `被support~prop~index$ の範囲は[ 0 〜 ( ( ~collectionで表現される`媒体~照会~collection$に含まれている媒体~照会の総数 ) ~MINUS 1 ) ]である(~collectionが空なら存在しないことになる)。 ◎ The object’s supported property indices are the numbers in the range zero to one less than the number of media queries in the collection of media queries represented by the collection. If there are no such media queries, then there are no supported property indices.

文字列 %~text に対し, `~MediaList~objを作成-@ するときは、次を実行する: ◎ To create a MediaList object with a string text, run the following steps:

  1. %MediaList ~LET 新たな `MediaList$I ~obj ◎ Create a new MediaList object.
  2. %MediaList の `mediaText$m 属性 ~SET %~text ◎ Set its mediaText attribute to text.
  3. ~RET %MediaList ◎ Return the newly created MediaList object.

`mediaText@m 属性の被取得時には、[ 此れの`媒体~照会~collection$を `媒体~照会~listとして直列化-$した結果 ]を返さ~MUST。 ◎ The mediaText attribute, on getting, must return a serialization of the collection of media queries.

`mediaText$m 属性の被設定時には、次を実行し~MUST: ◎ Setting the mediaText attribute must run these steps:

  1. 此れの`媒体~照会~collection$を空にする ◎ Empty the collection of media queries.
  2. ~IF[ 所与の値 ~EQ 空文字列 ] ⇒ ~RET ◎ If the given value is the empty string terminate these steps.
  3. [ 所与の値を`媒体~照会~listとして構文解析-$した結果 ]に含まれるすべての媒体~照会を,此れの`媒体~照会~collection$に付加する ◎ Append all the media queries as a result of parsing the given value to the collection of media queries.

`item(index)@m ~methの被呼出時には、[ %index が範囲~外ならば ~NULL / ~ELSE_ [ 此れの`媒体~照会~collection$の中で %index に位置する`媒体~照会$ ]]を返さ~MUST。 ◎ The item(index) method must return the media query in the collection of media queries given by index, or null, if index is greater than or equal to the number of media queries in the collection of media queries.

`length@m 属性は、此れの`媒体~照会~collection$に含まれる`媒体~照会$の個数を返さ~MUST。 ◎ The length attribute must return the number of media queries in the collection of media queries.

`appendMedium(medium)@m ~methの被呼出時には、次を実行し~MUST: ◎ The appendMedium(medium) method must run these steps:

  1. %m ~LET %medium を`媒体~照会として構文解析-$した結果 ◎ Let m be the result of parsing the given value.
  2. ~IF[ %m ~EQ ~NULL ] ⇒ ~RET ◎ If m is null terminate these steps.
  3. ~IF[ 此れの`媒体~照会~collection$ の中に %m と`同値$な`媒体~照会$は無い ] ⇒ %m を此れの`媒体~照会~collection$に付加する ◎ If comparing m with any of the media queries in the collection of media queries returns true terminate these steps. ◎ Append m to the collection of media queries.

`deleteMedium(medium)@m ~methの被呼出時には、次を実行し~MUST: ◎ The deleteMedium(medium) method must run these steps:

  1. %m ~LET %medium を`媒体~照会として構文解析-$した結果 ◎ Let m be the result of parsing the given value.
  2. ~IF[ %m ~EQ ~NULL ] ⇒ ~RET ◎ If m is null terminate these steps.
  3. ~IF[ 此れの`媒体~照会~collection$ の中に %m と`同値$な`媒体~照会$は在る ] ⇒ その媒体~照会を此れの`媒体~照会~collection$から除去する ◎ Remove any media query from the collection of media queries for which comparing the media query with m returns true.

4. 選択子

`選択子$は Selectors 仕様にて定義される。 この節では主にそれらを直列化する方法を定義する。 ◎ Selectors are defined in the Selectors specification. This section mainly defines how to serialize them.

4.1. 選択子の構文解析法

所与の値を `選択子~listとして構文解析-@ するときは ⇒ Selectors 仕様にて定義されている `selector^t `selector-list$t を用いてその値を構文解析して,それが[ 失敗しなかったならば 結果の`選択子~list$ / 失敗した場合は ~NULL ]を返す。 ◎ To parse a group of selectors means to parse the value using the selectors_group production defined in the Selectors specification and return either a group of selectors if parsing did not fail or null if parsing did fail.

4.2. 選択子の直列化法

`選択子~list$を `選択子~listとして直列化-@ するときは ⇒ 選択子~list内の~EACH ( `複体~選択子$ ) を`選択子として直列化-$して得られる~listを`~comma区切りで直列化-$する。 ◎ To serialize a group of selectors serialize each selector in the group of selectors and then serialize a comma-separated list of these serializations.

`複体~選択子$を `選択子として直列化-@ するときは、次を実行した結果の %文字列 を返す: ◎ To serialize a selector let s be the empty string, run the steps below for each part of the chain of the selector, and finally return s:

  1. %文字列 ~LET 空文字列 ◎ ↑
  2. `複体~選択子$内の~EACH ( `合体~選択子$ %seq ) に対し,順に: ◎ ↑

    1. ~IF[ %seq は1個の`全称~選択子$のみからなる ] ⇒ %文字列 ~APPEND[ その`全称~選択子$を`単体~選択子として直列化-$した結果 ] ◎ If there is only one simple selector in the compound selectors which is a universal selector, append the result of serializing the universal selector to s.
    2. ~ELSE ⇒ %seq 内の~EACH ( `単体~選択子$ %選択子 ) に対し ⇒ ~IF[ %選択子 は`全称~選択子$でない ]~OR[ %選択子 の`名前空間~接頭辞$は`既定の名前空間$でない名前空間に対応する ] ⇒ %文字列 ~APPEND[ %選択子 を`単体~選択子として直列化-$した結果 ] ◎ Otherwise, for each simple selector in the compound selectors that is not a universal selector of which the namespace prefix maps to a namespace that is not the default namespace serialize the simple selector and append the result to s.
    3. ~IF[ %seq は最後の`合体~選択子$でない 【 すなわち,`結合子$が後続する 】 ]:

      1. %文字列 ~APPEND ~SP
      2. ~IF[ `結合子$は ~SP のみでない ] ⇒ %文字列 ~APPEND その結合子† ~APPEND ~SP

      († `>^l `003E^cp, ❝+, ❝~, `>>^l, `||^l のいずれか適切なもの)

      ◎ If this is not the last part of the chain of the selector append a single SPACE (U+0020), followed by the combinator ">", "+", "~", ">>", "||", as appropriate, followed by another single SPACE (U+0020) if the combinator was not whitespace, to s.
    4. ~ELIF[ %seq 内に`疑似要素$がある ] ⇒ %文字列 ~APPEND `::^l ~APPEND その疑似要素の名前 ◎ If this is the last part of the chain of the selector and there is a pseudo-element, append "::" followed by the name of the pseudo-element, to s.
  3. ~RET %文字列

`単体~選択子$ %選択子 を `単体~選択子として直列化-@ するときは、次を実行した結果の %文字列 を返す: ◎ To serialize a simple selector let s be the empty string, run the steps below, and finally return s:

  1. %文字列 ~LET 空文字列 ◎ ↑

  2. %選択子 の種別に応じて: ◎ ↓

    `型~選択子$
    `全称~選択子$
    1. %接頭辞 ~LET %選択子 の`名前空間~接頭辞$ ◎ ↓
    2. ~IF[ %接頭辞 は[ `~null名前空間$でも `既定の名前空間$でもない名前空間 ]に対応する ] ⇒ %文字列 ~APPEND[ %接頭辞 を`識別子として直列化-$した結果 ] ~APPEND ❝| ◎ If the namespace prefix maps to a namespace that is not the default namespace and is not the null namespace (not in a namespace) append the serialization of the namespace prefix as an identifier, followed by a "|" (U+007C) to s.
    3. ~IF[ %接頭辞 は`~null名前空間$に対応する ] ⇒ %文字列 ~APPEND ❝| ◎ If the namespace prefix maps to a namespace that is the null namespace (not in a namespace) append "|" (U+007C) to s.
    4. ~IF[ %選択子 は`型~選択子$である ] ⇒ %文字列 ~APPEND[ 要素~名を`識別子として直列化-$した結果 ] ◎ If this is a type selector append the serialization of the element name as an identifier to s.
    5. ~ELSE ( %選択子 は`全称~選択子$である) ⇒ %文字列 ~APPEND ❝* ◎ If this is a universal selector append "*" (U+002A) to s.
    `属性~選択子$
    1. %接頭辞 ~LET %選択子 の`名前空間~接頭辞$ ◎ ↓
    2. %文字列 ~APPEND ❝[ ◎ Append "[" (U+005B) to s.
    3. ~IF[ %接頭辞 は`~null名前空間$でない名前空間に対応する ] ⇒ %文字列 ~APPEND[ %接頭辞 を`識別子として直列化-$した結果 ] ~APPEND ❝| ◎ If the namespace prefix maps to a namespace that is not the null namespace (not in a namespace) append the serialization of the namespace prefix as an identifier, followed by a "|" (U+007C) to s.
    4. %文字列 ~APPEND[ %選択子 の属性~名を`識別子として直列化-$した結果 ] ◎ Append the serialization of the attribute name as an identifier to s.
    5. ~IF[ %選択子 に属性~値が指定されている ] ⇒ %文字列 ~APPEND[ (`属性~選択子$の種別に応じて)次のいずれか適切なもの: ❝=, `~=^l, `|=^l, "^=", "$=", `*=^l ] ~APPEND[ %選択子 の属性~値を`文字列として直列化-$した結果 ] ◎ If there is an attribute value specified, append "=", "~=", "|=", "^=", "$=", or "*=" as appropriate (depending on the type of attribute selector), followed by the serialization of the attribute value as a string, to s.
    6. ~IF[ 属性~選択子の case-sensitivity ~flag† ~EQ ~ON ] ⇒ %文字列 ~APPEND ~SP ~APPEND ❝i ◎ If the attribute selector has the case-sensitivity flag present, append " i" (U+0020 U+0069) to s.

      【† 属性~値の 文字大小が区別される なら ~ON 。 】

    7. %文字列 ~APPEND ❝] ◎ Append "]" (U+005D) to s.
    `~class選択子$
    %文字列 ~APPEND ❝. ~APPEND[ %選択子 の class 名を`識別子として直列化-$した結果 ] ◎ Append a "." (U+002E), followed by the serialization of the class name as an identifier to s.
    `ID 選択子$
    %文字列 ~APPEND ❝# ~APPEND[ %選択子 の ID を`識別子として直列化-$した結果 ] ◎ Append a "#" (U+0023), followed by the serialization of the ID as an identifier to s.
    `疑似類$
    1. %文字列 ~APPEND ❝: ~APPEND その`疑似類$の名前 ◎ If the pseudo-class does not accept arguments append ":" (U+003A), followed by the name of the pseudo-class, to s. ◎ Otherwise, append ":" (U+003A), followed by the name of the pseudo-class, followed by "(" (U+0028), followed by the value of the pseudo-class argument(s) determined as per below, followed by ")" (U+0029), to s.
    2. ~IF[ %選択子 は引数をとる`疑似類$である ]: ◎ ↑

      1. %文字列 ~APPEND ❝( ◎ ↑
      2. %選択子 の`疑似類$に応じて: ◎ ↑

        `lang()$ps
        %文字列 ~APPEND [ ~EACH ( 引数~値 ) を`文字列として直列化-$して得られる~list ]を`~comma区切りで直列化-$した結果 ◎ The serialization of a comma-separated list of each argument’s serialization as a string, preserving relative order.
        `nth-child()$ps
        `nth-last-child()$ps
        `nth-of-type()$ps
        `nth-last-of-type()$ps
        %文字列 ~APPEND[[ <an+b> 直列化法 の~~規則 `CSS3SYN$r ]に従って引数~値を直列化した結果 ] ◎ The result of serializing the value using the rules to serialize an <an+b> value.
        `not()$ps
        %文字列 ~APPEND[ 引数~値を`選択子~listとして直列化-$した結果 ] ◎ The result of serializing the value using the rules for serializing a group of selectors.
      3. %文字列 ~APPEND ❝) ◎ ↑
  3. ~RET %文字列 ◎ ↑

5. CSS

5.1. ~css~ss

`~css~ss@ とは、 CSS 仕様にて定義される~ssを表現する抽象的な概念である。 CSSOM においては、`~css~ss$は `CSSStyleSheet$I ~objにより表現される。 各`~css~ss$ %~ss には、以下に挙げる状態~項目が結付けられる: ◎ A CSS style sheet is an abstract concept that represents a style sheet as defined by the CSS specification. In the CSSOM a CSS style sheet is represented as a CSSStyleSheet object. A CSS style sheet has a number of associated state items:

`種別@ss◎type
`text/css^l ◎ The literal string "text/css".
`所在@ss◎location
作成-時に指定される。 [ %~ss が埋込みの`~css~ss$である場合は ~NULL / ~ELSE_ %~ss に対する最初の 【 リダイレクト前の? 】 要請の`絶対~URL$ ]。 %~ss が存続する限り,変化しない。 ◎ Specified when created. The absolute URL of the first request of the CSS style sheet or null if the CSS style sheet was embedded. Does not change during the lifetime of the CSS style sheet.
`親~css~ss@ss◎parent CSS style sheet
作成-時に指定される。 [ %~ss の親の`~css~ss$があれば それ / なければ ~NULL ] ◎ Specified when created. The CSS style sheet that is the parent of the CSS style sheet or null if there is no associated parent.
`所有者~node@ss◎owner node
作成-時に指定される。 [ %~ss に結付けられている DOM ~nodeがあれば それ / なければ ~NULL ]。 ◎ Specified when created. The DOM node associated with the CSS style sheet or null if there is no associated DOM node.
`所有者~css規則@ss◎owner CSS rule
作成-時に指定される。 [ `親~css~ss$ssの中で, %~ss のinclusion 【 `import$at ? 】 を生じさせた`~css規則$があればそれ / そのようなものがなければ ~NULL ] ◎ Specified when created. The CSS rule in the parent CSS style sheet that caused the inclusion of the CSS style sheet or null if there is no associated rule.
`媒体@ss◎media

作成-時に指定される, `MediaList$I ~obj ◎ Specified when created. The MediaList object associated with the CSS style sheet.

この~propが文字列に指定された場合、`媒体$ssには,その文字列を引数に `~MediaList~objを作成-$した結果が設定され~MUST。 ◎ If this property is specified to a string, the media must be set to the return value of invoking create a MediaList object steps for that string.

この~propが`所有者~node$ssの属性に指定された場合、`媒体$ssは,その属性~値を引数に `~MediaList~objを作成-$した結果の値に設定され~MUST。 属性が設定-/変更-/除去されるときは常に、`媒体$ssの `mediaText$m 属性が[ その属性が存在しなくなったならば ~NULL / ~ELSE_ その属性の新たな値 ]に設定され~MUST。 ◎ If this property is specified to an attribute of the owner node, the media must be set to the return value of invoking create a MediaList object steps for the value of that attribute. Whenever the attribute is set, changed or removed, the media’s mediaText attribute must be set to the new value of the attribute, or to null if the attribute is absent.

注記: `媒体$ssの `mediaText$m 属性の値が変化しても,`所有者~node$ssの対応する属性は変化しない。 ◎ Note: Changing the media’s mediaText attribute does not change the corresponding attribute on the owner node.

`~title@ss◎title

作成-時に指定される。 `~css~ss$の~title。 空文字列もとり得る。 ◎ Specified when created. The title of the CSS style sheet, which can be the empty string.

次の例では、最初の~ssの`~title$ssは空文字列ではなく,2番目と3番目の~ssについては、空文字列になる。 ◎ In the following, the title is non-empty for the first style sheet, but is empty for the second and third style sheets.

<style title="papaya whip">
  body { background: #ffefd5; }
</style>
<style title="">
  body { background: orange; }
</style>
<style>
  body { background: brown; }
</style>

この~propが`所有者~node$ssの属性に指定された場合、`~title$ssは,その属性~値に設定され~MUST。 属性が 設定-/変更-/除去- されるときは 常に、`~title$ssは[ その属性が存在しなくなったならば空文字列 / ~ELSE_ その属性の新たな値 ]に設定され~MUST。 ◎ If this property is specified to an attribute of the owner node, the title must be set to the value of that attribute. Whenever the attribute is set, changed or removed, the title must be set to the new value of the attribute, or to the empty string if the attribute is absent.

`代替~flag@ss◎alternate flag

作成-時に指定される。 ~ON, ~OFF のいずれか。 既定は ~OFF 。 ◎ Specified when created. Either set or unset. Unset by default.

次の`~css~ss$は,`代替~flag$ssが ~ON にされる: ◎ The following CSS style sheets have their alternate flag set:

<?xml-stylesheet alternate="yes" title="x" href="data:text/css,…"?>
<link rel="alternate stylesheet" title="x" href="data:text/css,…">
`無効~flag@ss◎disabled flag

~ON, ~OFF のいずれか。 既定は ~OFF 。 ◎ Either set or unset. Unset by default.

注記: ~OFF であっても,必ずしも`~css~ss$が実際に具現化に用いられることを意味するわけではない。 ◎ Note: Even when unset it does not necessarily mean that the CSS style sheet is actually used for rendering.

`~css規則列@ss◎CSS rules
`~css~ss$に結付けられている一連の`~css規則$からなる~list。 ◎ The CSS rules associated with the CSS style sheet.
`origin-clean ~flag@ss
作成-時に指定される。 ~ON, ~OFF のいずれか。 ~ON の場合, API による`~css規則列$ssに対する読取りと改変が許容される。 ◎ Specified when created. Either set or unset. If it is set, the API allows reading and modifying of the CSS rules.

5.1.1. `StyleSheet^I ~ifc

`StyleSheet$I ~ifcは、抽象的な基底~ssを表現する。 ◎ The StyleSheet interface represents an abstract, base style sheet.

⇒! interface `StyleSheet@I { ~RA ~DS `type$m; ~RA ~DS? `href$m; ~RA (`Element$I or `ProcessingInstruction$I)? `ownerNode$m; ~RA `StyleSheet$I? `parentStyleSheet$m; ~RA ~DS? `title$m; [SameObject, PutForwards=`mediaText$m] ~RA `MediaList$I `media$m; attribute boolean `disabled$m; };◎

`type@m 属性は、此れの`種別$ssを返さ~MUST。 ◎ The type attribute must return the type.

`href@m 属性は、此れの`所在$ssを返さ~MUST。 ◎ The href attribute must return the location.

`ownerNode@m 属性は、此れの`所有者~node$ssを返さ~MUST。 ◎ The ownerNode attribute must return the owner node.

`parentStyleSheet@m 属性は、此れの`親~css~ss$ss 【 を表現する `StyleSheet$I ((を継承する~ifc)を実装する)~obj 】 を返さ~MUST。 ◎ The parentStyleSheet attribute must return the parent CSS style sheet.

`title@m 属性は、[ 此れの`~title$ss ~NEQ 空文字列ならば それ/ ~ELSE_ ~NULL ]を返さ~MUST。 ◎ The title attribute must return the title or null if title is the empty string.

`media@m 属性は、此れの`媒体$ssを返さ~MUST。 ◎ The media attribute must return the media.

`disabled@m 属性の被取得時には、[ 此れの`無効~flag$ss ~EQ ~ON ならば ~T / ~ELSE_ ~F ]を返さ~MUST。 被設定時には、[ 此れの`無効~flag$ss ~SET[ 新たな値 ~EQ ~T ならば ~ON / ~ELSE_ ~OFF ]]にし~MUST。 ◎ The disabled attribute, on getting, must return true if the disabled flag is set, or false otherwise. On setting, the disabled attribute must set the disabled flag if the new value is true, or unset the disabled flag otherwise.

5.1.2. `CSSStyleSheet^I ~ifc

`CSSStyleSheet$I ~ifcは `~css~ss$を表現する。 ◎ The CSSStyleSheet interface represents a CSS style sheet.

⇒! interface `CSSStyleSheet@I : `StyleSheet$I { ~RA `CSSRule$I? `ownerRule$m; [SameObject] ~RA `CSSRuleList$I `cssRules$m; ~UL `insertRule$m(~DS %rule, ~UL %index); void `deleteRule$m(~UL %index); };◎

`ownerRule@m 属性は、此れの`所有者~css規則$ss 【 を表現する `CSSRule$I ((を継承する~ifc)を実装する)~obj 】 を返さ~MUST。 ~NULL 以外の値が返される場合は、どの取得~accessに対しても,常に同じ値が返され~MUST。 ◎ The ownerRule attribute must return the owner CSS rule. If a value other than null is ever returned, then that same value must always be returned on each get access.

`cssRules@m 属性の被取得時には、次を実行し~MUST: ◎ The cssRules attribute must follow these steps:

  1. ~IF[ 此れの`origin-clean ~flag$ss ~EQ ~OFF ] ⇒ ~THROW `SecurityError$E ◎ If the origin-clean flag is unset, throw a SecurityError exception.
  2. ~RET 此れの`~css規則列$ssを表現する,読専かつ~liveである `CSSRuleList$I ~obj ◎ Return a read-only, live CSSRuleList object representing the CSS rules.

    注記: 返される `CSSRuleList$I ~objは、(作者による~script側からは)読専であったとしても、~liveであり,変化しないことを意味するわけではない。 例えば、 `insertRule()$m や `deleteRule()$m ~methの呼出しによる変更は、返された~objに反映される。 ◎ Note: Even though the returned CSSRuleList object is read-only (from the perspective of client-authored script), it can nevertheless change over time due to its liveness status. For example, invoking the insertRule() or deleteRule() methods can result in mutations reflected in the returned object.

`insertRule(rule, index)@m ~methの被呼出時には、次を実行し~MUST: ◎ The insertRule(rule, index) method must run the following steps:

  1. ~IF[ 此れの`origin-clean ~flag$ss ~EQ ~OFF ] ⇒ ~THROW `SecurityError$E ◎ If the origin-clean flag is unset, throw a SecurityError exception.
  2. ~RET %rule を此れ上の `cssRules$m から返される`~css規則列$ssの %index の位置に`挿入-$した結果 ◎ Return the result of invoking insert a CSS rule rule in the CSS rules at index.

`deleteRule(index)@m ~methの被呼出時には、次を実行し~MUST: ◎ The deleteRule(index) method must run the following steps:

  1. ~IF[ 此れの`origin-clean ~flag$ss ~EQ ~OFF ] ⇒ ~THROW `SecurityError$E ◎ If the origin-clean flag is unset, throw a SecurityError exception.
  2. 此れの`~css規則列$ssから %index に位置する規則を`除去-$する ◎ Remove a CSS rule in the CSS rules at index.

5.2.~css~ss~collection

以下に、各 `文書$に結付けられる,種々の新たな概念が定義される ◎ Below various new concepts are defined that are associated with each Document object.

各 `文書$には、 `文書~ss~list@ と呼ばれる,ゼロ個以上の`~css~ss$からなる~listが結付けられる。 これは、[ `文書$に結付けられている`~css~ss$ ]すべてを含む,`~tree順序$による~listである。 但し, HTTP `Link$h ~headerから作成される`~css~ss$は、それらの~headerに現れる順に,~listの先頭に置かれる。 ◎ Each Document has an associated list of zero or more CSS style sheets, named the document CSS style sheets. This is an ordered list that contains all CSS style sheets associated with the Document, in tree order, with CSS style sheets created from HTTP Link headers first, if any, in header order.

~css~ssを `作成-@ するときは、次を実行する: ◎ To create a CSS style sheet, run these steps:

  1. 新たな`~css~ss$ ~objを作成し,その各種~propを指定された値に設定した上で,`文書~ss~list$に`追加-$する ◎ Create a new CSS style sheet object and set its properties as specified. ◎ Then run the add a CSS style sheet steps for the newly created CSS style sheet.

    `origin-clean ~flag$ss ~EQ ~OFF の下では、これにより,利用者の~intranetからの情報が公開され得る。 ◎ If the origin-clean flag is unset, this can expose information from the user’s intranet.

~css~ss %sheet を `追加-@ するときは、次を実行する: ◎ To add a CSS style sheet, run these steps:

  1. %sheet を,`文書~ss~list$内の適切な位置に追加する ◎ Add the CSS style sheet to the list of document CSS style sheets at the appropriate location. The remainder of these steps deal with the disabled flag.

    (手続きの以下の部分は`無効~flag$ssについての取り扱いになる) ◎ ↑

  2. ~IF[ %sheet の`無効~flag$ss ~EQ ~ON ] ⇒ ~RET ◎ If the disabled flag is set, terminate these steps.
  3. %~title ← %sheet の`~title$ss ◎ ↓
  4. ~IF[ %~title ~NEQ 空文字列 ]~AND[ %sheet の`代替~flag$ss ~EQ ~OFF ]~AND[ `選好~ssset名$ ~EQ 空文字列 ] ⇒ %~title を用いて`選好~ssset名を変更-$する ◎ If the title is not the empty string, the alternate flag is unset, and preferred CSS style sheet set name is the empty string change the preferred CSS style sheet set name to the title.
  5. ~IF[ %~title ~EQ 空文字列 ]~OR[ 【 %~title ~NEQ 空文字列 ~AND 】次のいずれかが満たされる ] ⇒ %sheet の`無効~flag$ss ~SET ~OFF ◎ If any of the following is true unset the disabled flag and terminate these steps: ◎ The title is the empty string.

    • [ `最後の~ssset名$ ~EQ ~NULL ]~AND[ %~title ~EQ `選好~ssset名$ ] ◎ The last CSS style sheet set name is null and the title is a case-sensitive match for the preferred CSS style sheet set name.
    • %~title ~EQ `最後の~ssset名$ ◎ The title is a case-sensitive match for the last CSS style sheet set name.
  6. ~ELSE ⇒ %sheet の`無効~flag$ss ~SET ~ON ◎ Set the disabled flag.

`~css~ss$ %sheet を `除去-@ss するときは、次を実行する: ◎ To remove a CSS style sheet, run these steps:

  1. `文書~ss~list$の~listから %sheet を除去する ◎ Remove the CSS style sheet from the list of document CSS style sheets.
  2. %sheet の[ `親~css~ss$ss, `所有者~node$ss, `所有者~css規則$ss ] ~SET ~NULL ◎ Set the CSS style sheet’s parent CSS style sheet, owner node and owner CSS rule to null.

`固定的~css~ss@ とは、`文書~ss~list$に属する`~css~ss$のうち,[ その`~title$ss ~EQ 空文字列 ]~AND[ その`代替~flag$ss ~EQ ~OFF ]なるものである。 ◎ A persistent CSS style sheet is a CSS style sheet from the document CSS style sheets whose title is the empty string and whose alternate flag is unset.

`~ssset@ とは、1つの`文書~ss~list$の中で,[ 空文字列でない`~title$ss ]が互いに一致するような`~css~ss$からなる,有順序~collectionである。 このとき、その`~ssset$に共通する`~title$ssは, `~ssset名@ と呼ばれる。 ◎ A CSS style sheet set is an ordered collection of one or more CSS style sheets from the document CSS style sheets which have an identical title that is not the empty string. ◎ A CSS style sheet set name is the title the CSS style sheet set has in common.

`有効~ssset@ とは、所属のどの`~css~ss$も,その`無効~flag$ssが ~OFF にされている`~ssset$である。 ◎ An enabled CSS style sheet set is a CSS style sheet set of which each CSS style sheet has its disabled flag unset.

名前 %名前 を用いて, `~sssetを有効化@ するときは、次を実行する: ◎ To enable a CSS style sheet set with name name, run these steps:

  1. ~IF[ %名前 ~EQ 空文字列 ] ⇒ `~ssset$に属する`~css~ss$すべてに対し,その[ `無効~flag$ss ~SET ~ON ]にする ◎ If name is the empty string, set the disabled flag for each CSS style sheet that is in a CSS style sheet set and terminate these steps.
  2. ~ELSE ⇒ `~ssset名$ ~EQ %名前 なる`~ssset$に属する`~css~ss$はすべて[ `無効~flag$ss ~SET ~OFF ]にして,他の`~ssset$に属する`~css~ss$はすべて[ `無効~flag$ss ~SET ~ON ]にする ◎ Unset the disabled flag for each CSS style sheet in a CSS style sheet set whose CSS style sheet set name is a case-sensitive match for name and set it for all other CSS style sheets in a CSS style sheet set.

名前 %名前 の `~sssetを選択-@ するときは、次を実行する: ◎ To select a CSS style sheet set with name name, run these steps:

  1. 名前 %名前 を用いて,`~sssetを有効化$する ◎ enable a CSS style sheet set with name name.
  2. `最後の~ssset名$ ~SET %名前 ◎ Set last CSS style sheet set name to name.

`最後の~ssset名@ とは、[ どの`~ssset$を最後に`選択した$ssか ]を決定するための概念である。 その初期~時の値は ~NULL である。 ◎ A last CSS style sheet set name is a concept to determine what CSS style sheet set was last selected. Initially its value is null.

`選好~ssset名@ とは、[ どの`~css~ss$について,`無効~flag$ssを ~OFF にする必要があるか ]を決定するための概念である。 その初期~時の値は空文字列である。 ◎ A preferred CSS style sheet set name is a concept to determine which CSS style sheets need to have their disabled flag unset. Initially its value is the empty string.

名前 %名前 を用いて 選好~ssset名を変更- するときは、次を実行する: ◎ To change the preferred CSS style sheet set name with name name, run these steps:

  1. %current ~LET `選好~ssset名$ ◎ Let current be the preferred CSS style sheet set name.
  2. `選好~ssset名$ ~SET %名前 ◎ Set preferred CSS style sheet set name to name.
  3. ~IF[ %名前 ~NEQ %current ]~AND[ `最後の~ssset名$ ~EQ ~NULL ] ⇒ 名前 %名前 を用いて,`~sssetを有効化$する ◎ If name is not a case-sensitive match for current and last CSS style sheet set name is null enable a CSS style sheet set with name name.

5.2.1. HTTP `Default-Style^h ~header

HTTP `Default-Style$h ~headerを利用すれば、`選好~ssset名$を設定して,どの`~ssset$が(初期~時に)`有効~ssset$にされるかに波及させられる。 ◎ The HTTP Default-Style header can be used to set the preferred CSS style sheet set name influencing which CSS style sheet set is (initially) the enabled CSS style sheet set.

~UAは,~EACH ( HTTP `Default-Style$h ~header ) に対し,~headerに現れる順序で、その値を名前に用いて,`選好~ssset名を変更-$し~MUST。 ◎ For each HTTP Default-Style header, in header order, the user agent must change the preferred CSS style sheet set name with name being the value of the header.

5.2.2. `StyleSheetList^I ~ifc

`StyleSheetList$I ~ifcは`~css~ss$の有順序~collectionを表現する。 ◎ The StyleSheetList interface represents an ordered collection of CSS style sheets.

⇒! [ArrayClass] interface `StyleSheetList@I { getter `StyleSheet$I? `item$m(~UL %index); ~RA ~UL `length$m; };◎

~objの `被support~prop~index$ の範囲は[ 0 〜 ( ( ~collectionで表現される~ssの総数 ) ~MINUS 1 ) ]である(~collectionが空なら存在しないことになる)。 ◎ The object’s supported property indices are the numbers in the range zero to one less than the number of CSS style sheets represented by the collection. If there are no such CSS style sheets, then there are no supported property indices.

`item(index)@m ~methの被呼出時には、此れの~collectionの中で %index に位置する~ssが[ 在れば それ / 無ければ ~NULL ]を返さ~MUST。 ◎ The item(index) method must return the indexth CSS style sheet in the collection. If there is no indexth object in the collection, then the method must return null.

`length@m 属性は、此れの~collectionで表現される~ssの総数を返さ~MUST。 ◎ The length attribute must return the number of CSS style sheets represented by the collection.

5.2.3. `Document^I ~ifcに対する拡張

⇒! partial interface `Document!I { [SameObject] ~RA `StyleSheetList$I `styleSheets$m; };◎

`styleSheets@m 属性は、此れの`文書~ss~list$を表現する `StyleSheetList$I ~collectionを返さ~MUST。 ◎ The styleSheets attribute must return a StyleSheetList collection representing the document CSS style sheets.

5.3. ~ssの結付け

この節では、`~css~ss$の`所有者~node$ssが実装する必要がある~ifcを定義する。 `xml-stylesheet 処理命令$, および[ link relation type に `stylesheet^l を含むような HTTP `Link$h ~header ]に課される要件を定義する。 ◎ This section defines the interface an owner node of a CSS style sheet has to implement and defines the requirements for xml-stylesheet processing instructions and HTTP Link headers when the link relation type is an ASCII case-insensitive match for "stylesheet".

5.3.1.~css~ssの~fetching

`~css~ss資源を~fetch@ するときは、次を入力に:

  • 解析済~URL: %解析済~URL
  • ~referrer: %~referrer
  • 文書: %文書
  • 一連の~parameter: %parameters (省略可,`要請$を作成する際の入力に利用される)

次を実行する:

◎ To fetch a CSS style sheet with parsed URL parsed URL, referrer referrer, document document, optionally a set of parameters parameters (used as input to creating a request), follow these steps:
  1. %生成元 ~LET %文書 の`生成元$ ◎ Let origin be document’s origin.
  2. %要請 ~LET 次のようにされた,新たな`要請$

    • `~url$rq ~SET %解析済~URL
    • `生成元$rq ~SET %生成元
    • `~referrer$rq ~SET %~referrer
    • その他の~parameter ~SET %parameters(与えられていれば)
    ◎ Let request be a new request, with the url parsed URL, origin origin, referrer referrer, and if specified the set of parameters parameters.
  3. %応答 ~LET %要請 による`~fetching$の結果 ( %応答 が得られるまで待機する) ◎ Let response be the result of fetching request. ◎ Wait until response is available.
  4. ~IF[ %応答 ~EQ `~network~error$ ] ⇒ ~RET ~error ◎ If response is a network error, return an error.
  5. ~IF[ %doc は`過去互換~mode$下にある ]~AND[ %応答 は `CORS 同一生成元$である ]~AND[ %応答 の`Content-Type ~metadata$は `~supportされる~styling言語$でない ] ⇒ %応答 の`Content-Type ~metadata$を text/css に変更する ◎ If document is in quirks mode, response is CORS-same-origin and the Content-Type metadata of response is not a supported styling language change the Content-Type metadata of response to text/css.
  6. ~IF[ %応答 は`~supportされる~styling言語$でない ] ⇒ ~RET ~error ◎ If response is not in a supported styling language return an error.
  7. ~RET %応答 ◎ Return response.

5.3.2. `LinkStyle^I ~ifc

~nodeに `結付けられている~css~ss@ とは、`文書~ss~list$に属する`~css~ss$であって, その`所有者~node$ssが `LinkStyle$I ~ifcを実装するものである。 【 所有者~node と~nodeは同じでないこともあるのだろうか? 】 ◎ The associated CSS style sheet of a node is the CSS style sheet in the list of document CSS style sheets of which the owner node implements the LinkStyle interface.

⇒! [NoInterfaceObject] interface `LinkStyle@I { ~RA `StyleSheet$I? `sheet$m; };◎

`sheet@m 属性は、[ ~nodeに`結付けられている~css~ss$があればそれ / なければ ~NULL ]を返さ~MUST。 ◎ The sheet attribute must return the associated CSS style sheet for the node or null if there is no associated CSS style sheet.

次の例において、~UAが CSS ( text/css )を~supportしつつ,(仮想の) text/example-sheets は~supportしていないとする。 この場合、前者の `style^e 要素の `sheet$m 属性は,~ssを表現する `StyleSheet$I ~objを返すが、後者の `style^e 要素の `sheet$m 属性は,~NULL を返す。 ◎ In the following fragment, the first style element has a sheet attribute that returns a StyleSheet object representing the style sheet, but for the second style element, the sheet attribute returns null, assuming the user agent supports CSS (text/css), but does not support the (hypothetical) ExampleSheets (text/example-sheets).

<style type="text/css">
  body { background:lime }
</style>
<style type="text/example-sheets">
  $(body).background := lime
</style>

注記: ~nodeが~ssを~~参照するかどうかは、当該の~nodeの意味論を定義する仕様により定義される。 ◎ Note: Whether or not the node refers to a style sheet is defined by the specification that defines the semantics of said node.

5.3.3. 仕様に課される要件

DOM を通して~ssを結付ける新たな方法を導入する仕様は、どの~nodeが `LinkStyle$I ~ifcを実装するかを定義するべきである。 その場合、どの時点で`~css~ss$が`作成-$されるかも定義され~MUST。 ◎ Specifications introducing new ways of associating style sheets through the DOM should define which nodes implement the LinkStyle interface. When doing so, they must also define when a CSS style sheet is created.

5.3.4. xml-stylesheet 処理命令を実装する~UAに課される要件

⇒! `ProcessingInstruction$I implements `LinkStyle$I;◎

`~prolog@ とは、 `文書$の`子$であって, `文書$のどの子`Element$I にも`後続$しないような`~node$(の集合)を意味する。 ◎ The prolog refers to nodes that are children of the document and are not following the Element child of the document, if any.

`ProcessingInstruction$I `~node$ %node が[ `~prolog$の一部を成すものに[ なった/ならなくなった ]とき,あるいは その `~data$ が変化したとき ]には、次を実行し~MUST: ◎ When a ProcessingInstruction node node becomes part of the prolog, is no longer part of the prolog, or has its data changed, these steps must be run:

  1. ~IF[ この~algoの~instanceが %node に対し現在~実行中である ] ⇒ その~instanceを中止する;
    適用-可能なら,結付けられている`~fetching$も停止する ◎ If an instance of this algorithm is currently running for node, abort that instance, and stop the associated fetching if applicable.
  2. ~IF[ %node に`結付けられている~css~ss$がある ] ⇒ それを`除去-$ssする ◎ If node has an associated CSS style sheet, remove it.
  3. ~IF[ %node は `xml-stylesheet 処理命令$でない ] ⇒ ~RET ◎ If node is not an xml-stylesheet processing instruction, terminate these steps.
  4. ~IF[ %node は `href$xmlss `疑似属性$を持たない ] ⇒ ~RET ◎ If node does not have an href pseudo-attribute, terminate these steps.
  5. %~title ~LET [ `title$xmlss `疑似属性$が指定されている場合はその値 / ~ELSE_空文字列 ] ◎ Let title be the value of the title pseudo-attribute or the empty string if the title pseudo-attribute is not specified.
  6. ~IF[ `alternate$xmlss `疑似属性$が与えられていて その値 ~EQ `yes^l ]~AND[ %~title ~EQ 空文字列 ] ⇒ ~RET ◎ If there is an alternate pseudo-attribute whose value is a case-sensitive match for "yes" and title is the empty string terminate these steps.
  7. ~IF[ `type$xmlss `疑似属性$が与えられていて,その値は`~supportされる~styling言語$でない ] ⇒ ~UAは,この手続きを終了させてもよい ◎ If there is a type pseudo-attribute whose value is not a supported styling language the user agent may terminate these steps.
  8. %入力~URL ~LET `href$xmlss `疑似属性$に指定されている値 ◎ Let input URL be the value specified by the href pseudo-attribute.
  9. %文書 ~LET %node の`~node文書$ ◎ Let document be node’s node document
  10. %基底~URL ~LET %文書 の`文書~基底~URL$ ◎ Let base URL be document’s document base URL.
  11. %~referrer ~LET %文書 の`~address$ ◎ Let referrer be document’s address.
  12. %解析済~URL ~LET %入力~URL を`~URL構文解析器$にかけた結果 ◎ Let parsed URL be the return value of invoking the URL parser with the string input URL and the base URL base URL.
  13. ~IF[ %解析済~URL ~EQ failue ] ⇒ ~RET ◎ If parsed URL is failure, terminate these steps.
  14. %応答 ~LET ( 解析済~URL: %解析済~URL, ~referrer: %~referrer, 文書: %文書 ) を入力に,`~css~ss資源を~fetch$した結果 ◎ Let response be the result of fetching a CSS style sheet with parsed URL parsed URL, referrer referrer and document document.
  15. ~IF[ %応答 ~EQ ~error ] ⇒ ~RET ◎ If response is an error, terminate these steps.
  16. 次の~propを伴う~css~ssを`作成-$する: ◎ Create a CSS style sheet with the following properties:

    `所在$ss
    %解析済~URL を `~URL直列化器$にかけた結果 ◎ The result of invoking the URL serializer with parsed URL.
    `親~css~ss$ss
    ~NULL ◎ null.
    `所有者~node$ss
    %node ◎ node.
    `所有者~css規則$ss
    ~NULL ◎ null.
    `媒体$ss
    `media$xmlss `疑似属性$の値が与えられていればそれ / いなければ空文字列 ◎ The value of the media pseudo-attribute if any, or the empty string otherwise.
    `~title$ss
    %~title ◎ title.
    `代替~flag$ss
    `alternate$xmlss `疑似属性$の値 ~EQ `yes^l ならば ~ON / ~ELSE_ ~OFF ◎ Set if the alternate pseudo-attribute value is a case-sensitive match for "yes", or unset otherwise.
    `origin-clean ~flag$ss
    %応答 は `CORS 同一生成元$であるならば ~ON / ~ELSE_ ~OFF ◎ Set if response is CORS-same-origin, or unset otherwise.

    ~css`環境~符号化方式$は、次を実行した結果である: ◎ The CSS environment encoding is the result of running the following steps:

    1. ~IF[ 要素は `charset$xmlss `疑似属性$を持つ ] ⇒ ~IF[ その疑似属性の値から`符号化方式を取得$した結果 ~NEQ failure ] ⇒ ~RET その結果 ◎ If the element has a charset pseudo-attribute, get an encoding from that pseudo-attribute’s value. If that succeeds, return the resulting encoding and abort these steps.
    2. ~RET `文書の文字~符号化方式$ ◎ Otherwise, return the document’s character encoding. [DOM]

XML 構文解析器 から生成される`文書$の文脈の下で,この節の~~規則を用いて `xml-stylesheet 処理命令$から参照される~ssは、次のすべてを満たすとき,`~scriptを阻んでいる~ss$と呼ばれる — ~UA はその種の~ssをいつでも放棄してよい:

  • その `ProcessingInstruction$I `~node$は `文書$の構文解析器により作成されたものである
  • その~nodeの作成-時にその~ssは有効化されている
  • `~ss ready$ ~flagは まだ ~ON にされていない
  • event loop が 最後に上の~algoの最初の段に到達したときには,その~nodeはその`文書$ 内に在った
  • ~UA はその~ssをまだ放棄していない
◎ A style sheet referenced by an xml-stylesheet processing instruction using the rules in this section, in the context of the Document of an XML parser is said to be a style sheet that is blocking scripts if the ProcessingInstruction node was created by that Document's parser, and the style sheet was enabled when the node was created by the parser, and the style sheet ready flag is not yet set, and, the last time the event loop reached step 1, the node was in that Document, and the user agent hasn’t given up on that particular style sheet yet. A user agent may give up on such a style sheet at any time.

5.4. CSS 規則

`~css規則@ とは、 CSS 仕様にて定義される規則を表す,抽象的な概念である。 `~css規則$は、 `CSSRule$I ~ifcを継承する~ifcを実装する~objで表現される。 それには,以下の状態~項目が結付けられる 【 括弧内は,項目に対応する `CSSRule!I の属性~member(この訳による補足) 】: ◎ A CSS rule is an abstract concept that denotes a rule as defined by the CSS specification. A CSS rule is represented as an object that implements a subclass of the CSSRule interface, and which has the following associated state items:

`種別@( `type$m )◎type
特定0の[ 規則の種別 ]に結付けられている,非負~整数。 この項目は、規則の作成-時に初期化されなければならず,変更されることはない。 【 `CSSRule$I を継承する特定の~ifcに対応する。 】 ◎ A non-negative integer associated with a particular type of rule. This item is initialized when a rule is created and cannot change.
`~text@( `~cssText0$m )◎text
~ss内での直接的な利用に適するような,規則の~text表現。 この項目は規則の作成-時に初期化されなければならず,規則が存続する間 変更され得る。 ◎ A text representation of the rule suitable for direct use in a style sheet. This item is initialized when a rule is created and can be changed.
`親~規則@( `parentRule$m )◎parent CSS rule
この規則を封入している別の`~css規則$への参照か, または ~NULL。 この項目は規則の作成-時に[ そのような別の規則があるならばそれ / ~ELSE_ ~NULL ]に初期化される。 これは,~NULLに変更され得る。 ◎ A reference to an enclosing CSS rule or null. If the rule has an enclosing rule when it is created, then this item is initialized to the enclosing rule; otherwise it is null. It can be changed to null.
`親~ss@( `parentStyleSheet$m )◎parent CSS style sheet
親の`~css~ss$への参照か, または ~NULL。 この項目は、規則の作成-時に結付けられている~ssへの参照に初期化される。 これは,~NULLに変更され得る。 ◎ A reference to a parent CSS style sheet or null. This item is initialized to reference an associated style sheet when the rule is created. It can be changed to null.
`子~規則列@◎child CSS rules
子 `~css規則$の~list。 この~listは変異し得る。 ◎ A list of child CSS rules. The list can be mutated.

上の状態~項目に加え、各`~css規則$には,その`種別$に則って他の状態~項目も結付けられ得る。 ◎ In addition to the above state, each CSS rule may be associated with other state in accordance with its type.

文字列 %文字列 を `~css規則として構文解析-@ するときは,次を実行する: ◎ To parse a CSS rule from a string string, run the following steps:

  1. %規則 ~LET %文字列 を 規則として構文解析- した結果 ◎ Let rule be the return value of invoking parse a rule with string.
  2. ~IF[ %規則 ~EQ 構文~error ] ⇒ ~RET %規則 ◎ If rule is a syntax error, return rule.
  3. %解析済~規則 ~LET 適切な CSS 仕様に従って %規則 を構文解析し,`無視される$ものは落とした結果
    ~IF[ ~style規則~全体が落とされた ] ⇒ ~RET 構文~error ◎ Let parsed rule be the result of parsing rule according to the appropriate CSS specifications, dropping parts that are said to be ignored. If the whole style rule is dropped, return a syntax error.
  4. ~RET %解析済~規則 ◎ Return parsed rule.

`~css規則$ %規則 を `~css規則として直列化-@ するときは、その`種別$ 【 に対応する~ifc 】 に応じて,次を遂行する: ◎ To serialize a CSS rule, perform one of the following in accordance with the CSS rule’s type:

`CSSStyleRule!I

次を連結した結果: ◎ The result of concatenating the following:

  1. [ %規則 が表現している`~css~style規則$の`選択子~list$ ]を `選択子~listとして直列化-$した結果 ◎ The result of performing serialize a group of selectors on the rule’s associated selectors.
  2. ~APPEND ~SP ~APPEND ❝{ ~APPEND ~SP ◎ The string " { ", i.e., a single SPACE (U+0020), followed by LEFT CURLY BRACKET (U+007B), followed by a single SPACE (U+0020).
  3. ~APPEND[ %規則 が表現している`~css~style規則$ ]の`宣言列$ 【 `style$m 】 ]を `宣言列として直列化-$した結果 ] ◎ The result of performing serialize a CSS declaration block on the rule’s associated declarations.
  4. ~APPEND[ %規則 が表現している`~css~style規則$に宣言がないならば 空文字列 / ~ELSE_ ~SP ] ◎ If the rule is associated with one or more declarations, the string " ", i.e., a single SPACE (U+0020).
  5. ❝} ◎ The string "}", RIGHT CURLY BRACKET (U+007D).
`CSSImportRule!I

次を連結した結果: ◎ The result of concatenating the following:

  1. "@import" ~APPEND ~SP ◎ The string "@import" followed by a single SPACE (U+0020).
  2. ~APPEND[ %規則 の所在 【 `href$m 】 を`~URLとして直列化-$した結果 ] ◎ The result of performing serialize a URL on the rule’s location.
  3. ~APPEND[ %規則 に結付けられている媒体~list 【 `media$m 】 は空でないならば[ ~SP ~APPEND[ その媒体~listを`媒体~照会~listとして直列化-$した結果 ]] / ~ELSE_ 空文字列 ] ◎ If the rule’s associated media list is not empty, a single SPACE (U+0020) followed by the result of performing serialize a media query list on the media list.
  4. ~APPEND ❝; ◎ The string ";", i.e., SEMICOLON (U+003B).
`import$at url(`import.css^l);
`import$at url(`print.css^l) print;
`CSSMediaRule$I
~UNSPECIFIED ◎ Issue: ...
`CSSFontFaceRule$I
~UNSPECIFIED ◎ Issue: ...
`CSSPageRule$I
~UNSPECIFIED ◎ Issue: ...
`CSSNamespaceRule!I
"@namespace"
~APPEND ~SP
~APPEND[ `prefix$m 属性の値 ~NEQ 空文字列 ならば[[ それを`識別子として直列化-$した結果 ]~APPEND ~SP ]]/ ~ELSE_ 空文字列 ]
~APPEND[ `namespaceURI$m 属性の値を`~URLとして直列化-$した結果 ]
~APPEND 文字 ❝; ◎ The literal string "@namespace", followed by a single SPACE (U+0020), followed by the serialization as an identifier of the prefix attribute (if any), followed by a single SPACE (U+0020) if there is a prefix, followed by the serialization as URL of the namespaceURI attribute, followed the character ";" (U+003B).

`~css規則$ %規則 を `~css規則列$ss %~list の %index の位置に `挿入-@ するときは、次を実行する: ◎ To insert a CSS rule rule in a CSS rule list list at index index, follow these steps:

  1. %解析済~規則 ~SET %規則 を`~css規則として構文解析-$した結果 ◎ Set new rule to the results of performing parse a CSS rule on argument rule.
  2. ~IF[ %解析済~規則 ~EQ 構文~error ] ⇒ ~THROW `SyntaxError$E ◎ If new rule is a syntax error, throw a SyntaxError exception.
  3. ~IF[ %index ~GT %~list の項目~数 ] ⇒ ~THROW `IndexSizeError$E ◎ Set length to the number of items in list. ◎ If index is greater than length, then throw an IndexSizeError exception.
  4. ~IF[ CSS 仕様 `CSS21$r に規定される拘束に反するために,指定された %index (ゼロが先頭)に %解析済~規則 を挿入できない ] ⇒ ~THROW `HierarchyRequestError$E ◎ If new rule cannot be inserted into list at the zero-index position index due to constraints specified by CSS, then throw a HierarchyRequestError exception. [CSS21]

    注記: 例えば、~css~ssは,~style規則の後に `import$at at-規則を含められない。 ◎ Note: For example, a CSS style sheet cannot contain an @import at-rule after a style rule.

  5. ~IF[ %解析済~規則 は `namespace$at at-規則である ]~AND[ %~list 内に[ `import$at at-規則, `namespace$at at-規則 ]以外のものが含まれている ] ⇒ ~THROW `InvalidStateError$E ◎ If new rule is an @namespace at-rule, and list contains anything other than @import at-rules, and @namespace at-rules, throw an InvalidStateError exception.
  6. %解析済~規則 を %~list の中の %index が指す位置(ゼロが先頭)に挿入する。 ◎ Insert new rule into list at the zero-indexed position index.
  7. ~RET %index ◎ Return index.

`~css規則列$ss %~list から %index に位置する `~css規則$を `除去-@ するときは、次を実行する: ◎ To remove a CSS rule from a CSS rule list list at index index, follow these steps:

  1. ~IF[ %index ~GTE %~list の長さ ] ⇒ ~THROW `IndexSizeError$E ◎ Set length to the number of items in list. ◎ If index is greater than or equal to length, then throw an IndexSizeError exception.
  2. %規則 ~SET %~list 内の %index に位置する(ゼロが先頭)`~css規則$ ◎ Set old rule to the indexth item in list.
  3. ~IF[ %規則 は `namespace$at at-規則である ]~AND[ %~list 内に[ `import$at at-規則, `namespace$at at-規則 ]以外のものが含まれている ] ⇒ ~THROW `InvalidStateError$E ◎ If old rule is an @namespace at-rule, and list contains anything other than @import at-rules, and @namespace at-rules, throw an InvalidStateError exception.
  4. %~list から %index に位置する %規則 を除去する ◎ Remove rule old rule from list at the zero-indexed position index.
  5. %規則 の[ `親~規則$ / `親~ss$ ] ~SET ~NULL ◎ Set old rule’s parent CSS rule and parent CSS style sheet to null.

5.4.1. `CSSRuleList^I ~ifc

`CSSRuleList$I ~ifcは、 `~css~style規則$の有順序~collectionを表現する。 ◎ The CSSRuleList interface represents an ordered collection of CSS style rules.

⇒! [ArrayClass] interface `CSSRuleList@I { getter `CSSRule$I? `item$m(~UL %index); ~RA ~UL `length$m; };◎

~objの `被support~prop~index$ の範囲は[ 0 〜 ( ( ~collectionで表現される `CSSRule$I の総数 ) ~MINUS 1 ) ]である(~collectionが空なら存在しないことになる)。 ◎ The object’s supported property indices are the numbers in the range zero to one less than the number of CSSRule objects represented by the collection. If there are no such CSSRule objects, then there are no supported property indices.

`item(index)@m ~methの被呼出時には、此れの~collectionの中で %index に位置する `CSSRule$I ~objが[ 在れば それ / 無ければ ~NULL ]を返さ~MUST。 ◎ The item(index) method must return the indexth CSSRule object in the collection. If there is no indexth object in the collection, then the method must return null.

`length@m 属性は、此れの~collectionで表現される `CSSRule$I ~objの総数を返さ~MUST。 ◎ The length attribute must return the number of CSSRule objects represented by the collection.

5.4.2. `CSSRule^I ~ifc

`CSSRule$I ~ifcは,抽象的な基底`~css~style規則$を表現する。 各種`~css~style規則$は、その種別に応じて,この~ifcを継承する別々の~ifcで表現される。 ◎ The CSSRule interface represents an abstract, base CSS style rule. Each distinct CSS style rule type is represented by a distinct interface that inherits from this interface.

⇒! interface `CSSRule@I { const ~US `STYLE_RULE$m = 1; const ~US `CHARSET_RULE@m = 2; // 歴史的 const ~US `IMPORT_RULE$m = 3; const ~US `MEDIA_RULE$m = 4; const ~US `FONT_FACE_RULE$m = 5; const ~US `PAGE_RULE$m = 6; const ~US `MARGIN_RULE$m = 9; const ~US `NAMESPACE_RULE$m = 10; ~RA ~US `type$m; attribute ~DS `~cssText0$m; ~RA `CSSRule$I? `parentRule$m; ~RA `CSSStyleSheet$I? `parentStyleSheet$m; };◎

`type@m 属性は、此れがどの~ifcの~instanceであるかに応じて,次で与える値を返さ~MUST: ◎ The type attribute must return the CSS rule type, as follows:

`CSSStyleRule$I◎If the object is a CSSStyleRule
`STYLE_RULE@m (数値 1 ) ◎ Return STYLE_RULE (numeric value 1).
`CSSImportRule$I◎If the object is a CSSImportRule
`IMPORT_RULE@m (数値 3 ) ◎ Return IMPORT_RULE (numeric value 3).
`CSSMediaRule$I◎If the object is a CSSMediaRule
`MEDIA_RULE@m (数値 4 ) ◎ Return MEDIA_RULE (numeric value 4).
`CSSFontFaceRule$I◎If the object is a CSSFontFaceRule
`FONT_FACE_RULE@m (数値 5 ) ◎ Return FONT_FACE_RULE (numeric value 5).
`CSSPageRule$I◎If the object is a CSSPageRule
`PAGE_RULE@m (数値 6 ) ◎ Return PAGE_RULE (numeric value 6).
`CSSMarginRule$I◎If the object is a CSSMarginRule
`MARGIN_RULE@m (数値 9 ) ◎ Return MARGIN_RULE (numeric value 9).
`CSSNamespaceRule$I◎If the object is a CSSNamespaceRule
`NAMESPACE_RULE@m (数値 10 ) ◎ Return NAMESPACE_RULE (numeric value 10).
その他◎Otherwise
CSSOM Constants wiki ページにて定義されている値 ◎ Return a value defined on the CSSOM Constants wiki page.

注記: 値 0 は、以前は `UNKNOWN_RULE^m として知られていたが,この仕様により廃用にされた。 この値は、将来的にも利用されないものとして,予約されることになる。 ◎ Note: The value 0, formerly known as UNKNOWN_RULE, is made obsolete by this specification. This value will not be re-allocated in the future and will remain reserved.

`~cssText0@m 属性は、[ 此れの`~css規則$を`~css規則として直列化-$した結果 ]を返さ~MUST。 被設定時には、何もしては~MUST_NOT。 ◎ The cssText attribute must return a serialization of the CSS rule. On setting the cssText attribute must do nothing.

`parentRule@m 属性は、此れの`親~規則$を返さ~MUST。 ◎ The parentRule attribute must return the parent CSS rule.

注記: 例えば、 `media$at は規則を封入し得る。 その場合、`parentRule$m は非 ~NULL になる。 封入する規則がないときの `parentRule$m は~NULLになる。 ◎ Note: For example, @media can enclose a rule, in which case parentRule would be non-null; in cases where there is no enclosing rule, parentRule will be null.

`parentStyleSheet@m 属性は、此れの`親~ss$を返さ~MUST。 ◎ The parentStyleSheet attribute must return the parent CSS style sheet.

注記: ~NULLが返されるような唯一の状況は ~css~ssから`除去-$されたときである。 ◎ Note: The only circumstance where null is returned when a rule has been removed.

注記: `文書$から[ `LinkStyle$I ~ifcを実装する `Node^I ]が除去されても,(それだけでは) `CSSRule$I から `CSSStyleSheet$I への参照は到達できなくなるわけではない。 ◎ Note: Removing a Node that implements the LinkStyle interface from a Document instance does not (by itself) cause the CSSStyleSheet referenced by a CSSRule to be unreachable.

5.4.3. `CSSStyleRule^I ~ifc

`CSSStyleRule$I ~ifcは`~css~style規則$を表現する。 ◎ The CSSStyleRule interface represents a style rule.

【 `~css~style規則@ とは、`選択子~list$と`~css宣言~block$の組である。 略して “~style規則” とも記される。 】

⇒! interface `CSSStyleRule@I : `CSSRule$I { attribute ~DS `selectorText$m; [SameObject, PutForwards=`cssText$m] ~RA `CSSStyleDeclaration$I `style$m; };◎

`selectorText@m 属性の被取得時には、[ 結付けられている`選択子~list$を`選択子~listとして直列化-$した結果 ]を返さ~MUST。 ◎ The selectorText attribute, on getting, must return the result of serializing the associated group of selectors.

`selectorText$m 属性の被設定時には、次を実行し~MUST: ◎ On setting the selectorText attribute these steps must be run:

  1. %~list ~LET 所与の値を`選択子~listとして構文解析-$した結果 ◎ Run the parse a group of selectors algorithm on the given value.
  2. ~IF[ %~list ~NEQ ~NULL ] ⇒ 結付けられている`選択子~list$ ~SET %~list ◎ If the algorithm returns a non-null value replace the associated group of selectors with the returned value. ◎ Otherwise, if the algorithm returns a null value, do nothing.

`style@m 属性は、[ 各種~propが次のようにされた,~style規則 ]に対する `CSSStyleDeclaration$I ~objを返さ~MUST: ◎ The style attribute must return a CSSStyleDeclaration object for the style rule, with the following properties:

`読専~flag$
~OFF◎Unset.
`宣言列$
この規則の中で宣言された一連の宣言からなる,`指定順$による宣言列 ◎ The declared declarations in the rule, in specified order.
`親~css規則$
此れ◎The context object.
`所有者~node$
~NULL◎Null.

`指定順@ による宣言列とは、その順序は指定された順序と同じであるが,`略式~prop$については`正準的~順序$で`下位prop$に展開されているものを意味する。 同じ~propが(`略式~prop$の展開-後に)複数回~現れる場合、~cascadingにおいて最高位のもののみが,指定された所に位置するものとして,表現され~MUST。 `CSS3CASCADE$r ◎ The specified order for declarations is the same as specified, but with shorthand properties expanded into their longhand properties, in canonical order. If a property is specified more than once (after shorthand expansion), only the one with greatest cascading order must be represented, at the same relative position as it was specified. [CSS3CASCADE]

5.4.4. `CSSImportRule^I ~ifc

`CSSImportRule$I ~ifcは `import$at at-規則を表現する。 ◎ The CSSImportRule interface represents an @import at-rule.

⇒! interface `CSSImportRule@I : `CSSRule$I { ~RA ~DS `href$m; [SameObject, PutForwards=`mediaText$m] ~RA `MediaList$I `media$m; [SameObject] ~RA `CSSStyleSheet$I `styleSheet$m; };◎

`href@m 属性は、 `import$at at-規則に指定された URL を返さ~MUST。 ◎ The href attribute must return the URL specified by the @import at-rule.

注記: 解決された URL を取得するには,結付けられている`~css~ss$の `StyleSheet.href$m 属性を利用する。 ◎ Note: To get the resolved URL use the href attribute of the associated CSS style sheet.

`media@m 属性は、結付けられている`~css~ss$の `StyleSheet.media$m 属性の値を返さ~MUST。 ◎ The media attribute must return the value of the media attribute of the associated CSS style sheet.

`styleSheet@m 属性は、結付けられている`~css~ss$を返さ~MUST。 ◎ The styleSheet attribute must return the associated CSS style sheet.

注記: ~ssの読込みに失敗した場合、`~css規則列$ssは単に空にされる。 すなわち, `import$at at-規則には常に`~css~ss$が結付けられる。 ◎ Note: If loading of the style sheet fails its CSS rules list is simply empty, i.e., an @import at-rule always has an associated CSS style sheet.

5.4.5. `CSSGroupingRule^I ~ifc

`CSSGroupingRule$I ~ifcは 自身の内部に他の規則を入子にする at-規則を表現する。 ◎ The CSSGroupingRule interface represents an at-rule that contains other rules nested inside itself.

⇒! interface `CSSGroupingRule@I : `CSSRule$I { [SameObject] ~RA `CSSRuleList$I `cssRules$m; ~UL `insertRule$m(~DS %rule, ~UL %index); void `deleteRule$m(~UL %index); };◎

`cssRules@m 属性は、`子~規則列$を表現する `CSSRuleList$I ~objを返さ~MUST。 ◎ The cssRules attribute must return a CSSRuleList object for the child CSS rules.

`insertRule(rule, index)@m ~methの被呼出時には、[ %rule を`子~規則列$の %index の位置に`挿入-$した結果 ]を返さ~MUST。 ◎ The insertRule(rule, index) method must return the result of invoking insert a CSS rule rule into the child CSS rules at index.

`deleteRule(index)@m ~methの被呼出時には、`子~規則列$から %index に位置する `~css規則$を`除去-$し~MUST。 ◎ The deleteRule(index) method must remove a CSS rule from the child CSS rules at index.

5.4.6. `CSSMediaRule^I ~ifc

`CSSMediaRule$I ~ifcは `media$at at-規則を表現する。 ◎ The CSSMediaRule interface represents an @media at-rule.

⇒! interface `CSSMediaRule@I : `CSSGroupingRule$I { [SameObject, PutForwards=`mediaText$m] ~RA `MediaList$I `media$m; };◎

`media@m 属性は、 `media$at at-規則に指定されている`媒体~照会$の~listを表現する `MediaList$I ~objを返さ~MUST。 ◎ The media attribute must return a MediaList object for the list of media queries specified with the @media at-rule.

5.4.7. `CSSPageRule^I ~ifc

`CSSPageRule$I ~ifcは `page$at at-規則を表現する。 ◎ The CSSPageRule interface represents an @page at-rule.

~css頁~選択子の~listを 構文解析する ための, および `直列化-@page するための~~規則を定義する必要がある。 ◎ Need to define the rules for parse a list of CSS page selectors and serialize a list of CSS page selectors.

⇒! interface `CSSPageRule@I : `CSSGroupingRule$I { attribute ~DS `selectorText$m; [SameObject, PutForwards=`cssText$m] ~RA `CSSStyleDeclaration$I `style$m; };◎

`selectorText@m 属性の被取得時には、[ 結付けられている`~css頁~選択子の~list$を `直列化-$pageした結果 ]を返さ~MUST。 ◎ The selectorText attribute, on getting, must return the result of serializing the associated list of CSS page selectors.

`selectorText$m 属性の被設定時には、次を実行し~MUST: ◎ On setting the selectorText attribute these steps must be run:

  1. %値 ~LET 所与の値を`~css頁~選択子の~listとして構文解析-$した結果 ◎ Run the parse a list of CSS page selectors algorithm on the given value.
  2. ~IF[ %値 ~NEQ ~NULL ] ⇒ 結付けられている`~css頁~選択子の~list$ ~SET %値 ◎ If the algorithm returns a non-null value replace the associated list of CSS page selectors with the returned value. ◎ Otherwise, if the algorithm returns a null value, do nothing.

`style@m 属性は、[ 各種~propが次のようにされた, `page$at at-規則 ]に対する `CSSStyleDeclaration$I ~objを返さ~MUST: ◎ The style attribute must return a CSSStyleDeclaration object for the @page at-rule, with the following properties:

`読専~flag$
~OFF◎Unset.
`宣言列$
この規則の中で宣言された一連の宣言からなる,`指定順$による宣言列 ◎ The declared declarations in the rule, in specified order.
`親~css規則$
此れ◎The context object.
`所有者~node$
~NULL◎Null.

5.4.8. `CSSMarginRule^I ~ifc

`CSSMarginRule$I ~ifcは `page$at at-規則の中の `~margin at-規則$ (例えば `top-left^at )を表現する。 `CSS3PAGE$r ◎ The CSSMarginRule interface represents a margin at-rule (e.g. @top-left) in an @page at-rule. [CSS3PAGE]

⇒! interface `CSSMarginRule@I : `CSSRule$I { ~RA ~DS `name$m; [SameObject, PutForwards=`cssText$m] ~RA `CSSStyleDeclaration$I `style$m; };◎

`name@m 属性は、`~margin at-規則$の名前を返さ~MUST。 文字 @ は名前に含まれない。 `CSS3SYN$r ◎ The name attribute must return the name of the margin at-rule. The @ character is not included in the name. [CSS3SYN]

`style@m 属性は、[ 各種~propが次のようにされた, `~margin at-規則$ ]に対する `CSSStyleDeclaration$I ~objを返さ~MUST: ◎ The style attribute must return a CSSStyleDeclaration object for the margin at-rule, with the following properties:

`読専~flag$
~OFF◎Unset.
`宣言列$
この規則の中で宣言された一連の宣言からなる,`指定順$による宣言列 ◎ The declared declarations in the rule, in specified order.
`親~css規則$
此れ◎The context object.
`所有者~node$
~NULL◎Null.

5.4.9. `CSSNamespaceRule^I ~ifc

`CSSNamespaceRule$I ~ifcは `namespace$at at-規則を表現する。 ◎ The CSSNamespaceRule interface represents an @namespace at-rule.

⇒! interface `CSSNamespaceRule@I : `CSSRule$I { readonly attribute ~DS `namespaceURI$m; readonly attribute ~DS `prefix$m; };◎

`namespaceURI@m 属性は、此れの名前空間 【 名前空間 URI 】を返さ~MUST。 ◎ The namespaceURI attribute must return the namespace of the @namespace at-rule.

`prefix@m 属性は、[ 此れの`名前空間~接頭辞$があれば それ / なければ空文字列 ]を返さ~MUST。 ◎ The prefix attribute must return the prefix of the @namespace at-rule or the empty string if there is no prefix.

5.5. ~css宣言

`~css宣言@ とは、 DOM においては~objとして公開されない抽象的な概念である。 【 CSS2 の declaration — すなわち[ ~prop名: 値 ]の組に対応する。 】 各 `~css宣言$には、次のものが結付けられる: ◎ A CSS declaration is an abstract concept that is not exposed as an object in the DOM. A CSS declaration has the following associated properties:

`~prop名@◎property name
宣言の~prop名 ◎ The property name of the declaration.
`値@◎value
宣言の値を成す成分値たちからなる~listとして表現される ◎ The value of the declaration represented as a list of component values.
`~important~flag@◎important flag
変更-可能な ~ON, ~OFF 2値をとり得る。 !important 宣言の有無に対応する 】 ◎ Either set or unset. Can be changed.
`大小区別~flag@◎case-sensitive flag
`~prop名$が その仕様により文字大小区別とされているとき ~ON にされ, 他の場合は ~OFF にされる。 【 ほぼ ~custom~prop用 のもの 】 ◎ Set if the property name is defined to be case-sensitive according to its specification, otherwise unset.

5.6. ~css宣言~block

`~css宣言~block@ 【 CSS2 の declaration block に対応する 】 とは、値が結付けられている~css~prop( `~css宣言$とも呼ばれる)からなる,有順序~collectionである。 DOM においては, `CSSStyleDeclaration$I ~objが`~css宣言~block$を表現する。 各 `~css宣言~block$には,次のものが結付けられる: ◎ A CSS declaration block is an ordered collection of CSS properties with their associated values, also named CSS declarations. In the DOM a CSS declaration block is a CSSStyleDeclaration object. A CSS declaration block has the following associated properties:

`読専~flag@◎readonly flag
~objの操作が[ 可能ならば ~OFF / 不可ならば ~ON ]にされる。 特に指定されない限り,~OFF 。 ◎ Unset if the object can be manipulated. Set if it can not be manipulated. Unless otherwise stated it is unset.
`宣言列@◎declarations
~objに結付けられている一連の`~css宣言$。 ◎ The CSS declarations associated with the object.
`親~css規則@◎parent CSS rule
`~css宣言~block$が結付けられている`~css規則$があれば それ / 無ければ ~NULL ◎ The CSS rule that the CSS declaration block is associated with, if any, or null otherwise.
`所有者~node@◎owner node
`~css宣言~block$が結付けられている `Element$I があれば それ / 無ければ ~NULL ◎ The Element that the CSS declaration block is associated with, if any, or null otherwise.

文字列 %文字列 を `~css宣言~blockとして構文解析-@ するときは,次を実行する: ◎ To parse a CSS declaration block from a string string, follow these steps:

  1. %宣言~list ~LET %文字列 を 宣言の~listとして構文解析- した結果 ◎ Let declarations be the return value of invoking parse a list of declarations with string.
  2. %解析済~宣言~list ~LET 新たな空~list ◎ Let parsed declarations be a new empty list.
  3. %宣言~list 内の~EACH ( %宣言 ) に対し: ◎ For each item declaration in declarations, follow these substeps:

    1. %解析済~宣言 ~LET 適切な CSS 仕様に従って %宣言 を構文解析し,`無視される$ものは落とした結果 ◎ Let parsed declaration be the result of parsing declaration according to the appropriate CSS specifications, dropping parts that are said to be ignored. If the whole declaration is dropped, let parsed declaration be null.
    2. ~IF[ 前~段により宣言~全体は落とされてはいない( %解析済~宣言 ~NEQ 空) ] ⇒ %解析済~宣言~list に %解析済~宣言 を付加する ◎ If parsed declaration is not null, append it to parsed declarations.
  4. ~RET %解析済~宣言~list ◎ Return parsed declarations.

( ~prop名: %~prop名, 値: %値, %~important~flag: %important ) を伴う `~css宣言を直列化-@ するときは、次を実行する: ◎ To serialize a CSS declaration with property name property, value value and optionally an important flag set, follow these steps:

  1. %文字列 ~LET 空文字列 ◎ Let s be the empty string.
  2. %文字列 ~APPEND %~prop名 ◎ Append property to s.
  3. %文字列 ~APPEND ❝: ~APPEND ~SP ◎ Append ": " (U+003A U+0020) to s.
  4. %文字列 ~APPEND %値 ◎ Append value to s.
  5. ~IF[ %important ~EQ ~ON ] ⇒ %文字列 ~APPEND ~SP ~APPEND "!important" (U+0021 U+0069 U+006D U+0070 U+006F U+0072 U+0074 U+0061 U+006E U+0074) ◎ If the important flag is set, append " !important" (U+0020 U+0021 U+0069 U+006D U+0070 U+006F U+0072 U+0074 U+0061 U+006E U+0074) to s.
  6. %文字列 ~APPEND ❝; ◎ Append ";" (U+003B) to s.
  7. ~RET %文字列 ◎ Return s.

`~css宣言~block$の`宣言列$ %宣言~list を `宣言列として直列化-@ するときは、次を実行する: ◎ To serialize a CSS declaration block declaration block means to run the steps below:

  1. %~list ~LET 空~list ◎ Let list be an empty array.
  2. %直列化済~集合 ~LET 空~集合 ◎ Let already serialized be an empty array.
  3. ~FOR %宣言~list 内の ~EACH ( `~css宣言$ %宣言 ) に対し: ◎ Declaration loop: For each CSS declaration declaration in declaration block’s declarations, follow these substeps:

    1. %~prop名 ~LET %宣言 の`~prop名$ ◎ Let property be declaration’s property name.
    2. ~IF[ %~prop名 ~IN %直列化済~集合 ] ⇒ ~CONTINUE ◎ If property is in already serialized, continue with the steps labeled declaration loop.
    3. ~IF[ %~prop名 に対応する`略式~prop$は 一つ以上ある ]: ◎ If property maps to one or more shorthand properties, let shorthands be an array of those shorthand properties, in preferred order, and follow these substeps:

      【 “対応する( map to )” — どうも定義がはっきりしないが、 %~prop名 は必ずしも(末端の)`下位prop$のみを指すわけではないようにも思われる: 例えば`略式~prop$[ `border-style$p, `border-color$p, `border-width$p ]は,直列化の際に,より上位の`略式~prop$ `border$p にまとめられるようにするために, `border$p に “対応する” ものとも考えられる。 】

      1. %略式~prop~list ~LET それらの`略式~prop$の`選好順$による~list ◎ ↑
      2. %下位prop~list ~LET [ %宣言~list 内の`~css宣言$のうち,次の両者を満たすもの ]すべてからなる~list:

        • 宣言の`~prop名$ ~NIN %直列化済~集合
        • 宣言の`~prop名$ ~EQ [ %略式~prop~list 内の ある`略式~prop$の ある下位propの名前 ]
        ◎ Let longhands be an array consisting of all CSS declarations in declaration block’s declarations that that are not in already serialized and have a property name that maps to one of the shorthand properties in shorthands.
      3. ~FOR %略式~prop~list 内の ~EACH ( %略式~prop ) に対し: ◎ Shorthand loop: For each shorthand in shorthands, follow these substeps:

        1. %下位prop名~集合 ~LET[ %略式~prop の すべての`下位prop$の`~prop名$ ]からなる集合 ◎ ↓
        2. %現~下位prop~list ~LET [ %下位prop~list 内の`~css宣言$のうち,[ その`~prop名$ ~IN %下位prop名~集合 ]なるもの ]すべてからなる~list ◎ ↓
        3. ~IF[ %現~下位prop~list の項目~数 ~LT %下位prop名~集合 の項目~数 ] ⇒ ~CONTINUE ◎ If all properties that map to shorthand are not present in longhands, continue with the steps labeled shorthand loop. ◎ Let current longhands be an empty array. ◎ Append all CSS declarations in longhands have a property name that maps to shorthand to current longhands.
        4. %important ~LET [ %現~下位prop~list の最初の`~css宣言$ ]の`~important~flag$ ◎ ↓
        5. ~IF[ %現~下位prop~list 内に[ `~important~flag$ ~NEQ %important ]なる`~css宣言$がある ] ⇒ ~CONTINUE ◎ If there is one or more CSS declarations in current longhands have their important flag set and one or more with it unset, continue with the steps labeled shorthand loop.
        6. %値 ~LET %現~下位prop~list を`下位prop~listとして直列化-$した結果 ◎ Let value be the result of invoking serialize a CSS value of current longhands.
        7. ~IF[ %値 ~EQ 空文字列 ] ⇒ ~CONTINUE ◎ If value is the empty string, continue with the steps labeled shorthand loop.
        8. [ ( ~prop名: %略式~prop, 値: %値, %~important~flag: %important ) を伴う `~css宣言を直列化-$した結果 ]を %~list に付加する ◎ Let serialized declaration be the result of invoking serialize a CSS declaration with property name shorthand, value value, and the important flag set if the CSS declarations in current longhands have their important flag set. ◎ Append serialized declaration to list.
        9. %直列化済~集合 ~SET [ %直列化済~集合 と %下位prop名~集合 ]の和集合 ◎ Append the property names of all items of current longhands to already serialized.
        10. %下位prop~list から %現~下位prop~list に含まれる項目すべてを除去する ◎ Remove the items present in current longhands from longhands.
    4. ~IF[ %~prop名 ~IN %直列化済~集合 ] ⇒ ~CONTINUE ◎ If property is in already serialized, continue with the steps labeled declaration loop.
    5. %値 ~LET %宣言 の`値$を`~css値として直列化-$した結果 ◎ Let value be the result of invoking serialize a CSS value of declaration.
    6. [ ( ~prop名: %~prop名, 値: %値, %~important~flag: %宣言 の`~important~flag$ ) を伴う `~css宣言を直列化-$した結果 ]を %~list に付加する ◎ Let serialized declaration be the result of invoking serialize a CSS declaration with property name property, value value, and the important flag set if declaration has its important flag set. ◎ Append serialized declaration to list.
    7. %~prop名 を %直列化済~集合 に~~追加する ◎ Append property to already serialized.
  4. ~RET %~list を~SPで区切って連結した結果 ◎ Return list joined with " " (U+0020).

注記: 空の`~css宣言~block$を直列化した結果は、空文字列になる。 ◎ Note: The serialization of an empty CSS declaration block is the empty string.

注記: 空でない`~css宣言~block$を直列化した結果の,先頭/末尾 には、空白は含まれない。 すなわち,最初の~prop名の前, および最後の~prop値の最後の~semicolon区切子の後には、空白は現れない。 ◎ Note: The serialization of a non-empty CSS declaration block does not include any surrounding whitespace, i.e., no whitespace appears before the first property name and no whitespace appears after the final semicolon delimiter that follows the last property value.

`略式~prop$の~list %略式~prop~list の `選好順@ は、次で与えられる: ◎ The preferred order of a list of shorthand properties shorthands is as follows:

  1. %略式~prop~list を辞書式~順序に~~整列する ◎ Order shorthands lexicographically.
  2. %略式~prop~list 内の ❝- から始まる項目すべてを、それらの相対的~順序は保ったまま,~listの後ろに回す ◎ Move all items in shorthands that begin with "-" (U+002D) last in the list, retaining their relative order.
  3. %略式~prop~list 内の[ ❝- から始まる ]~AND[ `-webkit-^l からは始まらない ]ような項目すべてを、それらの相対的~順序は保ったまま,~listの後ろに回す ◎ Move all items in shorthands that begin with "-" (U+002D) but do not begin with "-webkit-" last in the list, retaining their relative order.
  4. %略式~prop~list を 【 先行の段で後ろに回されたものは,その順位を保ちつつ? 】 対応する`下位prop$の個数が多い順に並べる ◎ Order shorthands by the number of longhand properties that map to it, with the greatest number first.

    【 例えば `border-style$p よりも `border$p の方が 末端の `下位prop$の個数が多くなるので,先に来るものと考えられる。 】

5.6.1. `CSSStyleDeclaration^I ~ifc

`CSSStyleDeclaration$I ~ifcは,下層の状態も含めた`~css宣言~block$を表現する。 この下層の状態は `CSSStyleDeclaration$I ~instanceの~sourceに依存する。 ◎ The CSSStyleDeclaration interface represents a CSS declaration block, including its underlying state, where this underlying state depends upon the source of the CSSStyleDeclaration instance.

⇒! interface `CSSStyleDeclaration@I { [`CEReactions$] attribute ~DS `cssText$m; ~RA ~UL `length$m; getter ~DS `item$m(~UL %index); ~DS `getPropertyValue$m(~DS %property); ~DS `getPropertyPriority$m(~DS %property); [`CEReactions$] void `setProperty$m( ~DS %property, [TreatNullAs=EmptyString] ~DS %value, [TreatNullAs=EmptyString] optional ~DS %priority = "" ); [`CEReactions$] void `setPropertyValue$m( ~DS %property, [TreatNullAs=EmptyString] ~DS %value ); [`CEReactions$] void `setPropertyPriority$m( ~DS %property, [TreatNullAs=EmptyString] ~DS %priority ); [`CEReactions$] ~DS `removeProperty$m(~DS %property); ~RA `CSSRule$I? `parentRule$m; [`CEReactions$, TreatNullAs=EmptyString] attribute ~DS `cssFloat$m; };◎

~objの `被support~prop~index$ の範囲は[ 0 〜 ( ( 此れの`宣言列$に含まれている`~css宣言$の総数 ) ~MINUS 1 ) ]である( `~css宣言$が無ければ存在しないことになる)。 ◎ The object’s supported property indices are the numbers in the range zero to one less than the number of CSS declarations in the declarations. If there are no such CSS declarations, then there are no supported property indices.

`cssText@m 属性は、[ 此れの`宣言列$を `宣言列として直列化-$した結果 ]を返さ~MUST。 ◎ The cssText attribute must return the result of serializing the declarations.

`cssText$m 属性の被設定時には、次を実行し~MUST: ◎ Setting the cssText attribute must run these steps:

  1. ~IF[ 此れの`読専~flag$ ~EQ ~ON ] ⇒ ~THROW `NoModificationAllowedError$E ◎ If the readonly flag is set, throw a NoModificationAllowedError exception and terminate these steps.
  2. 此れの`宣言列$を空にする ◎ Empty the declarations.
  3. %items ~LET 所与の値を`~css宣言~blockとして構文解析-$した結果;
    ~IF[ %items は空~listでない ] ⇒ %items を,`指定順$により 此れの`宣言列$に挿入する ◎ Parse the given value and, if the return value is not the empty list, insert the items in the list into the declarations, in specified order.

`length@m 属性は、此れの`宣言列$に含まれている`~css宣言$の個数を返さ~MUST。 ◎ The length attribute must return the number of CSS declarations in the declarations.

`item(index)@m ~methの被呼出時には、 %index に位置する`~css宣言$の`~prop名$を返さ~MUST。 ◎ The item(index) method must return the property name of the CSS declaration at position index.

`getPropertyValue(property)@m ~methの被呼出時には、次を実行し~MUST: ◎ The getPropertyValue(property) method must run these steps:

  1. %~prop名 ~LET %property の`ASCII 小文字化$ ◎ Let property be property converted to ASCII lowercase.
  2. ~IF[ %~prop名 ~EQ ある`略式~prop$ %p の名前 ]: ◎ If property is a shorthand property, then follow these substeps:

    1. %下位prop名~集合 ~LET %p のすべての`下位prop$の名前からなる集合
    2. %宣言~list ~LET[ 此れの`宣言列$内の~css宣言のうち,[ `~prop名$ ~IN %下位prop名~集合 ]なるもの ]からなる,`正準的~順序$による~list
    3. ~IF[ %宣言~list の項目~数 ~LT %下位prop名~集合 の項目~数 ] ⇒ ~RET 空文字列
    4. ~RET %宣言~list を`下位prop~listとして直列化-$した結果
    1. Let list be a new empty array.
    2. For each longhand property longhand that property maps to, in canonical order, follow these substeps:
    3. If longhand is a case-sensitive match for a property name of a CSS declaration in the declarations, let declaration be that CSS declaration, or null otherwise.
    4. If declaration is null, return the empty string and terminate these steps.
    5. Append the declaration to list.
    6. Return the serialization of list and terminate these steps.
  3. ~IF[ 此れの`宣言列$内に `~prop名$ ~EQ %~prop名 なる`~css宣言$がある ] ⇒ ~RET その宣言の`値$を`~css値として直列化-$した結果 ◎ If property is a case-sensitive match for a property name of a CSS declaration in the declarations, return the result of invoking serialize a CSS value of that declaration and terminate these steps.
  4. ~RET 空文字列 ◎ Return the empty string.

`getPropertyPriority(property)@m ~methの被呼出時には、次を実行し~MUST: ◎ The getPropertyPriority(property) method must run these steps:

  1. %~prop名 ~LET %property の`ASCII 小文字化$ ◎ Let property be property converted to ASCII lowercase.
  2. ~IF[ %~prop名 は`略式~prop$の名前である ]: ◎ If property is a shorthand property, follow these substeps:

    1. ~FOR %~prop名 に対応する ~EACH ( `下位prop$ %下位prop ) に対し ⇒ ~IF[ ( %下位prop ) を引数に 此れ上の `getPropertyPriority()$m を呼出した結果 ~NEQ `important^l ] ⇒ ~RET 空文字列 ◎
    2. ~RET `important^l
    1. Let list be a new array.
    2. For each longhand property longhand that property maps to, append the result of invoking getPropertyPriority() with longhand as argument to list.
    3. If all items in list are the string "important", return the string "important" and terminate these steps.
  3. ~ELIF[ 此れの`宣言列$内に[ `~prop名$ ~EQ %~prop名 ]~AND[ `~important~flag$ ~EQ ~ON ]なる`~css宣言$がある ] ⇒ ~RET `important^l ◎ Otherwise, follow these substeps: ◎ If property is a case-sensitive match for a property name of a CSS declaration in the declarations that has the important flag set, return the string "important".
  4. ~RET 空文字列 ◎ Return the empty string.

例えば background-color:lime !IMPORTANT に対し 返される値は `important^l になるであろう。 ◎ E.g. for background-color:lime !IMPORTANT the return value would be "important".

`setProperty(property, value, priority)@m ~methの被呼出時には、次を実行し~MUST: ◎ The setProperty(property, value, priority) method must run these steps:

  1. ~IF[ 此れの`読専~flag$ ~EQ ~ON ] ⇒ ~THROW `NoModificationAllowedError$E ◎ If the readonly flag is set, throw a NoModificationAllowedError exception and terminate these steps.
  2. %~prop名 ~LET %property の`ASCII 小文字化$ ◎ Let property be property converted to ASCII lowercase.
  3. ~IF[ %~prop名 は,`~supportされる~css~prop$に含まれていない ] ⇒ ~RET ◎ If property is not a case-sensitive match for a supported CSS property, terminate this algorithm.
  4. ~IF[ %value ~EQ 空文字列 ] ⇒ ( %~prop名 ) を引数に 此れ上の `removeProperty()$m を呼出す;
    ~RET ◎ If value is the empty string, invoke removeProperty() with property as argument and terminate this algorithm.
  5. ~IF[ %priority ~NIN `~ACI$ { 空文字列, `important^l } ] ⇒ ~RET ◎ If priority is not the empty string and is not an ASCII case-insensitive match for the string "important", terminate this algorithm.
  6. %成分値~list ~LET %value を[ 名前 %~prop名 ~prop ]の`~css値として構文解析-$した結果 ◎ Let component value list be the result of parsing value for property property.

    注記: %value は "!important" を含み得ない。 ◎ Note: value can not include "!important".

  7. ~IF[ %成分値~list ~EQ ~NULL ] ⇒ ~RET ◎ If component value list is null terminate these steps.
  8. ~IF[ %~prop名 はある`略式~prop$の名前である ] ⇒ ~FOR %~prop名 に対応する ~EACH ( `下位prop$ %下位prop ) に対し, `正準的~順序$で ⇒ 此れの`宣言列$に,次を伴う`~css宣言を設定-$する ⇒ 名前: %下位prop,
    値: %成分値~list 内の %下位prop に対応する部分,
    %~important~flag: [ %priority ~NEQ 空文字列ならば ~ON / ~ELSE_ ~OFF ] ◎ If property is a shorthand property, then for each longhand property longhand that property maps to, in canonical order, set the CSS declaration longhand with the appropriate value(s) from component value list, with the important flag set if priority is not the empty string, and unset otherwise, and with the list of declarations being the declarations.
  9. ~ELSE ⇒ 此れの`宣言列$に,次を伴う`~css宣言を設定-$する ⇒ 名前: %~prop名,
    値: %成分値~list,
    %~important~flag: [ %priority ~NEQ 空文字列ならば ~ON / ~ELSE_ ~OFF ] ◎ Otherwise, set the CSS declaration property with value component value list, with the important flag set if priority is not the empty string, and unset otherwise, and with the list of declarations being the declarations.

宣言~list %宣言~list に, ( 名前: %~prop名, 値: %成分値~list, %~important~flag: %important ) を伴う `~css宣言を設定-@ するときは、次を実行する: ◎ To set a CSS declaration property with a value component value list and optionally with an important flag set, in a list of declarations declarations, follow these steps:

  1. ~IF[ %宣言~list 内に[ `~prop名$ ~EQ %~prop名 ]なる`~css宣言$がある ] ⇒ %宣言 ~LET その`~css宣言$ ◎ If property is a case-sensitive match for a property name of a CSS declaration in declarations, let declaration be that CSS declaration.
  2. ~ELSE ⇒ %宣言 ~LET `~prop名$ %~prop名 を伴う新たな`~css宣言$;
    %宣言 を %宣言~list に付加する ◎ Otherwise, append a new CSS declaration with the property name property to declarations and let declaration be that CSS declaration.
  3. %宣言 の`値$ ~SET %成分値~list ◎ Set declaration’s value to component value list.
  4. %宣言 の`~important~flag$ ~SET %important ◎ If the important flag is set, set declaration’s important flag. Otherwise, unset declaration’s important flag.

`setPropertyValue(property, value)@m ~methの被呼出時には、次を実行し~MUST: ◎ The setPropertyValue(property, value) method must run these steps:

  1. ~IF[ 此れの`読専~flag$ ~EQ ~ON ] ⇒ ~THROW `NoModificationAllowedError$E ◎ If the readonly flag is set, throw a NoModificationAllowedError exception and terminate these steps.
  2. %~prop名 ~LET %property の`ASCII 小文字化$ ◎ Let property be property converted to ASCII lowercase.
  3. ~IF[ %~prop名 は `~supportされる~css~prop$に含まれていない ] ⇒ ~RET ◎ If property is not a case-sensitive match for a supported CSS property, terminate this algorithm.
  4. ~IF[ %value ~EQ 空文字列 ] ⇒ ( %~prop名 ) を引数に 此れ上の `removeProperty()$m を呼出す;
    ~RET ◎ If value is the empty string, invoke removeProperty() with property as argument and terminate this algorithm.
  5. %成分値~list ~LET %value を[ 名前 %~prop名 の~prop ]の`~css値として構文解析-$した結果 ◎ Let component value list be the result of parsing value for property property.

    注記: %value は "!important" を含み得ない。 ◎ Note: value can not include "!important".

  6. ~IF[ %成分値~list ~EQ ~NULL ] ⇒ ~RET ◎ If component value list is null terminate these steps.
  7. ~IF[ %~prop名 はある`略式~prop$の名前である ] ⇒ ~FOR %~prop名 に対応する ~EACH ( `下位prop$ %下位prop ) に対し, `正準的~順序$で ⇒ 此れの`宣言列$の中で, ( 名前: %下位prop, 値: %成分値~list 内の %下位prop に対応する部分 ) を入力に`~css宣言の値を設定-$する ◎ If property is a shorthand property, then for each longhand property longhand that property maps to, in canonical order, set the CSS declaration value longhand to the appropriate value(s) from component value list, and with the list of declarations being the declarations.
  8. ~ELSE ⇒ 此れの`宣言列$の中で, ( 名前: %~prop名, 値: %成分値~list ) を入力に`~css宣言の値を設定-$する ⇒ ◎ Otherwise, set the CSS declaration value property to the value component value list, and with the list of declarations being the declarations.

宣言~list %宣言~list の中で, ( 名前: %~prop名 値: %成分値~list ) を入力に `~css宣言の値を設定-@ するときは、次を実行する: ◎ To set a CSS declaration value to a value component value list in a list of declarations declarations, follow these steps:

  1. ~IF[ %宣言~list 内に[ `~prop名$ ~EQ %~prop名 ]なる`~css宣言$がある ] ⇒ %宣言 ~LET その`~css宣言$ ◎ If property is a case-sensitive match for a property name of a CSS declaration in declarations, let declaration be that CSS declaration.
  2. ~ELSE ⇒ %宣言 ~LET `~prop名$ %~prop名 を伴う新たな`~css宣言$;
    %宣言 を %宣言~list に付加する ◎ Otherwise, append a new CSS declaration with the property name property to declarations and let declaration be that CSS declaration.
  3. %宣言 の`値$ ~SET %成分値~list ◎ Set declaration’s value to component value list.

`setPropertyPriority(property, priority)@m ~methの被呼出時には、次を実行し~MUST: ◎ The setPropertyPriority(property, priority) method must run these steps:

  1. ~IF[ 此れの`読専~flag$ ~EQ ~ON ] ⇒ ~THROW `NoModificationAllowedError$E ◎ If the readonly flag is set, throw a NoModificationAllowedError exception and terminate these steps.
  2. %~prop名 ~LET %property の`ASCII 小文字化$ ◎ Let property be property converted to ASCII lowercase.
  3. ~IF[ %~prop名 は`~supportされる~css~prop$の中のどの~propにも一致しない ] ⇒ ~RET ◎ If property is not a case-sensitive match for a supported CSS property, terminate this algorithm.
  4. ~IF[ %priority ~NIN `~ACI$ { 空文字列, `important^l } ] ⇒ ~RET ◎ If priority is not the empty string and is not an ASCII case-insensitive match for the string "important", terminate this algorithm.
  5. ~IF[ %~prop名 は ある`略式~prop$の名前である ] ⇒ ~FOR %~prop名 に対応する ~EACH ( `下位prop$ %下位prop ) に対し, `正準的~順序$で ⇒ 此れの`宣言列$の中で, ( 名前: %下位prop, %~important~flag: [ %priority ~NEQ 空文字列ならば ~ON / ~ELSE_ ~OFF ] ) を入力に `~css宣言の優先度を設定-$する ◎ If property is a shorthand property, then for each longhand property longhand that property maps to, in canonical order, set the CSS declaration priority longhand with the important flag set if priority is not the empty string, and unset otherwise, and with the list of declarations being the declarations.
  6. ~ELSE ⇒ 此れの`宣言列$の中で, ( 名前: %~prop名, %~important~flag: [ %priority ~NEQ 空文字列ならば ~ON / ~ELSE_ ~OFF ] ) を入力に `~css宣言の優先度を設定-$する ◎ Otherwise, set the CSS declaration priority property with the important flag set if priority is not the empty string, and unset otherwise, and with the list of declarations being the declarations.

宣言~list %宣言~list の中で, ( 名前: %~prop名, %~important~flag: %important ) を入力に `~css宣言の優先度を設定-@ するときは、次を実行する: ◎ To set a CSS declaration priority property optionally with an important flag set, in a list of declarations declarations, follow these steps:

  1. ~IF[ %宣言~list 内に[ `~prop名$ ~EQ %~prop名 ]なる`~css宣言$がある ] ⇒ その`~css宣言$の`~important~flag$ ~SET %important ◎ If property is a case-sensitive match for a property name of a CSS declaration in declarations, let declaration be that CSS declaration. ◎ Otherwise, terminate these steps. ◎ If the important flag is set, set declaration’s important flag. Otherwise, unset declaration’s important flag.

`removeProperty(property)@m ~methの被呼出時には、次を実行し~MUST: ◎ The removeProperty(property) method must run these steps:

  1. ~IF[ 此れの`読専~flag$ ~EQ ~ON ] ⇒ ~THROW `NoModificationAllowedError$E ◎ If the readonly flag is set, throw a NoModificationAllowedError exception and terminate these steps.
  2. %~prop名 ~LET %property の`ASCII 小文字化$ ◎ Let property be property converted to ASCII lowercase.
  3. %値 ~LET ( %~prop名 ) を引数に 此れ上の `getPropertyValue()$m を呼出した結果 ◎ Let value be the return value of invoking getPropertyValue() with property as argument.
  4. ~IF[ %~prop名 は ある`略式~prop$の名前である ] ⇒ ~FOR %~prop名 に対応する ~EACH ( `下位prop$ %下位prop ) に対し ⇒ ( %下位prop ) を引数に 此れ上の `removeProperty()$m を呼出す ◎ If property is a shorthand property, for each longhand property longhand that property maps to, invoke removeProperty() with longhand as argument.
  5. 此れの`宣言列$から,[ `~prop名$ ~EQ %~prop名 ]なる`~css宣言$を(もしあれば)除去する ◎ Otherwise, if property is a case-sensitive match for a property name of a CSS declaration in the declarations, remove that CSS declaration.
  6. ~RET %値 ◎ Return value.

`parentRule@m 属性は、此れの`親~css規則$を返さ~MUST。 ◎ The parentRule attribute must return the parent CSS rule.

`cssFloat@m 属性の被取得時には、[ ( `float^l ) を引数に 此れ上の `getPropertyValue()$m を呼出した結果 ]を返さ~MUST。 被設定時には、 ( `float^l, 所与の値 ) を引数に 此れ上の `setProperty()$m を呼出さ~MUST(3番目の引数は省略する)。 例外は再投出され~MUST。 ◎ The cssFloat attribute, on getting, must return the result of invoking getPropertyValue() with float as argument. On setting, the attribute must invoke setProperty() with float as first argument, as second argument the given value, and no third argument. Any exceptions thrown must be re-thrown.

`~supportされる~css~prop$に含まれる各~propに対し、次の部分的~ifcが適用される。 ここで, ~camel_cased_attr は、その~prop名を`IDL 属性~名に変換$した名前である。 ◎ For each CSS property property that is a supported CSS property, the following partial interface applies where camel-cased attribute is obtained by running the CSS property to IDL attribute algorithm for property.

⇒! partial interface `CSSStyleDeclaration$I { [`CEReactions$, TreatNullAs=EmptyString] attribute ~DS _`~camel_cased_attr$m; };◎

【 IDL における先頭の ❝_ は、属性の識別子の一部ではなく, IDL 構文の一部(~escape)であることに注意。 】

`~camel_cased_attr@m 属性の被取得時には、[ ( その属性の名前を`~css~prop名に変換$した結果 ) を引数に 此れ上の `getPropertyValue()$m を呼出した結果 ]を返さ~MUST。 ◎ The camel-cased attribute attribute, on getting, must return the result of invoking getPropertyValue() with the argument being the result of running the IDL attribute to CSS property algorithm for camel-cased attribute.

`~camel_cased_attr$m 属性の被設定時には、 ( その属性の名前を`~css~prop名に変換$した結果, 所与の値 ) を引数に 此れ上の `setProperty()$m を呼出さ~MUST(3番目の引数は省略する) — 例外は再投出され~MUST。 ◎ Setting the camel-cased attribute attribute must invoke setProperty() with the first argument being the result of running the IDL attribute to CSS property algorithm for camel-cased attribute, as second argument the given value, and no third argument. Any exceptions thrown must be re-thrown.

例えば `font-size$p ~propに対しては, `fontSize^m IDL 属性が存在することになる。 ◎ For example, for the font-size property there would be a fontSize IDL attribute.

[ `~supportされる~css~prop$であって, かつ 文字列 `-webkit-^l から始まる ]ような各 %~prop に対し、次の部分的~ifcが適用される。 ここで, ~webkit_cased_attr は、[ %小文字先頭~flag ~SET ~ON ]の下で, %~prop を`IDL 属性~名に変換$して得られる名前である: ◎ For each CSS property property that is a supported CSS property and that begins with the string -webkit-, the following partial interface applies where webkit-cased attribute is obtained by running the CSS property to IDL attribute algorithm for property, with the lowercase first flag set.

⇒! partial interface `CSSStyleDeclaration$I { [`CEReactions$, TreatNullAs=EmptyString] attribute DOMString _`~webkit_cased_attr$m; }; ◎

`~webkit_cased_attr@m 属性の被取得時には、[ ( [ %接頭dash~flag ~SET ~ON ]の下に,その属性の名前を`~css~prop名に変換$した結果 ) を引数に 此れ上の `getPropertyValue()$m を呼出した結果 ]を返さ~MUST。 ◎ The webkit-cased attribute attribute, on getting, must return the result of invoking getPropertyValue() with the argument being the result of running the IDL attribute to CSS property algorithm for webkit-cased attribute, with the dash prefix flag set.

`~webkit_cased_attr$m 属性の被設定時には、 ( [ %接頭dash~flag ~SET ~ON ]の下に,その属性の名前を`~css~prop名に変換$した結果, 所与の値 ) を引数に 此れ上の `setProperty()$m を呼出さ~MUST( 3 番目の引数は省略する) — 例外は再投出され~MUST。 ◎ Setting the webkit-cased attribute attribute must invoke setProperty() with the first argument being the result of running the IDL attribute to CSS property algorithm for webkit-cased attribute, with the dash prefix flag set, as second argument the given value, and no third argument. Any exceptions thrown must be re-thrown.

例えば,~UAが `-webkit-transform^p ~propを~supportするならば、 `webkitTransform^m IDL 属性が在ることになる。 `~camel_cased_attr$m 属性に対する規則により, `WebkitTransform^m IDL 属性も在ることになる。 ◎ For example, if the user agent supports the -webkit-transform property, there would be a webkitTransform IDL attribute. There would also be a WebkitTransform IDL attribute because of the rules for camel-cased attributes.

[ `~supportされる~css~prop$であって,かつ ~prop名に ❝- が含まれる ]ような,各 %~prop に対しては、次の 部分的~ifcが適用される — ここで,~dashed_attr は その %~prop の名前とする: ◎ For each CSS property property that is a supported CSS property, except for properties that have no "-" (U+002D) in the property name, the following partial interface applies where dashed attribute is property.

⇒! partial interface `CSSStyleDeclaration$I { [`CEReactions$, TreatNullAs=EmptyString] attribute DOMString _`~dashed_attr$m; };◎

`~dashed_attr@m 属性の被取得時には、[ ( その属性の名前 ) を引数に 此れ上の `getPropertyValue()$m を呼出した結果 ]を返さ~MUST。 ◎ The dashed attribute attribute, on getting, must return the result of invoking getPropertyValue() with the argument being dashed attribute.

`~dashed_attr$m 属性の被設定時には、 ( その属性の名前, 所与の値 ) を引数に 此れ上の `setProperty()$m を呼出さ~MUST( 3 番目の引数は省略する) — 例外は再投出され~MUST。 ◎ Setting the dashed attribute attribute must invoke setProperty() with the first argument being dashed attribute, as second argument the given value, and no third argument. Any exceptions thrown must be re-thrown.

例えば `font-size$p ~propに対しては、 IDL 属性 `font-size^m が存在することになる。 JavaScript においては、 %要素 を HTML 要素 とするとき,この~propは 次の様に~accessし得る: ◎ For example, for the 'font-size' property there would be a font-size IDL attribute. In JavaScript, the property can be accessed as follows, assuming element is an HTML element:

%要素.style['font-size'];

%小文字先頭~flag の下で,所与の~css~prop名 %~prop を `IDL 属性~名に変換@ する~algoは次で与えられる: ◎ The CSS property to IDL attribute algorithm for property, optionally with a lowercase first flag set, is as follows:

  1. %出力 ~LET 空文字列 ◎ Let output be the empty string.
  2. %次~大文字化 ~LET ~F ◎ Let uppercase next be unset.
  3. ~IF[ %小文字先頭~flag ~EQ ~ON ] ⇒ %~prop から最初の文字を除去する ◎ If the lowercase first flag is set, remove the first character from property.
  4. ~FOR ~prop 内の~EACH ( 文字 %c ) に対し: ◎ For each character c in property:

    1. ~IF[ %c ~EQ ❝- ] ⇒ %次~大文字化 ~SET ~T ◎ If c is "-" (U+002D), let uppercase next be set.
    2. ~ELIF[ %次~大文字化 ~EQ ~T ] ⇒ %次~大文字化 ~SET ~F;
      %出力 ~APPEND[ %c を`ASCII 大文字化$した結果 ] ◎ Otherwise, if uppercase next is set, let uppercase next be unset and append c converted to ASCII uppercase to output.
    3. ~ELSE ⇒ %出力 ~APPEND %c ◎ Otherwise, append c to output.
  5. ~RET %出力 ◎ Return output.

%接頭dash~flag の下で,所与の IDL 属性~名を `~css~prop名に変換@ する~algoは次で与えられる: ◎ The IDL attribute to CSS property algorithm for attribute, optionally with a dash prefix flag set, is as follows:

  1. %出力 ~LET 空文字列 ◎ Let output be the empty string.
  2. ~IF[ %接頭dash~flag ~EQ ~ON ] ⇒ %出力 ~APPEND ❝- ◎ If the dash first flag is set, append "-" (U+002D) to output.
  3. ~FOR IDL 属性~名~内の~EACH ( 文字 %c ) に対し: ◎ For each character c in attribute:

    1. ~IF[ %c ~IN { ❝A 〜 ❝Z } ] ⇒ %出力 ~APPEND ❝- ~APPEND[ %c の`ASCII 小文字化$ ] ◎ If c is in the range U+0041 to U+005A (ASCII uppercase), append "-" (U+002D) followed by c converted to ASCII lowercase to output.
    2. ~ELSE ⇒ %出力 ~APPEND %c ◎ Otherwise, append c to output.
  4. ~RET %出力 ◎ Return output.

5.7. ~css値

5.7.1. ~css値の構文解析法

所与の %値 を所与の[ 名前 %~prop名 の~prop ]の`~css値として構文解析-@ するときは、次を実行する: ◎ To parse a CSS value value for a given property means to follow these steps:

  1. %~list ~LET %値 から 成分値の~listを構文解析- した結果 ◎ Let list be the value returned by invoking parse a list of component values from value.
  2. ~RET [ %~list は CSS 仕様の[ 名前 %~prop名 の~prop ]の文法に合致するならば %~list / ~ELSE_ ~NULL ] ◎ Match list against the grammar for the property property in the CSS specification. ◎ If the above step failed, return null. ◎ Return list.

注記: "!important" 宣言は、~propの値~空間の一部ではなく,したがって`~css値として構文解析-$した結果は~NULLになる。 ◎ Note: "!important" declarations are not part of the property value space and will therefore cause parse a CSS value to return null.

5.7.2. ~css値の直列化法

[ `下位prop$の`~css宣言$からなる~list %~list ]を `下位prop~listとして直列化-@ するときは、次を実行する: ◎ To serialize a CSS value of a CSS declaration declaration or a list of longhand CSS declarations list, follow these rules: ◎ If this algorithm is invoked with a list list, follow these substeps:

【 原文では後述の~css値を`~css値として直列化-$する~algoと一緒にされて定義されているが、入力と処理内容が別物なので,この訳では2つに分割している。 】

  1. %略式~prop ~LET %~list の中のすべての`下位prop$に正確に対応する`略式~prop$ ~prop — そのような %略式~prop が複数ある場合 【具体例?】 は `選好順$において先に来るものを選ぶ ◎ Let shorthand be the shorthand property that exactly maps to all the longhand properties in list. If there are multiple such shorthand properties, use the first in preferred order.
  2. ~IF[ %略式~prop は その文法の下で %~list の一連の値を表現できない ] ⇒ ~RET 空文字列 ◎ If shorthand cannot represent the values of list in its grammar, return the empty string and terminate these steps.

    【 例えば %~list の中の各~宣言に対する !important の有無が統一されていない場合は? (空文字列が返される?)。 】

  3. %省略済~list ~LET 空~list ◎ Let trimmed list be a new empty array.
  4. %~list 内の~EACH ( `~css宣言$ %宣言 ) に対し ⇒ ~IF[ %宣言 の`値$ ~NEQ `初期値$ ~OR %宣言 は %略式~prop の必須の成分である ] ⇒ %宣言 を %省略済~list に付加する ◎ For each CSS declaration declaration in list, if declaration’s value is not the initial value, or if declaration is a required component of the shorthand property, append declaration to trimmed list.
  5. ~IF[ %省略済~list は空である ] ⇒ %~list 内の最初の項目の値を %省略済~list に付加する ◎ If trimmed list is empty, append the value of the first item in list to trimmed list.
  6. %値~list ~LET 空~list ◎ Let values be a new empty array.
  7. %省略済~list 内の~EACH ( `~css宣言$ %宣言 ) に対し ⇒ [ %宣言 を`~css値として直列化-$した結果 ]を %値~list に付加する ◎ For each CSS declaration declaration in trimmed list, invoke serialize a CSS value of declaration, and append the result to values.
  8. ~RET %値~list を %略式~prop の文法に従って適切に連結した結果 ◎ Return the result of joining values as appropriate according to the grammar of shorthand and terminate these steps.

`~css宣言$ %宣言 の`値$ %値 を `~css値として直列化-@ するときは、次を実行する: ◎ ↑

  1. %値~list ~LET 空~list ◎ Let values be a new empty array.
  2. ~FOR %値 内の~EACH( %成分 ) に対し ⇒ [ %成分 を`~css成分値として直列化-$した結果 ]を %値~list に付加する ◎ Append the result of invoking serialize a CSS component value of declaration’s value to values.
  3. ~IF[ %宣言 の`~prop名$の文法は空白~区切りとして定義されている ] ⇒ ~RET %値~list を`空白~区切りで直列化-$した結果 ◎ If the grammar of the property name of declaration is defined to be whitespace-separated, return the result of invoking serialize a whitespace-separated list of values and terminate these steps.
  4. ~IF[ %宣言 の`~prop名$の文法は~comma区切りとして定義されている ] ⇒ ~RET %値~list を`~comma区切りで直列化-$した結果 ◎ If the grammar of the property name of declaration is defined to be comma-separated, return the result of invoking serialize a comma-separated list of values.

所与の %成分 を `~css成分値として直列化-@ した結果は、 %成分 の型に応じて,次で与えられる: ◎ To serialize a CSS component value depends on the component, as follows:

keyword
~keywordの`ASCII 小文字化$ ◎ The keyword converted to ASCII lowercase.
`angle$t
[ `number^t 成分を `number^t として直列化した結果 ]
~APPEND[ 当該の仕様にて定義される単位を表す正準形の文字列 ] ◎ The <number> component serialized as per <number> followed by the unit in canonical form as defined in its respective specification.
`color$t
`color^t は`解決値$または`算出値$の成分である場合: ◎ If <color> is a component of a resolved or computed value, then return the color using the rgb() or rgba() functional notation as follows:

%comma_space ~LET [ ❝, ~APPEND ~SP ]

結果は次の連結( `rgb()^l / `rgba()^l 関数記法による直列化): ◎ If the alpha component of the color is equal to one, then return the serialization of the rgb() functional equivalent of the opaque color. ◎ If the alpha component of the color is not equal to one, then return the serialization of the rgba() functional equivalent of the non-opaque color. ◎ The serialization of the rgb() functional equivalent is the concatenation of the following:

  1. 色の~alpha成分が[ ~EQ 1 (不透明)ならば `rgb(^l / ~NEQ 1 ならば `rgba(^l ] ◎ The string "rgb(". ◎ The shortest base-ten integer serialization of the color’s red component. ◎ The string ", ". ◎ The shortest base-ten serialization of the color’s green component. ◎ The string ", ". ◎ The shortest base-ten serialization of the color’s blue component. ◎ The string ")". ◎ The serialization of the rgba() functional equivalent is the concatenation of the following: ◎ The string "rgba(".
  2. ~APPEND[ 色の赤( red )成分の,最短の基数10整数 直列化 ] ◎ The shortest base-ten serialization of the color’s red component.
  3. ~APPEND %comma_space ◎ The string ", ".
  4. ~APPEND[ 色の緑( green )成分の,最短の基数10整数 直列化 ] ◎ The shortest base-ten serialization of the color’s green component.
  5. ~APPEND %comma_space ◎ The string ", ".
  6. ~APPEND[ 色の青( blue )成分の,最短の基数10整数 直列化 ] ◎ The shortest base-ten serialization of the color’s blue component.
  7. ~IF[ 色の~alpha成分 ~NEQ 1 ] ⇒ ~APPEND %comma_space ~APPEND[ 色の~alpha成分を `alphavalue^t として直列化した結果 ] ◎ The string ", ". ◎ The serialization of the color’s alpha component as an <alphavalue>.

  8. ~APPEND ❝) ◎ The string ")". ◎ In the above rules, the string ", " denotes a COMMA (U+002C) followed by a single SPACE (U+0020).
`color^t は`指定値$の成分である場合: ◎ If <color> is a component of a specified value, then return the color as follows:

色は作者により明示的に指定されたものであるならば,作者により指定された元の(文字列としての)色~値 / ~ELSE_ 色は`算出値$の成分であったとしたときに返されることになる値 ◎ If the color was explicitly specified by the author, then return the original, author specified color value. ◎ Otherwise, return the value that would be returned if the color were a component of a computed value.

作者による`指定値$における文字の大小は、正規化すべきか? あるいは,保全されるべきか? ◎ Should author specified values be normalized for case? Or should original case be preserved?

`alphavalue^t

~IF[ 値は内部的に 0 〜 255 の範囲の整数(すなわち, 8-bit 符号なし整数)として表現されている ]: ◎ If the value is internally represented as an integer between 0 and 255 inclusive (i.e. 8-bit unsigned integer), follow these steps:

  1. %alpha ~LET その整数 ◎ Let alpha be the given integer.
  2. ~IF[ 0 〜 100 の範囲の整数のうち, [[ 2.55 倍してから最も近い整数に丸めた結果(二数が等距離にある場合は切り上げる) ] ~EQ %alpha ]になるものがある ] ⇒ %rounded ~LET その整数 ÷ 100 ◎ If there exists an integer between 0 and 100 inclusive that, when multiplied with 2.55 and rounded to the closest integer (rounding up if two values are equally close), equals alpha, let rounded be that integer divided by 100.
  3. ~ELSE ⇒ %rounded ~LET %alpha ÷ 0.255 を最も近い整数に丸めた結果(二数が等距離にある場合は切り上げる) ÷ 1000 ◎ Otherwise, let rounded be alpha divided by 0.255 and rounded to the closest integer (rounding up if two values are equally close), divided by 1000.
  4. ~RET %rounded を `number^t として直列化した結果 ◎ Return the result of serializing rounded as a <number>.

~RET 所与の値を `number^t として直列化した結果 ◎ Otherwise, return the result of serializing the given value as a <number>.

`counter^t

次の連結: ◎ The return value of the following algorithm:

  1. `counter^t 内の~css成分値の個数が[ 3個ならば `counters(^l / 2個ならば `counter(^l ] ◎ Let s be the empty string. ◎ If <counter> has three CSS component values append the string "counters(" to s. ◎ If <counter> has two CSS component values append the string "counter(" to s.
  2. ~APPEND[[ `counter^t 内の~EACH ( ~css成分値 ) を`~css成分値として直列化-$して得られる~list — ただし,最後の~css成分値 ~EQ `decimal^l のときはそれを除外する ]を`~comma区切りで直列化-$した結果 ] ◎ Let list be a list of CSS component values belonging to <counter>, omitting the last CSS component value if it is "decimal". ◎ Let each item in list be the result of invoking serialize a CSS component value on that item. ◎ Append the result of invoking serialize a comma-separated list on list to s.
  3. ~APPEND ❝) ◎ Append ")" (U+0029) to s. ◎ Return s.
`frequency$t
[[ 所与の値が表現する hertz 単位の周波数 ]を `number^t として直列化した結果 ]~APPEND `hz^l ◎ The frequency in hertz serialized as per <number> followed by the literal string "hz".
`identifier$t
`識別子として直列化-$した結果 ◎ The identifier serialized as an identifier.
`integer$t
[ 負ならば ❝- / ~ELSE_ 空文字列 ]
~APPEND[ ❝0 〜 ❝9 を用いた最短形の基数10整数 ] ◎ A base-ten integer using digits 0-9 (U+0030 to U+0039) in the shortest form possible, preceded by "-" (U+002D) if it is negative.
`length$t
長さ ~EQ ゼロ
`0px^l ◎ A length of zero is represented by the literal string "0px".
長さは絶対的である
[[ 長さが表現する millimeter 単位による数 ]を `number^t として直列化した結果 ] ~APPEND `mm^l ◎ Absolute lengths: the number of millimeters serialized as per <number> followed by the literal string "mm".
Rumor has it absolute lengths will become relative lengths. Centimeters would be compatible with <resolution>... 【?】
長さは相対的である
[ 長さの `number^t 成分を `number^t として直列化した結果 ]
~APPEND[ 当該の仕様にて定義される単位を表す正準形の文字列 ] ◎ Relative lengths: the <number> component serialized as per <number> followed by the unit in its canonical form as defined in its respective specification.
`number$t

❝0 〜 ❝9 を用いた最短形の基数10数 — 小数部がある場合は ❝. で区切った上で, 【 小数部が? 】 6 桁を超えるときは値を丸め、負の場合は ❝- を前置する ◎ A base-ten number using digits 0-9 (U+0030 to U+0039) in the shortest form possible, using "." to separate decimals (if any), rounding the value if necessary to not produce more than 6 decimals, preceded by "-" (U+002D) if it is negative.

注記: 科学的記数法は利用されない。 ◎ Note: scientific notation is not used.

`percentage$t
[ 所与の値の `number^t 成分を `number^t として直列化した結果 ] ~APPEND ❝% ◎ The <number> component serialized as per <number> followed by the literal string "%" (U+0025).
`resolution$t
[[ 所与の値が表現する, 1 CSS ~pixelあたりの~dot数による解像度 ]を `number^t として直列化した結果 ] ~APPEND `dppx^l ◎ The resolution in dots per CSS pixel serialized as per <number> followed by the literal string "dppx".
`shape$t

`rect(^l
~APPEND[[ `shape^t 内の~EACH ( ~css成分値 ) を`~css成分値として直列化-$して得られる~list ]を`~comma区切りで直列化-$した結果 ]
~APPEND ❝)

The return value of the following algorithm:

  1. Let s be the string "rect(".
  2. Let list be a list of the CSS component values belonging to <shape>.
  3. Let each item in list be the result of invoking serialize a CSS component value of that item.
  4. Append the result of invoking serialize a comma-separated list on list to s.
  5. Append ")" (U+0029) to s.
  6. Return s.
`string$t
`family-name$t
`specific-voice^t
`文字列として直列化-$した結果 ◎ The string serialized as a string.
`time$t
[[ 所与の値が表現する秒~単位による数 ]を `number^t として直列化した結果 ] ~APPEND ❝s ◎ The time in seconds serialized as per <number> followed by the literal string "s".
`uri$t
`絶対~URL$を`~URLとして直列化-$した結果 ◎ The absolute URL serialized as URL.

`absolute-size^t, `border-width^t, `border-style^t, `bottom^t, `generic-family^t, `generic-voice^t, `left^t, `margin-width^t, `padding-width^t, `relative-size^t, `right^t, `top^t は、この仕様では~macroと見なされる。 これらはすべて上に示された成分の~instanceを表現する。 ◎ <absolute-size>, <border-width>, <border-style>, <bottom>, <generic-family>, <generic-voice>, <left>, <margin-width>, <padding-width>, <relative-size>, <right>, and <top>, are considered macros by this specification. They all represent instances of components outlined above.

この節を除去することも考えられる — 上の定義をその~css成分を定義する CSS3/CSS4 の過程のどこかの草案に移行させることにより。 ◎ One idea is that we can remove this section somewhere in the CSS3/CSS4 timeline by moving the above definitions to the drafts that define the CSS components.

5.7.2.1. 用例集

ここに、指定値に対する処理の前後の結果を示す,いくつかの例を挙げる: “処理前” の列は 作者が~ssに記したものを表し, “処理後” の列は DOM が返すことになる値を表す。 ◎ Here are some examples of before and after results on specified values. The before column could be what the author wrote in a style sheet, while the after column shows what querying the DOM would return.

処理前◎Before 処理後◎After
`background: none^css `background: rgba(0, 0, 0, 0)^css
`outline: none^css `outline: invert^css
`border: none^css `border: medium^css
`list-style: none^css `list-style: disc^css
`margin: 0 1px 1px 1px^css `margin: 0px 1px 1px^css
`azimuth: behind left^css `azimuth: 220deg^css
`font-family: a, 'b"', serif^css `font-family: "a", "b\"", serif^css
`content: url('h)i') '\[\]'^css `content: url("h)i") "[]"^css
`azimuth: leftwards^css `azimuth: leftwards^css
`color: rgb(18, 52, 86)^css `color: #123456^css
`color: rgba(000001, 0, 0, 1)^css `color: #000000^css

これらの一部は新たな規則で更新される必要がある。 ◎ Some of these need to be updated per the new rules.

6. ~css宣言~blockへの DOM ~access

6.1. `ElementCSSInlineStyle^I ~ifc

`ElementCSSInlineStyle$I ~ifcは、要素の~inline ~style~propへの~accessを提供する。 ◎ The ElementCSSInlineStyle interface provides access to inline style properties of an element.

⇒! [NoInterfaceObject] interface `ElementCSSInlineStyle@I { [SameObject, PutForwards=cssText] ~RA `CSSStyleDeclaration$I `style$m; };◎

`style@m 属性は、[ 各種~propが次のようにされた,~live`~css宣言~block$ ]を返さ~MUST: ◎ The style attribute must return a live CSS declaration block with the following properties:

`読専~flag$
~OFF◎Unset.
`宣言列$
要素の `style^a 内容~属性を`指定順$により`~css宣言~blockとして構文解析-$した結果。 `style^a 内容~属性が存在しない場合,この~objは空の[ `~css宣言$の~list ]を表現する。 `宣言列$が変異されるときは、要素の `style^a 内容~属性の値も[ `CSSStyleDeclaration$I の`宣言列$を `宣言列として直列化-$した結果 ]にされ~MUST。 `style^a 内容~属性が 設定-/変更-/除去- された際には,それに応じて`宣言列$も適宜~更新され~MUST。 ◎ The result of parsing the style content attribute, in specified order. If the style content attribute is absent, the object represents an empty list of CSS declarations. Mutating the declarations must set the style content attribute on the context object to the serialization of the declarations. If the style content attribute is set, changed or removed, the declarations must be updated as appropriate.
`親~css規則$
~NULL◎Null.
`所有者~node$
此れ◎The context object.

~UAが HTML を~supportする場合は,次の IDL が適用される: `HTML$r ◎ If the user agent supports HTML, the following IDL applies: [HTML]

⇒! HTMLElement implements `ElementCSSInlineStyle$I;◎

~UAが SVG を~supportする場合は,次の IDL が適用される: `SVG$r ◎ If the user agent supports SVG, the following IDL applies: [SVG]

⇒! SVGElement implements `ElementCSSInlineStyle$I;◎

6.2. `Window^I ~ifcに対する拡張

⇒! partial interface `Window@I { [NewObject] `CSSStyleDeclaration$I `getComputedStyle$m(`Element$I %elt, optional ~DS? %pseudoElt); };◎

`getComputedStyle(elt, pseudoElt)@m ~methの被呼出時には、次を実行し~MUST: ◎ The getComputedStyle(elt, pseudoElt) method must run these steps:

  1. %文書 ~LET 此れに結付けられている`文書$ ◎ Let doc be the Document associated with the Window object on which the method was invoked.
  2. %要素 ~LET %elt ◎ Let obj be elt.
  3. ~IF[ %pseudoElt ~IN `~ACI$ { `:before^l, `::before^l } ] ⇒ %要素 ~LET %elt の `before$pe 疑似要素 ◎ If pseudoElt is as an ASCII case-insensitive match for either ':before' or '::before' let obj be the ::before pseudo-element of elt.
  4. ~IF[ %pseudoElt ~IN `~ACI$ { `:after^l, `::after^l } ] ⇒ %要素 ~LET %elt の `after$pe 疑似要素 ◎ If pseudoElt is as an ASCII case-insensitive match for either ':after' or '::after' let obj be the ::after pseudo-element of elt.
  5. ~RET 各種~propが次のようにされた,~live`~css宣言~block$: ◎ Return a live CSS declaration block with the following properties:

    `読専~flag$
    ~ON ◎ Set.
    `宣言列$

    辞書式~順序による,すべての[ `~supportされる~css~prop$である`下位prop$ ]からなる。 その各~propの値は、 %文書 に結付けられている~style規則を用いて,その~propについて %要素 に対し算出される `解決値$で与えられる。 ◎ All longhand properties that are supported CSS properties, in lexicographical order, with the value being the resolved value computed for obj using the style rules associated with doc.

    注記: これは、 %要素 が異なる文書に属していても(例えば `XMLHttpRequest^I を通して取得されたもの)、[[[ (`~css宣言~block$を算出するために) `getComputedStyle()$m が呼出された大域~obj ]に結付けられている文書 ]に結付けられている~style規則 ]が用いられることを意味する。 ◎ Note: This means that even if obj is in a different document (e.g. one fetched via XMLHttpRequest) it will still use the style rules associated with the document that is associated with the global object on which getComputedStyle() was invoked to compute the CSS declaration block.
    `親~css規則$
    ~NULL ◎ Null.
    `所有者~node$
    %要素 ◎ obj.

`getComputedStyle()$m ~methは、`origin-clean ~flag$ss ~EQ ~OFF の下でも,`~css~ss$からの情報を公開する。 ◎ The getComputedStyle() method exposes information from CSS style sheets with the origin-clean flag unset.

7. ~utility API

7.1. `CSS.escape()^m ~meth

`CSS$I ~ifcは、他に属さない有用な CSS に関係する機能を保持する。 ◎ The CSS interface holds useful CSS-related functions that do not belong elsewhere.

⇒! interface `CSS@I { static ~DS `escape$m(~DS %ident); };◎

`escape(ident)@m 静的~methの被呼出時には、[ %ident を `識別子として直列化-$した結果 ]を返さ~MUST。 ◎ The escape(ident) method must return the result of invoking serialize an identifier of ident.

`escape()$m ~methを利用して直列化すれば、未知の文字列でも,選択子の一部として利用できるようになる: ◎ For example, to serialize a string for use as part of a selector, the escape() method can be used:

var %element = document.querySelector(
  '#' + CSS.escape(%id) + ' > img'
);

厳密には、~escape不要な文字まで~escapeするが: ◎ The escape() method can also be used for escaping strings, although it escapes characters that don’t strictly need to be escaped:

var %element = document.querySelector(
  'a[href="#' + CSS.escape(%fragment) + '"]'
);

`CSS$I ~ifc上に静的~関数を定義する仕様は、格納したい状態があるならば、`現在の大域~obj$に`結付けられている文書$に格納するべきである。 ◎ Specifications that define static functions on the CSS interface and want to store some state should store the state on the current global object’s associated Document.

8. 解決値

`Window!I の `getComputedStyle()$m は、歴史的に,要素や`疑似要素$の “`算出値$” を返すように定義されていた。 しかしながら,既存の~scriptとの互換性のために `getComputedStyle()$m の実装は変えるわけにいかない一方で、“`算出値$” の概念は, CSS の変遷に伴って変化してきている。 この課題に取組むため、この仕様は `解決値@ の概念を導入する。 ◎ getComputedStyle() was historically defined to return the "computed value" of an element or pseudo-element. However, the concept of "computed value" changed between revisions of CSS while the implementation of getComputedStyle() had to remain the same for compatibility with deployed scripts. To address this issue this specification introduces the concept of a resolved value.

所与の~propに対する`解決値$は,~propの種類に応じて次で与えられる: ◎ The resolved value for a given property can be determined as follows:

`line-height$p
`使用値$ ◎ The resolved value is the used value.
`block-size$p
`height$p
`inline-size$p
`margin-block-end$p
`margin-block-start$p
`margin-bottom$p
`margin-inline-end$p
`margin-inline-start$p
`margin-left$p
`margin-right$p
`margin-top$p
`margin$p
`padding-block-end$p
`padding-block-start$p
`padding-bottom$p
`padding-inline-end$p
`padding-inline-start$p
`padding-left$p
`padding-right$p
`padding-top$p
`padding$p
`width$p

次のいずれも満たされるならば `使用値$ / ~ELSE_ `算出値$:

  • ~propは要素または`疑似要素$に適用されている
  • 当の要素~上の `display$p ~propの`解決値$ ~NEQ `none^v
◎ If the property applies to the element or pseudo-element and the resolved value of the display property is not none, the resolved value is the used value. Otherwise the resolved value is the computed value.
`bottom$p
`left$p
`offset-block-end$p
`offset-block-start$p
`offset-inline-end$p
`offset-inline-start$p
`right$p
`top$p

次のいずれも満たされるならば `使用値$ / ~ELSE_ `算出値$:

  • ~propは,`有位置の要素$に適用されている
  • 当の要素~上の `display$p ~propの`解決値$ ~NEQ `none^v
  • ~propは,拘束過多でない
◎ If the property applies to a positioned element and the resolved value of the display property is not none, and the property is not over-constrained, the resolved value is the used value. Otherwise the resolved value is the computed value.
その他の~prop
`算出値$ ◎ The resolved value is the computed value.

9. IANA Considerations

9.1. `Default-Style^h ~header~field

この節では、 Permanent Message Header Field Registry に登録される~header~fieldについて述べる。 ◎ This section describes a header field for registration in the Permanent Message Header Field Registry.

~header~field名◎Header field name
`Default-Style@h
適用し得る~protocol◎Applicable protocol
http
位置付け◎Status
標準◎standard
~~作成/~~変更 管理◎Author/Change controller
W3C
仕様~文書◎Specification document(s)
この文書◎This document is the relevant specification.
関連~情報◎Related information
なし◎None.

10. 変更履歴

この節では、この仕様の各~発行版の間の変更点の一部を文書~化する。 この節は,網羅的なものではない。 ~bug修正および編集上の変更点は、一般に挙げられない。 ◎ This section documents some of the changes between publications of this specification. This section is not exhaustive. Bug fixes and editorial changes are generally not listed.

10.1. 2013 年 12 月 5 日以降の変更点

  • 代替~ss用の API — `Document$I 上の次の~memberは除去された ⇒ `selectedStyleSheetSet^m, `lastStyleSheetSet^m, `preferredStyleSheetSet^m, `styleSheetSets^m, `enableStyleSheetsForSet()^m ◎ API for alternative stylesheets is removed: selectedStyleSheetSet, lastStyleSheetSet, preferredStyleSheetSet, styleSheetSets, enableStyleSheetsForSet() on Document.
  • `Element$I / `PseudoElement^I ~ifc上の `pseudo()^m ~methは除去された。 ◎ The pseudo() method on Element and the PseudoElement interface is removed.
  • `Element$I 上の次の属性は除去された ⇒ `cascadedStyle^m, `defaultStyle^m, `rawComputedStyle^m, `usedStyle^m ◎ The cascadedStyle, defaultStyle, rawComputedStyle and usedStyle IDL attributes on Element are removed.
  • `CSSRule$I 上の `~cssText0$m 属性~設定子は、何もしないように変更された。 ◎ The cssText IDL attribute’s setter on CSSRule is changed to do nothing.
  • `CSSStyleDeclaration$I 上に `~webkit_cased_attr$m — `webkitFoo^m の形の属性(小文字の `w^c ) — が追加された。 ◎ IDL attributes of the form webkitFoo (with lowercase w) on CSSStyleDeclaration are added.
  • `CSSNamespaceRule$I は、読専に変更された。 ◎ CSSNamespaceRule is changed back to readonly.
  • `CSSStyleSheet!I の `insertRule()$m における `charset^at の取り扱いは、除去された。 ◎ Handling of @charset in insertRule() is removed.
  • `CSSCharsetRule^I は再び除去された。 ◎ CSSCharsetRule is removed again.
  • 識別子/文字列の直列化が変更された。 ◎ Serialization of identifiers and strings is changed.
  • 選択子の直列化は、今や[ 結合子 `>>^l, `||^l ], および[ 属性~選択子における `i^l ~flag ]も~supportする。 ◎ Serialization of selectors now supports combinators ">>" and "||" and the "i" flag in attribute selectors.
  • `lang()$ps の直列化が変更された。 ◎ Serialization of :lang() is changed.
  • `color$t, `number$t の直列化が変更された。 ◎ Serialization of <color> and <number> is changed.
  • `CSSStyleDeclaration!I 上の `setProperty()$m は変更された。 ◎ setProperty() on CSSStyleDeclaration is changed.

10.1. 2011 年 7 月 12 日から 2013 年 12 月 5 日までの変更点

  • 非同一生成元~ssの読み取りや変更は許容されない。 ◎ Cross-origin stylesheets are not allowed to be read or changed.
  • `CSSCharsetRule$I ~ifc が再び導入された。 ◎ CSSCharsetRule is re-introduced.
  • `CSSGroupingRule$I, `CSSMarginRule$I が導入された。 ◎ CSSGroupingRule and CSSMarginRule are introduced.
  • `CSSNamespaceRule$I は今や変異可能である。 ◎ CSSNamespaceRule is now mutable.
  • `~css宣言~blockとして構文解析-$, および ~css宣言~blockの `宣言列として直列化-$が定義された。 ◎ Parse and serialize a CSS declaration block is now defined.
  • `setProperty()$m, `getPropertyValue()$m, 等々に対する略式~propが~supportされた。 ◎ Shorthands are now supported in setProperty(), getPropertyValue(), et al.
  • `setPropertyValue()$m, `setPropertyPriority()$m が導入された。 ◎ setPropertyValue() and setPropertyPriority() are introduced.
  • 種々の~ifcにおける `style^m, `media^m 属性は、 WebIDL 拡張属性 [PutForwards] 注釈付きにされた。 ◎ The style and media attributes of various interfaces are annotated with the [PutForwards] WebIDL extended attribute.
  • `Element!I 上に `pseudo()^m ~methが導入された。† ◎ The pseudo() method on Element is introduced.
  • `PseudoElement^I ~ifc が導入された。† ◎ The PseudoElement interface is introduced.
  • `Element$I, `PseudoElement^I 上に `cascadedStyle^m, `rawComputedStyle^m, `usedStyle^m 属性が導入された。† ◎ The cascadedStyle, rawComputedStyle and usedStyle attributes on Element and PseudoElement are introduced.
  • 静的~meth `CSS.escape()$m が導入された。 ◎ The CSS.escape() static method is introduced.

【† いったん導入されたが、再び削除された。 】

謝辞

この仕様の作成に寄与された次の方々に感謝する:

The editors would like to thank Alexey Feldgendler, Benjamin Poulain, Björn Höhrmann, Boris Zbasky, Brian Kardell, Christian Krebs, Daniel Glazman, David Baron, Domenic Denicola, fantasai, Hallvord R. M. Steen, Ian Hickson, John Daggett, Lachlan Hunt, Mike Sherov, Myles C. Maxfield, Morten Stenshorne, Ms2ger, Øyvind Stenhaug, Peter Sloetjes, Philip Jägenstedt, Philip Taylor, Richard Gibson, Robert O’Callahan, Simon Sapin, Sjoerd Visscher, Sylvain Galineau, Tarquin Wilton-Jones, Xidorn Quan, and Zack Weinberg for contributing to this specification.

加えて、代替スタイルシート API, および ~css値の正準化(現在は “直列化”)規則の初期のバージョンを記述された Ian Hickson 氏に特別な謝意を。 Additional thanks to Ian Hickson for writing the initial version of the alternative style sheets API and canonicalization (now serialization) rules for CSS values.

適合性

【 この節の内容は W3C 日本語訳 共通ページ に委譲 】

参照文献

文献(規範)

[CSS-CASCADE-4]
Elika Etemad; Tab Atkins Jr.. CSS Cascading and Inheritance Level 4. 14 January 2016. CR.
http://dev.w3.org/csswg/css-cascade/
[CSS-COLOR-3]
CSS Color Module Level 3
https://drafts.csswg.org/css-color-3/
[CSS-DISPLAY-3]
Tab Atkins Jr.; Elika Etemad. CSS Display Module Level 3. 15 October 2015. WD.
http://dev.w3.org/csswg/css-display/
[CSS-LOGICAL-PROPS-1]
CSS Logical Properties Module Level 1
https://drafts.csswg.org/css-logical-props-1/
[CSS-NAMESPACES-3]
Elika Etemad. CSS Namespaces Module Level 3. 20 March 2014. REC.
http://dev.w3.org/csswg/css-namespaces/
[CSS-POSITION-3]
Rossen Atanassov; Arron Eicholz. CSS Positioned Layout Module Level 3. 17 May 2016. WD.
https://drafts.csswg.org/css-position/
[CSS-PSEUDO-4]
Daniel Glazman; Elika Etemad; Alan Stearns. CSS Pseudo-Elements Module Level 4. 7 June 2016. WD.
https://drafts.csswg.org/css-pseudo-4/
[CSS-VALUES]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 11 June 2015. CR.
http://dev.w3.org/csswg/css-values/
[CSS-VARIABLES-1]
Tab Atkins Jr.. CSS Custom Properties for Cascading Variables Module Level 1. 3 December 2015. CR.
http://dev.w3.org/csswg/css-variables/
[CSS21]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 7 June 2011. REC.
https://www.w3.org/TR/CSS2
[CSS3CASCADE]
Elika Etemad; Tab Atkins Jr.. CSS Cascading and Inheritance Level 3. 19 May 2016. CR.
https://drafts.csswg.org/css-cascade-3/
[CSS3PAGE]
Melinda Grant; et al. CSS Paged Media Module Level 3. 14 March 2013. WD.
https://www.w3.org/TR/css3-page/
[CSS3SYN]
Tab Atkins Jr.; Simon Sapin. CSS Syntax Module Level 3. 20 February 2014. CR.
http://dev.w3.org/csswg/css-syntax/
[DOM]
Anne van Kesteren. DOM Standard. Living Standard.
https://dom.spec.whatwg.org/
[ENCODING]
Anne van Kesteren. Encoding Standard. Living Standard.
https://encoding.spec.whatwg.org/
[FETCH]
Anne van Kesteren. Fetch Standard. Living Standard.
https://fetch.spec.whatwg.org/
[HTML]
Ian Hickson. HTML Standard. Living Standard.
https://html.spec.whatwg.org/multipage/
[MEDIAQUERIES-4]
Florian Rivoal; Tab Atkins Jr.. Media Queries Level 4. 6 July 2016. WD
https://drafts.csswg.org/mediaqueries-4/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Best Current Practice.
https://tools.ietf.org/html/rfc2119
[SELECTORS-4]
Selectors Level 4
https://drafts.csswg.org/selectors-4/
[SVG2]
Nikos Andronikos; et al. Scalable Vector Graphics (SVG) 2. 15 September 2015. WD.
https://svgwg.org/svg2-draft/
[URL]
Anne van Kesteren. URL Standard. Living Standard.
https://url.spec.whatwg.org/
[WebIDL-1]
Cameron McCormack; Boris Zbarsky. WebIDL Level 1. 8 March 2016. CR.
https://heycam.github.io/webidl/
[XML]
Tim Bray; et al. Extensible Markup Language (XML) 1.0 (Fifth Edition). 26 November 2008. REC.
https://www.w3.org/TR/xml
[XML-STYLESHEET]
James Clark; Simon Pieters; Henry Thompson. Associating Style Sheets with XML documents 1.0 (Second Edition). 28 October 2010. REC.
https://www.w3.org/TR/xml-stylesheet

文献(参考)

[CSS-FONTS-3]
John Daggett. CSS Fonts Module Level 3. 3 October 2013. CR.
http://dev.w3.org/csswg/css-fonts/
[DOM-LEVEL-2-STYLE]
Chris Wilson; Philippe Le Hégaret. Document Object Model (DOM) Level 2 Style Specification. 13 November 2000. REC.
https://www.w3.org/TR/DOM-Level-2-Style/
[SVG]
Jon Ferraiolo. Scalable Vector Graphics (SVG) 1.0 Specification. 4 September 2001. REC.
https://www.w3.org/TR/SVG/

索引

【 この節の内容は省略(ウィンドウ下端の索引機能を利用されたし)。 】

IDL 索引

課題索引

【 これらの節の内容は省略(見出しクリックで巡回)。 】