<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>の方法が仕様により定められており、どのような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">バイト列</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>であってもそれが
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スタイルシート</anchor>としてどう解釈されるべきかが明確になっています。</p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">
<anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> 本項では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析器</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">利用者エージェント</anchor>) の動作について扱います。構文一般について、あるいは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">著者</anchor>の要件については
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSの構文</anchor>の項をご覧ください。</comment-p><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <cite xml:lang="en">CSS Syntax Module Level 3</cite> (<time>2013-06-29 19:17:26 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://dev.w3.org/csswg/css-syntax/">http://dev.w3.org/csswg/css-syntax/</anchor-external><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[34]</anchor-end> <cite xml:lang="en">CSS Syntax Module Level 3</cite> (<time>2014-09-05 21:35:03 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://dev.w3.org/csswg/css-syntax/#parse-grammar">http://dev.w3.org/csswg/css-syntax/#parse-grammar</anchor-external></li></ul></li></ul></refs></section><section><h1>文字符号化の処理</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="41" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[41]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSにおける文字コード</anchor>参照。</p></section><section><h1>入口点</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">css-syntax</anchor> ではいくつかの<rubyb xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>入口点</anchor><rt xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">entry point</rt></rubyb> (構文解析器の動作開始点) を定義しています。<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スタイルシート</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a style sheet</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">外部スタイルシート</anchor></li><li><code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">style</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規則リスト</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a list of rules</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規則</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a rule</anchor><ul><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">insertRule</anchor></code></li><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSRule</anchor></code> <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">cssText</anchor></code></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a declaration</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言リスト</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a list of declarations</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構成値</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a component value</anchor></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[21]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構成値リスト</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a list of component values</anchor></li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> この他にも次のような<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">入口点</anchor>があります。<figure class="list"><ul><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="22" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[22]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">選択子群</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a group of selectors</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a selector</anchor><ul><li><code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">selectorText</anchor></code></li><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">querySelector</anchor></code>, <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">querySelectorAll</anchor></code></li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> を特定の文法に従い解釈するもの</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="23" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[23]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">相対選択子</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a relative selector</anchor><ul><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">find</anchor></code>, <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">findAll</anchor></code></li><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">matches</anchor></code></li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> を特定の文法に従い解釈するもの</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="24" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[24]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">ページ選択子リスト</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a list of CSS page selectors</anchor><ul><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSPageRule</anchor></code> <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">selectorText</anchor></code></li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> を特定の文法に従い解釈するもの</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[25]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体クエリーリスト</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a media query list</anchor><ul><li><code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">media</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor></li><li><code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">mediaText</anchor></code></li><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSMediaRule</anchor></code> <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">conditionText</anchor></code></li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> を特定の文法に従い解釈するもの</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="26" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[26]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体クエリー</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a media query</anchor><ul><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">appendMedium</anchor></code></li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="25" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;25</anchor-internal> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">媒体クエリー</anchor>1つの指定のみ受け付けるもの</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="27" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[27]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS宣言ブロック</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a CSS declaration block</anchor><ul><li><code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">style</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor></li><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSStyleDeclaration</anchor></code> <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">cssText</anchor></code></li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal> で<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">宣言</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">プロパティー</anchor>の指定として解釈するもの</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="28" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[28]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特性値</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a CSS value</anchor><ul><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">setProperty</anchor></code></li><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSStyleDeclaration</anchor></code> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS特性</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">反映</anchor>する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor></li><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">SVG</anchor> の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS特性</anchor>に対応する<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">表現的属性</anchor></li><li><code class="XMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">animate</anchor></code> (<code class="XMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">attributeType</anchor></code> <code class="XML" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor></code>)</li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> を特定の文法に従い解釈するもの</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="29" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[29]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">対応条件</anchor><ul><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSSupportsRule</anchor></code> <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">conditionText</anchor></code></li><li><code class="JS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS.supports</anchor></code></li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> を特定の文法に従い解釈するもの</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="30" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[30]</anchor-end> <code class="CSS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&lt;color&gt;</anchor></code><ul><li><code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">fillStyle</anchor></code>, <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">strokeStyle</anchor></code>, <code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">addColorStop</anchor></code>, <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">shadowColor</anchor></code>, <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">meta-theme-color</anchor><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a CSS &lt;color&gt; value</anchor> = <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;20</anchor-internal> を特定の文法に従い解釈するもの</li></ul></li><li><code>&lt;link color&gt;</code><ul><li><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">仕様書</anchor>なし</li></ul></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="31" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[31]</anchor-end> <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;35</anchor-internal> + <code class="CSS" xml:lang="en">&lt;'<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">font</anchor>'&gt;</code><ul><li><code class="DOMi" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DrawingStyle</anchor></code> <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">font</anchor></code></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="32" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[32]</anchor-end> <code class="CSS" xml:lang="en">'<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">cursor</anchor>'</code><ul><li><code class="DOMm" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">addHitRegion</anchor></code></li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="33" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[33]</anchor-end> <code class="CSS" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&lt;source-size-list&gt;</anchor></code> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">valid source size list</anchor> / <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse a sizes attribute</anchor><ul><li><code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">picture</anchor></code> の <code class="HTMLe" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">source</anchor></code> の <code class="HTMLa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">sizes</anchor></code></li><li><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> を特定の文法に従い解釈するもの</li></ul></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="40" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[40]</anchor-end> <code class="CSS" xml:lang="en">&lt;filter-function-list&gt;</code><ul><li><code class="HTMLe" xml:lang="en">canvas</code> の <code class="DOMa" xml:lang="en">filter</code></li></ul></li></ul></figure></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="35" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[35]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">css-syntax</anchor> には <dfn><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">parse something according to a CSS grammar</anchor></dfn>
という手順が定義されており <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="34" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;34</anchor-internal></src>、他の仕様書から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS</anchor>
系の文字列の構文解析を行う際に呼び出されます <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;36</anchor-internal></src>。入力は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文字列</anchor>、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句</anchor>の列、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">component value</anchor> の列のいずれかです。出力は構文に依存する構文解析結果か、
失敗かのいずれかです。この手順が呼び出されると、 <anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="21" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;21</anchor-internal> により構文解析し、
その結果得られた <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">component value</anchor> を指定された<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文法</anchor>により処理します。</p></section><section><h1>スタイルシートの読み込みと DOM</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSOM</anchor> へは <code class="DOMa" xml:lang="en"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">sheet</anchor></code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>からアクセスできますが、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML</anchor> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM</anchor> とは異なり読み込み途中の状態にはアクセスできないようです。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スタイルシート</anchor>には <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">style sheet ready</anchor> フラグ <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.whatwg.org/specs/web-apps/current-work/#styling">http://www.whatwg.org/specs/web-apps/current-work/#styling</anchor-external></src>
があり、適用の準備ができるまではこのフラグが未設定になっています。具体的にどの時点で準備ができたといえるのか明確にはなっていませんが、
普通に考えれば構文解析が完了してブラウザー内部のデータ構造となり、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">カスケーディング</anchor>の対象となったり、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSOM</anchor> のオブジェクトとして利用可能になったりした時点でしょう。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> 通常のスタイルシートの場合、 <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">style sheet ready</anchor> フラグが設定されるまでは<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>の実行がブロックされます。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替スタイルシート</anchor>ではブロックされません。 (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">WinIE10</anchor> では<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">代替スタイルシート</anchor>でもブロックされます。)
なので<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">スクリプト</anchor>から <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSOM</anchor> にアクセスしようとしても、完全な <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSSOM</anchor> が返されるか、
<code><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">null</anchor></code> が返されるかのどちらかのようです。</p></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS1</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS2</anchor>、さらに 2000年代までの <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">CSS3</anchor> (<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">css3-syntax</anchor>) では <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Flex</anchor> と <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Yacc</anchor>
により<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">形式的</anchor>に構文が記述されていましたが、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参考</anchor>であり、また様々な制約から不正確でした。
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">規定</anchor>としては英語で構文および<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">前方互換構文解析規則</anchor>が説明されており、また各<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">特性</anchor>の値は専用の文法記述方法が用いられていました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> このように構文と構文解析に関する規定が詳細に説明されているだけでも当時としては十分先進的ではありましたが、
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Flex</anchor> によって記述された字句化とよりマクロな構文の対応関係が不明瞭で <code class="CSS"><anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&lt;an+b&gt;</anchor></code>
のような災厄をもたらしたり、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">前方互換構文解析規則</anchor>の細部が不明確であったりというような問題を抱えていました。</p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <cite xml:lang="en">Grammar of CSS 2.1</cite> (<time>2011-06-07 13:09:52 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://www.w3.org/TR/CSS21/grammar.html">http://www.w3.org/TR/CSS21/grammar.html</anchor-external></li></ul></refs><section><h1>状態機械の仕様化</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite>IRC logs: freenode / #whatwg / 20120409</cite>
( (<time>2012-04-15 13:32:46 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://krijnhoetmer.nl/irc-logs/whatwg/20120409#l-406">http://krijnhoetmer.nl/irc-logs/whatwg/20120409#l-406</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> 2012年の春になって、ようやく <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">css3-syntax</anchor> で <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">HTML5</anchor> 
仕様風の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">字句化器</anchor>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">木構築器</anchor>からなる<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">状態機械</anchor>として<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">構文解析</anchor>の挙動が明確に記述されるようになりました。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <cite>tabatkins/css-parser</cite>
( (<time>2012-08-05 15:02:04 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/tabatkins/css-parser">https://github.com/tabatkins/css-parser</anchor-external></p><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="36" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[36]</anchor-end> <cite xml:lang="en">Bug 26208 – For parsing CSS &lt;color&gt; values, this should explicitly ref the CSS Syntax spec, and use the &quot;parse a component value&quot; algorithm defined there.</cite> (<time>2014-09-22 05:53:02 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://www.w3.org/Bugs/Public/show_bug.cgi?id=26208">https://www.w3.org/Bugs/Public/show_bug.cgi?id=26208</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="37" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[37]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8793 Better reference CSS for parsing according to CSS.</cite> (<time>2014-09-20 04:21:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://html5.org/r/8793">https://html5.org/r/8793</anchor-external></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="38" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[38]</anchor-end> <cite xml:lang="en">Web Applications 1.0 r8796 Fix recent CSS-related wording to be more precise.</cite> (<time>2014-09-20 06:25:00 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://html5.org/r/8796">https://html5.org/r/8796</anchor-external></li></ul></refs><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="39" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[39]</anchor-end> <cite xml:lang="en">Minutes Sydney F2F 2015-02-08 Part I: CSS Parser</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Dael Jackson</anchor> 著, <time>2015-03-04 04:22:47 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://lists.w3.org/Archives/Public/public-houdini/2015Mar/0008.html">https://lists.w3.org/Archives/Public/public-houdini/2015Mar/0008.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="42" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[42]</anchor-end> <cite xml:lang="en">1422951 - Add a CSS-parsing WebExtensions API</cite>
(<time>2017-12-21 00:56:16 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://bugzilla.mozilla.org/show_bug.cgi?id=1422951">https://bugzilla.mozilla.org/show_bug.cgi?id=1422951</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="43" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[43]</anchor-end> <cite xml:lang="en">Clarify the definition of addColorStop()</cite>
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">Ms2ger</anchor>著, <time>2018-01-10 18:42:20 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/commit/cc508ebd8427dd561ed2dc3d5d9a45a967fccf71">https://github.com/whatwg/html/commit/cc508ebd8427dd561ed2dc3d5d9a45a967fccf71</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="44" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[44]</anchor-end> <cite xml:lang="en">Clarify the definition of addColorStop by Ms2ger · Pull Request #3308 · whatwg/html</cite>
(<time>2018-02-12 13:14:20 +09:00</time>)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/pull/3308">https://github.com/whatwg/html/pull/3308</anchor-external></p></section></section></body></html>