/[suikacvs]/markup/selectors/ssft/ssft-work.en.html
Suika

Diff of /markup/selectors/ssft/ssft-work.en.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by wakaba, Sun Oct 7 08:50:13 2007 UTC revision 1.24 by wakaba, Mon Nov 5 11:29:14 2007 UTC
# Line 10  Line 10 
10  <div class="header">  <div class="header">
11  <h1>Selectors Serialization Format for Testing (<abbr>SSFT</abbr>)  <h1>Selectors Serialization Format for Testing (<abbr>SSFT</abbr>)
12  Specification</h1>  Specification</h1>
13  <h2>Working Draft <time datetime=2007-10-07>7 October 2007</time></h2>  <h2>Working Draft <time datetime=2007-11-05>5 November 2007</time></h2>
14    
15  <dl class="versions-uri">  <dl class="versions-uri">
16  <dt>This Version</dt>  <dt>This Version</dt>
# Line 52  available at <code class="URI">&lt;<a Line 52  available at <code class="URI">&lt;<a
52  <div id="abstract" class="section">  <div id="abstract" class="section">
53  <h2>Abstract</h2>  <h2>Abstract</h2>
54    
55  <div class="ed issue">...</div>  <p>This document defines
56    <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>,
57    a subset of Selectors language which is suitable for describing results
58    of Selectors parsing tests.</p>
59    
60  </div>  </div>
61    
# Line 63  available at <code class="URI">&lt;<a Line 66  available at <code class="URI">&lt;<a
66  at the time of its publication.  Other documents  at the time of its publication.  Other documents
67  might supersede this document.</em></p>  might supersede this document.</em></p>
68    
69  <p>This document is a working draft, produced as part  <p>This document is a working draft, produced as part of the
70    <a href="http://suika.fam.cx/www/markup/html/whatpm/readme">Whatpm</a>
71    subproject
72  of the <a href="http://suika.fam.cx/www/manakai-core/doc/web/">manakai</a>  of the <a href="http://suika.fam.cx/www/manakai-core/doc/web/">manakai</a>
73  project.  It might be updated, replaced, or obsoleted by  project.  It might be updated, replaced, or obsoleted by
74  other documents at any time.  It is inappropriate to  other documents at any time.  It is inappropriate to
# Line 96  in a tree structure and are used in Web Line 101  in a tree structure and are used in Web
101  <abbr>API</abbr></a>  <abbr>API</abbr></a>
102  <cite class="bibref informative">[<a href="#ref-SAPI">SAPI</a>]</cite>.</p>  <cite class="bibref informative">[<a href="#ref-SAPI">SAPI</a>]</cite>.</p>
103    
104  <div class="issue ed">...</div>  <p>It is so flexible language that a conceptually same pattern
105    can be represented in inifnite numbers of instances of selectors.
106    It might be convinient for e.g. validation of a test result to
107    define a subset of the language, in which no semantically equivalent
108    selectors are contained.</p>
109    
110  <p><a href="http://dev.w3.org/cvsweb/csswg/cssom/Overview.html">The  <p><a href="http://dev.w3.org/cvsweb/csswg/cssom/Overview.html">The
111  <abbr title="Cascading Style Sheets Object Model">CSSOM</abbr>  <abbr title="Cascading Style Sheets Object Model">CSSOM</abbr>
# Line 109  attribute.  However, the algorithm is in Line 118  attribute.  However, the algorithm is in
118  <time datetime=2007-09-25>at the time of the writing</time>.    <time datetime=2007-09-25>at the time of the writing</time>.  
119  Note that current Web browser implementations  Note that current Web browser implementations
120  of the <code>selectorText</code> attribute are consistently broken  of the <code>selectorText</code> attribute are consistently broken
121  in not escaping unsafe identifiers.</p>  in not escaping unsafe identifiers and therefore it is not wise
122    to deploy that format for testing.</p>
123    
124  </div>  </div>
125    
126  <div class="section" id="terminology">  <div class="section" id="terminology">
127  <h2>Terminology</h2>  <h2>Terminology</h2>
128    
129  <p>The key words <q><em class="rfc2119">MUST</em></q>,  <p>The key words <q><dfn id=must><em class="rfc2119">MUST</em></dfn></q>,
130  <q><em class="rfc2119">MUST NOT</em></q>,  <q><dfn id=must-not><em class="rfc2119">MUST NOT</em></dfn></q>,
131  <q><em class="rfc2119">SHOULD</em></q>,  <q><dfn id=should><em class="rfc2119">SHOULD</em></dfn></q>, and
132  <q><em class="rfc2119">SHOULD NOT</em></q>, and  <q><dfn id=may><em class=rfc2119>MAY</em></dfn></q> in this
 <q><em class=rfc2119>MAY</em></q> in this  
133  document are to be interpreted as described in  document are to be interpreted as described in
134  <a href="urn:ietf:rfc:2119"><abbr title="Request for Comments">RFC</abbr>  <a href="urn:ietf:rfc:2119"><abbr title="Request for Comments">RFC</abbr>
135  2119</a>  2119</a>
136  <cite class="bibref normative">[<a href="#ref-KEYWORDS">KEYWORDS</a>]</cite>.</p>  <cite class="bibref normative">[<a href="#ref-KEYWORDS">KEYWORDS</a>]</cite>.</p>
137    
138    <p>Requirements phrased in the imperative as part of algorithms are to be
139    interpreted with the meaning of the key word (<em class=rfc2119>MUST</em>)
140    used in introducing the algorithm.</p>
141    
142    <p>Conformance requirements phrased as algorithms or specific steps
143    <em class=rfc2119>MAY</em> be implemented in any manner, so long as the end
144    result is equivalent.</p>
145    
146  <!-- Strictly speaking the paragraph below is not part of terminology. -->  <!-- Strictly speaking the paragraph below is not part of terminology. -->
147  <p>All examples and notes in this specification are non$B!>(Bnormative,  <p>All examples and notes in this specification are non$B!>(Bnormative,
148  as are all sections explicitly marked non$B!>(Bnormative.  Everything  as are all sections explicitly marked non$B!>(Bnormative.  Everything
# Line 138  simple selector in a selector.</p> Line 155  simple selector in a selector.</p>
155  </div>  </div>
156    
157  <div class="section" id="serializing">  <div class="section" id="serializing">
158  <h2>Serializing Groups of Selectors</h2>  <h2>Serializing Selectors in
159    <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
160    Representation</h2>
161    
162  <div class="issue ed">  <p>Subsections of this section define algorithms
163  <p><a href="http://suika.fam.cx/gate/cvs/*checkout*/markup/html/whatpm/Whatpm/CSS/SelectorsSerializer.pm">See the reference implementation</a>  to <a href="#algorithm-serialize-a-simple-selector">serialize a simple
164  for now.</p>  selector</a> or <a href="#algorithm-serialize-a-group-of-selectors">serialize
165    a group of selectors</a>.</p>
166    
167    <div class="note memo">
168    <p>The serialized representation will not contain any comment.</p>
169  </div>  </div>
170    
171  <p><dfn id=newline title=newline>Newline</dfn> is  <div class="ed issue"><p>TODO: link terms to Selectors</p></div>
 <code class=char>U+000A</code> <code class=charname>LINE FEED</code>  
 <span class=ed>or U+000D U+000A or U+000A ??</span>.</p>  
172    
173  <!-- TODO: link terms to Selectors -->  <div class=section id=serializing-tokens>
174    <h3>Serializing Tokens</h3>
175    
176  <p>To  <p>To <dfn id=algorithm-normalize-an-ident title="normalize a string as an IDENT">normalize
177  <dfn id=algorithm-serialize-a-group-of-selectors title="serialize a group of selectors">serialize  a string (<dfn id=var-n><var>n</var></dfn>) as an <code>IDENT</code></dfn>,
178  a group of selectors (<dfn id=var-gs><var>gs</var></dfn>)</dfn>:</p>  the following algorithm <em class=rfc2119>MUST</em> be used:</p>
179  <ol>  <ol>
180  <li>Let <dfn id=var-result><var>result</var></dfn> an empty string.</li>  <li>If <var>n</var> is either an <code>IDENT</code> or a <code>HASH</code>,
181  <li>For each selector (<dfn id=var-selector><var>selector</var></dfn>) in  replace the escape sequences (<code>\</code> and following characters) in
182  <var>gs</var>:  <var>n</var> by characters represented by them respectively.</li>
183    <ol>  <li>If <var>n</var> is a <code>HASH</code>, remove the leading
184    <li>If <var>selector</var> is <em>not</em> the first selector  <code class=char>U+0023</code> <code class=charname>NUMBER SIGN</code>
185    in the group of selectors, then append a <code class=char>U+002C</code>  (<code class=char>#</code>) character from <var>n</var>.</li>
186    <code class=charname>COMMA</code> (<code class=char>,</code>) followed by a  <li>If there is any character that is <em>not</em> one of
187    <a href="#newline">newline</a> to <var>result</var>.</li>  <code class=char>U+002D</code> <code class=charname>HYPHEN-MINUS</code>
188    <li>Append four <code class=char>U+0020</code>  (<code class=char>-</code>), <code class=char>U+0030</code>
189    <code class=charname>SPACE</code> characters to <var>result</var>.</li>  <code class=charname>DIGIT ZERO</code>
190    <li>Process each sequence of simple selectors or  (<code class=char>0</code>) to <code class=char>U+0039</code>
191    combinator in <var>selector</var> by following algorithm:  <code class=charname>DIGIT NINE</code> (<code class=char>9</code>),
192      <dl class=switch>  <code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
193      <dt>If it is a sequence of simle selector  A</code> (<code class=char>A</code>) to <code class=char>U+005A</code>
194      (<dfn id=var-sss><var>sss</var></dfn>)</dt>  <code class=charname>LATIN CAPITAL LETTER Z</code> (<code class=char>Z</code>),
195        <dd class=ed>@@</dd>  <code class=char>U+005F</code> <code class=charname>LOW LINE</code>
196      <dt>If it is a combinator (<dfn id=var-c><var>c</var></dfn>)</dt>  (<code class=char>_</code>), <code class=char>U+0061</code>
197        <dd>  <code class=charname>LATIN SMALL LETTER A</code>
198          <ol>  (<code class=char>a</code>) to <code class=char>U+006A</code>
199          <li>Append two <code class=char>U+0020</code>  <code class=charname>LATIN SMALL LETTER Z</code> (<code class=char>z</code>),
200          <code class=charname>SPACE</code> characters to <var>result</var>.</li>  <code class=char>U+0080</code> to <code class=char>U+D7FF</code>, or
201          <li>  <code class=char>U+E000</code> to <code class=char>U+10FFFF</code> in
202            <dl class=switch>  <var>n</var>, then replace it by string <code>\<var>HHHHHH</var></code>, where
203            <dt>If <var>c</var> is descendant combinator (white space)</dt>  <dfn id=var-ident-HHHHHH><var>HHHHHH</var></dfn> is the uppercase
204              <dd>Append a <code class=char>U+0020</code>  zero$B!>(Bpadded hexadecimal representation of the character.  If the character
205              <code class=charname>SPACE</code> character to  is outside the range of <code>[<code class=char>U+0000</code>,
206              <var>result</var>.</dd>  <code class=char>U+10FFFF</code>]</code>, <var>HHHHHH</var>
207            <dt>If <var>c</var> is child combinator  <em class=rfc2119>MUST</em> be <code>FFFFFF</code>.</li>
208            (<code class=char>></code>)</dt>  <li>If the first character in <var>n</var> is one of
209              <dd>Append a <code class=char>U+003E</code>  <code class=char>U+0030</code> <code class=charname>DIGIT ZERO</code>
210              <code class=charname>GREATER-THAN SIGN</code>  (<code class=char>0</code>) to <code class=char>U+0039</code>
211              (<code class=char>></code>) character to <var>result</var>.</dd>  <code class=charname>DIGIT NINE</code> (<code class=char>9</code>),
212            <dt>If <var>c</var> is adjacent sibling combinator  then prepend a string <code>\00003</code> at the beginning of
213            (<code class=char>+</code>)</dt>  <var>n</var>.</li>
214              <dd>Append a <code class=char>U+002B</code>  <li>If the first character in <var>n</var> is <code class=char>U+002D</code>
215              <code class=charname>PLUS SIGN</code> (<code class=char>+</code>)  <code class=charname>HYPHEN-MINUS</code> (<code class=char>-</code>) and
216              character to <var>result</var>.</dd>  the second character, if any, is <em>not</em> one of
217            <dt>If <var>c</var> is general sibling combinator  <code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
218            (<code class=char>~</code>)</dt>  A</code> (<code class=char>A</code>) to <code class=char>U+005A</code>
219              <dd>Append a <code class=char>U+007E</code>  <code class=charname>LATIN CAPITAL LETTER Z</code> (<code class=char>Z</code>),
220              <code class=charname>TILDE</code> (<code class=char>~</code>)  <code class=char>U+005F</code> <code class=charname>LOW LINE</code>
221              character to <var>result</var>.</dd>  (<code class=char>_</code>), <code class=char>U+0061</code>
222            </dl>  <code class=charname>LATIN SMALL LETTER A</code>
223          </li>  (<code class=char>a</code>) to <code class=char>U+006A</code>
224          <li>Append a <code class=char>U+0020</code>  <code class=charname>LATIN SMALL LETTER Z</code> (<code class=char>z</code>),
225          <code class=charname>SPACE</code> character to  <code>U+0080</code> to <code>U+D7FF</code>, or
226          <var>result</var>.</li>  <code>U+E000</code> to <code>U+10FFFF</code>, or
227          </ol>  <var>n</var> is equal to <code class=char>U+002D</code>
228        </dd>  <code class=charname>HYPHEN-MINUS</code> (<code class=char>-</code>), then
229      </dl>  replace the <code class=char>U+002D</code>
230    </ol>  <code class=charname>HYPHEN-MINUS</code> (<code class=char>-</code>)
231  </li>  character by string <code>\00002D</code>.</li>
232  <li>Then, <var>result</var> is the  <li>Then, <var>n</var> is the result of the algorithm.</li>
233  <abbr title="Selectors Serialization Format for Testing">SFFT</abbr>  </ol>
234  representation of the group of selectors.</li>  
235    <p>To <dfn id=algorithm-normalize-a-string title="normalize a string (STRING or IDENT) as a STRING">normalize
236    a string (<dfn id=var-s><var>s</var></dfn>) as a <code>STRING</code></dfn>,
237    the following algorithm <em class=rfc2119>MUST</em> be used:</p>
238    <ol>
239    <li>If <var>s</var> is either an <code>IDENT</code> or a
240    <code>STRING</code>, replace the escape sequences (<code>\</code> and
241    following characters) in <var>s</var> by characters represented by them
242    (or an empty string if <code>\</code> is immediately followed by
243    newline character(s)) respectively.</li>
244    <li>If <var>s</var> is a <code>STRING</code>, remove the quotation marks
245    enclosing <var>s</var>.</li>
246    <li><p>If there is any character that is <em>not</em> one of
247    <code class=char>U+0020</code> <code class=charname>SPACE</code>,
248    <code class=char>U+0021</code> <code class=charname>EXCLAMATION MARK</code>
249    (<code class=char>!</code>), <code class=char>U+0023</code>
250    <code class=charname>NUMBER SIGN</code> (<code class=char>#</code>) to
251    <code class=char>U+005B</code> <code class=charname>LEFT SQUARE
252    BRACKET</code>, <code class=char>U+005D</code> <code class=charname>RIGHT
253    SQUARE BRACKET</code> to <code class=char>U+D7FF</code>, or
254    <code class=char>U+E000</code> to <code class=char>U+10FFFF</code> in
255    <var>s</var>, then replace it by string <code>\<var>HHHHHH</var></code>, where
256    <dfn id=var-string-HHHHHH><var>HHHHHH</var></dfn> is the uppercase
257    zero$B!>(Bpadded hexadecimal representation of the character.  If the character
258    is outside the range of <code>[<code class=char>U+0000</code>,
259    <code class=char>U+10FFFF</code>]</code>, <var>HHHHHH</var>
260    <em class=rfc2119>MUST</em> be <code>FFFFFF</code>.</p></li>
261    <li><p>Insert a <code class=char>U+0022</code> <code class=charname>QUOTATION
262    MARK</code> (<code class=char>"</code>) at the beginning of
263    <var>s</var>.</p></li>
264    <li><p>Insert a <code class=char>U+0022</code> <code class=charname>QUOTATION
265    MARK</code> (<code class=char>"</code>) at the end of <var>s</var>.</p></li>
266    <li><p>Then, <var>s</var> is the result of the algorithm.</p></li>
267    </ol>
268    
269    <p>A <dfn id=newline title=newline>newline</dfn>
270    <em class=rfc2119>SHOULD</em> be represented as a
271    <code class=char>U+000A</code> <code class=charname>LINE FEED</code>
272    character.  However, depending on the context where
273    the <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
274    representation is in use, a sequence of
275    <code class=char>U+000D</code> <code class=charname>CARRIAGE RETURN</code>
276    followed by a <code class=char>U+000A</code>
277    <code class=charname>LINE FEED</code> (i.e. a
278    <code>CRLF</code> sequence) or a character
279    <code class=char>U+000D</code> <code class=charname>CARRIAGE RETURN</code>
280    <em class=rfc2119>MAY</em> be used as a <a href="#newline">newline</a> instead.
281    <a href="#newline">Newline</a> representations
282    <em class=rfc2119>SHOULD</em> be consistent in an
283    <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
284    representation.</p>
285    
286    <div class="note memo">
287    <p>Therefore, newlines must be normalized before
288    <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
289    representations are literally compared.</p>
290    </div>
291    
292    <div class="issue ed">
293    <p>In a future version of the specification, we need to define
294    <dfn id=lowercase>lowercase</dfn> (maybe by referencing some version of
295    some module of <abbr>CSS</abbr>).  It is <code>tr/A-Z/a-z/</code> for now.</p>
296    </div>
297    
298    <p>To
299    <dfn id=algorithm-normalize-an-integer title="normalize an integer">normalize
300    an integer (<dfn id=var-int-i><var>i</var></dfn>)</dfn>, the following
301    algorithm <em class=rfc2119>MUST</em> be used:</p>
302    <ol class=algorithm>
303    <li>If <var>i</var> is equal to zero (0), return a string with only a
304    character: <code class=char>U+0030</code>
305    <code class=charname>DIGIT ZERO</code> (<code class=char>0</code>).
306    Stop the algorithm.</li>
307    <li>Let <dfn id=var-int-result><var>result</var></dfn> be an empty string.</li>
308    <li>If <var>i</var> is less than zero (0), append a
309    <code class=char>U+002D</code> <code class=charname>HYPHEN-MINUS</code>
310    (<code class=char>-</code>) character to <var>result</var>.</li>
311    <li>Append the decimal representation of the absolute value of
312    <var>i</var> to <var>result</var>.  The decimal (base$B!>(Bten) representation
313    <em class=rfc2119>MUST NOT</em> begin with a <code class=char>U+0030</code>
314    <code class=charname>DIGIT ZERO</code> (<code class=char>0</code>)
315    character.</li>
316    <li>Return <var>result</var>.</li>
317  </ol>  </ol>
318    
319    </div>
320    
321    
322    <div class=section id=serializing-simple-selectors>
323    <h3>Serializing Simple Selectors</h3>
324    
325    <p>No <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
326    representation is defined for an invalid <a href="#simple-selector">simple
327    selector</a>.</p>
328    
329  <p>To  <p>To
330  <dfn id=algorithm-serialize-a-simple-selector title="serialize a simple selector">serialize  <dfn id=algorithm-serialize-a-simple-selector title="serialize a simple selector">serialize
331  a simple selector (<dfn><var id=var-ss>ss</var></dfn>)</dfn>:</p>  a simple selector (<dfn><var id=var-ss>ss</var></dfn>)</dfn>,
332    the following algorithm <em class=rfc2119>MUST</em> be used:</p>
333    <ol>
334    <li>Let <dfn id=var-r><var>r</var></dfn> an empty string.</li>
335    <li>Process <var>ss</var> as following:
336    
337  <dl class=switch>  <dl class=switch>
338  <dt>If <var>ss</var> is a type or universal selector</dt>  <dt>If <var>ss</var> is a type or universal selector</dt>
339    <dd>    <dd>
340      <ol>      <ol>
341      <li>      <li>Append a namespace prefix as following:
342    
343        <dl class=switch>        <dl class=switch>
344        <dt>If a namespace URI is specified (via namespace prefix, or        <dt>If a namespace URI is specified (via namespace prefix, or
345        by omitting namespace prefix where a default namespace is specified)</dt>        by omitting namespace prefix where a default namespace is specified)</dt>
346          <dd class="ed">@@</dd>          <dd>Append the namespace URI as a
347            <a href="#algorithm-normalize-an-ident" title="normalize a string as an IDENT">normalized
348            <code>IDENT</code></a> to <var>r</var>.  Then, append a
349            <code class=char>U+007C</code>
350            <code class=charname>VERTICAL BAR</code> (<code class=char>|</code>)
351            character to <var>r</var>.</dd>
352        <dt>If the null namespace is specified (by zero$B!>(Blength namespace        <dt>If the null namespace is specified (by zero$B!>(Blength namespace
353        prefix)</dt>        prefix)</dt>
354          <dd>Append a <code class=char>U+007C</code>          <dd>Append a <code class=char>U+007C</code>
355          <code class=charname>VERTICAL BAR</code> (<code class=char>|</code>)          <code class=charname>VERTICAL BAR</code> (<code class=char>|</code>)
356          character to <var>result</var>.</dd>          character to <var>r</var>.</dd>
357        <dt>If no namespace is specified (by namespace prefix <code>*</code>,        <dt>If no namespace is specified (by namespace prefix <code>*</code>,
358        or by omitting namespace prefix where no default namespace is        or by omitting namespace prefix where no default namespace is
359        specified)</dt>        specified)</dt>
# Line 236  a simple selector (<dfn><var id=var-ss>s Line 361  a simple selector (<dfn><var id=var-ss>s
361          <code class=charname>ASTERISK</code> (<code class=char>*</code>)          <code class=charname>ASTERISK</code> (<code class=char>*</code>)
362          character, followed by a <code class=char>U+007C</code>          character, followed by a <code class=char>U+007C</code>
363          <code class=charname>VERTICAL BAR</code> (<code class=char>|</code>)          <code class=charname>VERTICAL BAR</code> (<code class=char>|</code>)
364          character, to <var>result</var>.</dd>          character, to <var>r</var>.</dd>
365        </dl>        </dl>
366      </li>      </li>
367      <li>If <var>ss</var> is a type selector, append the      <li>If <var>ss</var> is a type selector, append the
368      <span class=ed>@@ normalized</span> local name to <var>result</var>.</li>      <a href="#algorithm-normalize-an-ident" title="normalize a string (IDENT) an IDENT">normalized</a>
369        local name to <var>r</var>.</li>
370      <li>If <var>ss</var> is a universal selector, append      <li>If <var>ss</var> is a universal selector, append
371      a <code class=char>U+002A</code> <code class=charname>ASTERISK</code>      a <code class=char>U+002A</code> <code class=charname>ASTERISK</code>
372      (<code class=char>*</code>) character to <var>result</var>.</li>      (<code class=char>*</code>) character to <var>r</var>.</li>
373      </ol>      </ol>
374    </dd>    </dd>
375  <dt>If <var>ss</var> is an attribute selector</dt>  <dt>If <var>ss</var> is an attribute selector</dt>
376    <dd class=ed>@@</dd>    <dd>
377        <ol>
378        <li>Append a <code class=char>U+005B</code> <code class=charname>LEFT
379        SQUARE BRACKET</code> (<code class=char>[</code>) to
380        <var>r</var>.</li>
381        <li>
382          Append a namespace prefix as following:
383          <dl>
384          <dt>If a namespace URI is specified</dt>
385            <dd>Append the namespace URI as a
386            <a href="#algorithm-normalize-an-ident" title="normalize a string as an IDENT">normalized
387            <code>IDENT</code></a> to <var>r</var>.  Then, append a
388            <code class=char>U+007C</code>
389            <code class=charname>VERTICAL BAR</code> (<code class=char>|</code>)
390            character to <var>r</var>.</dd>
391          <dt>If the null namespace is specified</dt>
392            <dd>Append a <code class=char>U+007C</code>
393            <code class=charname>VERTICAL BAR</code> character to
394            <var>r</var>.</dd>
395          <dt>If no namespace is specified</dt>
396            <dd>Append a <code class=char>U+002A</code>
397            <code class=charname>ASTERISK</code> (<code class=char>*</code>)
398            character, followed by a <code class=char>U+007C</code>
399            <code class=charname>VERTICAL BAR</code> (<code class=char>|</code>)
400            character, to <var>r</var>.</dd>
401          </dl>
402        </li>
403        <li>Append the
404        <a href="#algorithm-normalize-an-ident" title="normalize a string (IDENT) as an IDENT">normalized</a>
405        local name to <var>r</var>.</li>
406        <li>If a value is specified in <var>ss</var>:
407          <ol>
408          <li>Depending on the way to match, append <code>=</code>,
409          <code>~=</code>, <code>|=</code>, <code>^=</code>,
410          <code>$=</code>, or <code>*=</code> to <var>r</var>.</li>
411          <li>Append the
412          <a href="#algorithm-normalize-a-string" title="normalize a string">normalized</a>
413          value to <var>r</var>.</li>
414          </ol>
415        </li>
416        <li>Append a <code class=char>U+005D</code> <code class=charname>RIGHT
417        SQUARE BRACKET</code> (<code class=char>]</code>) to
418        <var>r</var>.</li>
419        </ol>
420      </dd>
421  <dt>If <var>ss</var> is a class selector</dt>  <dt>If <var>ss</var> is a class selector</dt>
422    <dd>Append a <code class=char>U+002E</code> <code class=charname>FULL    <dd>Append a <code class=char>U+002E</code> <code class=charname>FULL
423    STOP</code> (<code class=char>.</code>) character, followed    STOP</code> (<code class=char>.</code>) character, followed
424    by <span class=ed>@@ normalized</span> class name,    by <a href="#algorithm-normalize-an-ident" title="normalize a string (IDENT) as an IDENT">normalized</a>
425    <var>result</var>.</dd>    class name, to <var>r</var>.</dd>
426  <dt>If <var>ss</var> is an <abbr>ID</abbr> selector</dt>  <dt>If <var>ss</var> is an <abbr>ID</abbr> selector</dt>
427    <dd>Append a <code class=char>U+0023</code> <code class=charname>NUMBER    <dd>Append a <code class=char>U+0023</code> <code class=charname>NUMBER
428    SIGN</code> (<code class=char>#</code>) character, followed    SIGN</code> (<code class=char>#</code>) character, followed
429    by <span class=ed>@@ normalized</span> <abbr>ID</abbr>,    by <a href="#algorithm-normalize-an-ident" title="normalize a string (HASH except for the leading #) as an IDENT">normalized</a>
430    to <var>result</var>.</dd>    <abbr>ID</abbr>, to <var>r</var>.</dd>
431  <dt>If <var>ss</var> is a pseudo$B!>(Bclass selector</dt>  <dt>If <var>ss</var> is a pseudo$B!>(Bclass selector</dt>
432    <dd>    <dd>
433      <ol>      <ol>
434      <li>Append a <code class=char>U+003A</code>      <li>Append a <code class=char>U+003A</code>
435      <code class=charname>COLON</code> (<code class=char>:</code>) character      <code class=charname>COLON</code> (<code class=char>:</code>) character
436      to <var>result</var>.</li>      to <var>r</var>.</li>
437      <li>Append <span class=ed>@@ normalized</span>      <li>Append the
438      pseudo$B!>(Bclass name to <var>result</var>.</li>      <a href="#algorithm-normalize-an-ident" title="normalize a string (IDENT) as an IDENT">normalized</a>
439        name (in <a href="#lowercase">lowercase</a>) of the pseudo$B!>(Bclass to
440        <var>r</var>.</li>
441      <li>Append any arguments as following:      <li>Append any arguments as following:
442        <dl class=switch>        <dl class=switch>
443        <dt>If pseudo$B!>(Bclass name is <code>lang</code></dt>        <dt>If the name of the pseudo$B!>(Bclass is <code>lang</code></dt>
444          <dd>          <dd>
445            <ol>            <ol>
446            <li>Append a <code class=char>U+0028</code> <code class=charname>LEFT            <li>Append a <code class=char>U+0028</code> <code class=charname>LEFT
447            PARENTHESIS</code> (<code class=char>(</code>) character            PARENTHESIS</code> (<code class=char>(</code>) character
448            to <var>result</var>.</li>            to <var>r</var>.</li>
449            <li>Append <span class=ed>@@ normalized</span>            <li>Append the
450            language tag (the argument) to <var>result</var>.</li>            <a href="#algorithm-normalize-an-ident" title="normalize a string (IDENT) as an IDENT">normalized</a>
451              language tag (the argument) to <var>r</var>.
452              <span class="issue ed">Should we normalize cases?</span></li>
453            <li>Append a <code class=char>U+0029</code>            <li>Append a <code class=char>U+0029</code>
454            <code class=charname>RIGHT PARENTHESIS</code>            <code class=charname>RIGHT PARENTHESIS</code>
455            (<code class=char>)</code>) character            (<code class=char>)</code>) character
456            to <var>result</var>.</li>            to <var>r</var>.</li>
457            </ol>            </ol>
458          </dd>          </dd>
459        <dt>If pseudo$B!>(Bclass name is <code>-manakai-contains</code></dt>        <dt>If the name of the pseudo$B!>(Bclass is
460          <code>-manakai-contains</code></dt>
461          <dd>          <dd>
462            <ol>            <ol>
463            <li>Append a <code class=char>U+0028</code> <code class=charname>LEFT            <li>Append a <code class=char>U+0028</code> <code class=charname>LEFT
464            PARENTHESIS</code> (<code class=char>(</code>) character            PARENTHESIS</code> (<code class=char>(</code>) character
465            to <var>result</var>.</li>            to <var>r</var>.</li>
466            <li>Append <span class=ed>@@ normalized</span>            <li>Append the
467            string (the argument) to <var>result</var>.</li>            <a href="#algorithm-normalize-a-string" title="normalize a string">normalized</a>
468              string (the argument) to <var>r</var>.</li>
469            <li>Append a <code class=char>U+0029</code>            <li>Append a <code class=char>U+0029</code>
470            <code class=charname>RIGHT PARENTHESIS</code>            <code class=charname>RIGHT PARENTHESIS</code>
471            (<code class=char>)</code>) character            (<code class=char>)</code>) character
472            to <var>result</var>.</li>            to <var>r</var>.</li>
473            </ol>            </ol>
474          </dd>          </dd>
475        <dt>If pseudo$B!>(Bclass name is <code>nth-child</code>,        <dt>If name of the pseudo$B!>(Bclass is either <code>nth-child</code>,
476        <code>nth-last-child</code>, <code>nth-of-type</code>, or        <code>nth-last-child</code>, <code>nth-of-type</code>, or
477        <code>nth-last-of-type</code></dt>        <code>nth-last-of-type</code></dt>
478          <dd>          <dd>
479            <ol>            <ol>
480            <li>Append a <code class=char>U+0028</code> <code class=charname>LEFT            <li>Append a <code class=char>U+0028</code> <code class=charname>LEFT
481            PARENTHESIS</code> (<code class=char>(</code>) character            PARENTHESIS</code> (<code class=char>(</code>) character
482            to <var>result</var>.</li>            to <var>r</var>.</li>
483            <li>Append <span class=ed>@@ normalized</span>            <li>Let <dfn id=var-a><var>a</var></dfn> be the <var>a</var>
484            integer <var>a</var> to <var>result</var>.            part of the argument.  If the argument is a keyword <code>odd</code>
485            If the argument is a keyword <code>odd</code> or <code>even</code>,            or <code>even</code>, then let <var>a</var> be <code>2</code>.
486            <var>a</var> is <code>2</code>.  If <var>a</var> and            If the <var>a</var> part with following <code>n</code> character
487            <code>n</code> is omitted, <var>a</var> is assumed as            is omitted, then let <var>a</var> be <code>0</code>.
488            <code>0</code>.  Otherwise, if <var>a</var> is omitted,            Otherwise, if only the <var>a</var> part is omitted, then
489            it is assumed as <code>1</code> (or <code>-1</code>,            let <var>a</var> be <code>1</code>.  Otherwise, if the <var>a</var>
490            if there is a <code class=char>U+002D</code>            part is <code>-</code>, then let <var>a</var> be
491            <code class=charname>HYPHEN-MINUS</code> (<code class=char>-</code>)            <code>-1</code>.</li>
492            character).</li>            <li>Let <var>a</var> be the
493              <a href="#algorithm-normalize-an-integer" title="normalize an integer">normalized
494              string representation</a> of integer <var>a</var>.</li>
495              <li>Append <var>a</var> to <var>r</var>.</li>
496            <li>Append a <code class=char>U+006E</code>            <li>Append a <code class=char>U+006E</code>
497            <code class=charname>LATIN SMALL LETTER N</code>            <code class=charname>LATIN SMALL LETTER N</code>
498            (<code class=char>n</code>) character to <var>result</var>.</li>            (<code class=char>n</code>) character to <var>r</var>.</li>
499            <li>Append <span class=ed>@@ normalized</span>            <li>Let <dfn id=var-b><var>b</var></dfn> be the <var>b</var>
500            integer <var>b</var> to <var>result</var>.            part of the argument.  If the argument is a keyword <code>odd</code>,
501            It <em class=rfc2119>MUST</em> be preceded by a sign,            then let <var>b</var> be <code>1</code>.  If the argument is a
502            either <code class=char>U+002B</code> <code class=charname>PLUS            keyword <code>even</code>, then let <var>b</var> be <code>0</code>.
503            SIGN</code> (<code class=char>+</code>) or            If the <var>b</var> part is omitted, then let <var>b</var> be
504            <code class=char>U+002D</code>            <code>0</code>.</li>
505              <li>Let <var>b</var> be the
506              <a href="#algorithm-normalize-an-integer" title="normalize an integer">normalized
507              string representation</a> of integer <var>b</var>.</li>
508              <li>If <var>b</var> does <em>not</em> start with a
509              <code class=char>U+002D</code>
510            <code class=charname>HYPHEN-MINUS</code> (<code class=char>-</code>)            <code class=charname>HYPHEN-MINUS</code> (<code class=char>-</code>)
511            character.  If the argument is a keyword <code>odd</code>,            character, then append <code class=char>U+002B</code>
512            <var>b</var> is <code>1</code>.  If the argument            <code class=charname>PLUS SIGN</code>
513            is a keyword <code>even</code>, <var>b</var> is            (<code class=char>+</code>) to <var>r</var>.</li>
514            <code>0</code>.  If <var>b</var> is omitted, it is assumed as            <li>Append <var>b</var> to <var>r</var>.</li>
           <code>0</code>.  The sign of <code>0</code>  
           <em class=rfc2119>MUST</em> be <code class=char>U+002B</code>  
           <code class=charname>PLUS SIGN</code>  
           (<code class=char>+</code>).</li>  
515            <li>Append a <code class=char>U+0029</code>            <li>Append a <code class=char>U+0029</code>
516            <code class=charname>RIGHT PARENTHESIS</code>            <code class=charname>RIGHT PARENTHESIS</code>
517            (<code class=char>)</code>) character            (<code class=char>)</code>) character
518            to <var>result</var>.</li>            to <var>r</var>.</li>
519            </ol>            </ol>
520          </dd>          </dd>
521        <dt>If pseudo$B!>(Bclass name is <code>not</code></dt>        <dt>If the name of the pseudo$B!>(Bclass is <code>not</code></dt>
522          <dd class=ed>@@</dd>          <dd>
523              <ol>
524                <li>Append a string of <code class=char>U+003A</code>
525                <code class=charname>COLON</code>, <code class=char>U+006E</code>
526                <code class=charname>LATIN SMALL LETTER N</code>,
527                <code class=char>U+006F</code> <code class=charname>LATIN
528                SMALL LETTER O</code>, <code class=char>U+0074</code>
529                <code class=charname>LATIN SMALL LETTER T</code>, and
530                <code class=char>U+0028</code> <code class=charname>LEFT
531                PARENTHESIS</code> (<code>:not(</code>), followed by a
532                <a href="#newline">newline</a>, to <var>r</var>.</li>
533                <li>Append four <code class=char>U+0020</code>
534                <code class=charname>SPACE</code> characters to
535                <var>r</var>.</li>
536                <li>Append four <code class=char>U+0020</code>
537                <code class=charname>SPACE</code> characters to
538                <var>r</var> again.</li>
539                <li><a href="#algorithm-serialize-a-simple-selector">Serialize
540                the simple selector specified as the argument to the
541                <code>not</code> pseudo$B!>(Bclass</a>.</li>
542                <li>Append a <a href="#newline">newline</a> to
543                <var>r</var>.</li>
544                <li>Append four <code class=char>U+0020</code>
545                <code class=charname>SPACE</code> characters to
546                <var>r</var>.</li>
547                <li>Append a <code class=char>U+0029</code>
548                <code class=charname>RIGHT PARENTHESIS</code>
549                (<code class=char>)</code>) character
550                to <var>r</var>.</li>
551              </ol>
552            </dd>
553          <dt>Otherwise</dt>
554            <dd>The pseudo$B!>(Bclass is not supported by this version of
555            <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
556            and therefore no
557            <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
558            representation is defined for <var>ss</var>.  Stop the algorithm.</dd>
559        </dl>        </dl>
560      </li>      </li>
561      </ol>      </ol>
# Line 349  a simple selector (<dfn><var id=var-ss>s Line 565  a simple selector (<dfn><var id=var-ss>s
565      <ol>      <ol>
566      <li>Append two <code class=char>U+003A</code>      <li>Append two <code class=char>U+003A</code>
567      <code class=charname>COLON</code> characters (<code>::</code>)      <code class=charname>COLON</code> characters (<code>::</code>)
568      to <var>result</var>.</li>      to <var>r</var>.</li>
569      <li>Append <span class=ed>@@ normalized</span>      <li>Append the
570      pseudo$B!>(Belement name to <var>result</var>.</li>      <a href="#algorithm-normalize-an-ident" title="normalize a string (IDENT) as an IDENT">normalized</a>
571      <!-- For future version: append "(", arguments, ")", if any. -->      name (in <a href="#lowercase">lowercase</a>) of the pseudo$B!>(Belement
572        to <var>r</var>.</li>
573        <li>If the pseudo$B!>(Belement has any arguments:
574            The pseudo$B!>(Belement is not supported by this version of
575            <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
576            and therefore no
577            <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
578            representation is defined for <var>ss</var>.  Stop the algorithm.
579        </li>
580      </ol>      </ol>
581    </dd>    </dd>
582  </dl>  </dl>
583    </li>
584    <li>Then, <var>r</var> is the
585    <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
586    representation of <var>ss</var>.</li>
587    </ol>
588    
589    </div>
590    
591    <div class=section id=serializing-groups-of-selectors>
592    <h3>Serializing Groups of Selectors</h3>
593    
594    <p>No <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
595    representation is defined for an invalid
596    <a href="http://www.w3.org/TR/css3-selectors/#grouping">group of
597    selectors</a>.</p>
598    
599    <p>To
600    <dfn id=algorithm-serialize-a-group-of-selectors title="serialize a group of selectors">serialize
601    a group of selectors (<dfn id=var-gs><var>gs</var></dfn>)</dfn>,
602    the following algorithm <em class=rfc2119>MUST</em> be used:</p>
603    <ol>
604    <li>Let <dfn id=var-result><var>result</var></dfn> an empty string.</li>
605    <li>For each selector (<dfn id=var-selector><var>selector</var></dfn>) in
606    <var>gs</var>:
607      <ol>
608      <li>If <var>selector</var> is <em>not</em> the first selector
609      in the <var>gs</var>, then append a <code class=char>U+002C</code>
610      <code class=charname>COMMA</code> (<code class=char>,</code>) followed by a
611      <a href="#newline">newline</a> to <var>result</var>.</li>
612      <li>Append four <code class=char>U+0020</code>
613      <code class=charname>SPACE</code> characters to <var>result</var>.</li>
614      <li>Process each sequence of simple selectors or
615      combinator in <var>selector</var> as following:
616        <dl class=switch>
617        <dt>If it is a sequence of simle selector
618        (<dfn id=var-sss><var>sss</var></dfn>)</dt>
619          <dd>
620            <ol>
621            <li>If <var>sss</var> contains a universal or type selector, then
622            <a href="#algorithm-serialize-a-simple-selector" title="serialize a simple selector">serialize
623            that simple selector</a> and append the result to
624            <var>result</var>.</li>
625            <li>Otherwise, i.e. if <var>sss</var> does not contain a universal or
626            type selector, then
627            <a href="#algorithm-serialize-a-simple-selector" title="serialize a simple selector">serialize
628            a simple selector <code>*</code></a> and append the result to
629            <var>result</var>.</li>
630            <li><a href="#algorithm-serialize-a-simple-selector" title="serialize a simple selector">Serialize
631            any attribute selectors</a> in <var>sss</var>, sort the results,
632            then append them to <var>result</var> in order.</li>
633            <li><a href="#algorithm-serialize-a-simple-selector" title="serialize a simple selector">Serialize
634            any class selectors</a> in <var>sss</var>, sort the results,
635            then append them to <var>result</var> in order.</li>
636            <li><a href="#algorithm-serialize-a-simple-selector" title="serialize a simple selector">Serialize
637            any <abbr>ID</abbr> selectors</a> in <var>sss</var>, sort the results,
638            then append them to <var>result</var> in order.</li>
639            <li><a href="#algorithm-serialize-a-simple-selector" title="serialize a simple selector">Serialize
640            any pseudo$B!>(Bclass selectors</a> in <var>sss</var>, sort the results,
641            then append them to <var>result</var> in order.</li>
642            <li><a href="#algorithm-serialize-a-simple-selector" title="serialize a simple selector">Serialize
643            any pseudo elements</a> in <var>sss</var>, sort the results,
644            then append them to <var>result</var> in order.</li>
645            <li>Append a <a href="#newline">newline</a> to <var>result</var>.</li>
646            </ol>
647          </dd>
648        <dt>If it is a combinator (<dfn id=var-c><var>c</var></dfn>)</dt>
649          <dd>
650            <ol>
651            <li>Append two <code class=char>U+0020</code>
652            <code class=charname>SPACE</code> characters to <var>result</var>.</li>
653            <li>Process <var>c</var> as following:
654    
655              <dl class=switch>
656              <dt>If <var>c</var> is descendant combinator (white space)</dt>
657                <dd>Append a <code class=char>U+0020</code>
658                <code class=charname>SPACE</code> character to
659                <var>result</var>.</dd>
660              <dt>If <var>c</var> is child combinator
661              (<code class=char>></code>)</dt>
662                <dd>Append a <code class=char>U+003E</code>
663                <code class=charname>GREATER-THAN SIGN</code>
664                (<code class=char>></code>) character to <var>result</var>.</dd>
665              <dt>If <var>c</var> is adjacent sibling combinator
666              (<code class=char>+</code>)</dt>
667                <dd>Append a <code class=char>U+002B</code>
668                <code class=charname>PLUS SIGN</code> (<code class=char>+</code>)
669                character to <var>result</var>.</dd>
670              <dt>If <var>c</var> is general sibling combinator
671              (<code class=char>~</code>)</dt>
672                <dd>Append a <code class=char>U+007E</code>
673                <code class=charname>TILDE</code> (<code class=char>~</code>)
674                character to <var>result</var>.</dd>
675              </dl>
676            </li>
677            <li>Append a <code class=char>U+0020</code>
678            <code class=charname>SPACE</code> character to
679            <var>result</var>.</li>
680            </ol>
681          </dd>
682        </dl>
683      </ol>
684    </li>
685    <li>Then, <var>result</var> is the
686    <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
687    representation of <var>gs</var>.</li>
688    </ol>
689    
690    </div>
691    
692  </div>  </div>
693    
694  <div class="section" id="parsing">  <div class="section" id="parsing">
695  <h2>Parsing  <h2>Parsing
696  <abbr title="Selectors Serialization Format for Testing">SFFT</abbr>  <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
697  Groups of Selectors</h2>  Representations of Selectors</h2>
698    
699  <p>Since <a href="#serializing">the serializing algorithm</a> is  <p>Since <a href="#algorithm-serialize-a-group-of-selectors">the serializing
700  so designed that it always output a valid  algorithm for groups of selectors</a> is so designed that it always outputs a
701  <a href="http://www.w3.org/TR/css3-selectors/#grouping">group of  valid <a href="http://www.w3.org/TR/css3-selectors/#grouping">group of
702  selectors</a>, no special parser for  selectors</a>, no special parser for the
703  <abbr title="Selectors Serialization Format for Testing">SFFT</abbr>  <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
704  is necessary.  Any conforming  representation is necessary.  Any conforming parser for
705  <a href="http://www.w3.org/TR/css3-selectors/#grouping">group of  <a href="http://www.w3.org/TR/css3-selectors/#grouping">groups of
706  selectors</a> parser <em class=rfc2119>MAY</em> be used  selectors</a> <em class=rfc2119>MAY</em> be used
707  to parse <abbr title="Selectors Serialization Format for Testing">SFFT</abbr>  to parse <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
708  groups of selectors.</p>  representations of
709    <a href="http://www.w3.org/TR/css3-selectors/#grouping">groups of
710    selectors</a>.</p>
711    
712    <p>Likewise, <a href="#algorithm-serialize-a-simple-selector">the serializing
713    algorithm for simple selectors</a> always outputs a valid
714    <a href="#simple-selector">simple selector</a> and therefore any
715    conforming parser for <a href="#simple-selector">simple selector</a>
716    <em class=rfc2119>MAY</em> be used to parse
717    <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
718    representations of <a href="#simple-selector">simple selectors</a>.</p>
719  </div>  </div>
720    
721  <div class="section" id="examples">  <div class="section" id="examples">
# Line 381  groups of selectors.</p> Line 723  groups of selectors.</p>
723    
724  <p class=section-info>This section is <em>non$B!>(Bnormative</em>.</p>  <p class=section-info>This section is <em>non$B!>(Bnormative</em>.</p>
725    
 <div class="ed issue">  
 <p><a href="http://suika.fam.cx/gate/2007/css/parser-interface">Try demo</a>,  
 by choosing <q>Selectors</q> radio button.</p>  
   
726  <div class="example figure block">  <div class="example figure block">
727  <div class="caption">...</div>  <p>The <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
728    representation of a selector <code>p + q</code> is:</p>
729    
730  <pre><code>...</code></pre>  <pre><code>    *|p
731      + *|q
732    </code></pre>
733  </div>  </div>
734    
735    <div class="example figure block">
736    <p>The <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
737    representation of a selector <code>a#id.class1:n\ot(:Active)/*
738     comment
739    */.class2</code> is:</p>
740    
741    <pre><code>    *|a.class1.class2#id:not(
742            :active
743        )
744    </code></pre>
745    </div>
746    
747    <div class="example figure block">
748    <p>The <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
749    representation of a
750    <a href="http://www.w3.org/TR/css3-selectors/#grouping">group of selectors</a>
751    <code>a, #b, C[d^=e], .\31 23</code> is:</p>
752    
753    <pre><code>    *|a
754    ,
755        *|*#b
756    ,
757        *|C[|d^="e"]
758    ,
759        *|*.\00003123
760    </code></pre>
761  </div>  </div>
762    
763  </div>  </div>
# Line 409  by choosing <q>Selectors</q> radio butto Line 776  by choosing <q>Selectors</q> radio butto
776    <a href="urn:ietf:bcp:14"><abbr title="Best Current Practice">BCP</abbr>    <a href="urn:ietf:bcp:14"><abbr title="Best Current Practice">BCP</abbr>
777    14</a>, <abbr title="Request for Comments">RFC</abbr> 2119,    14</a>, <abbr title="Request for Comments">RFC</abbr> 2119,
778    <time datetime=1997-03>March 1997</time>.    <time datetime=1997-03>March 1997</time>.
779    This version of the specification is referenced</dd>    This version of the specification is referenced.</dd>
780  <dt id=ref-SELECTORS>SELECTORS</dt>  <dt id=ref-SELECTORS>SELECTORS</dt>
781    <dd><a href="http://www.w3.org/TR/2005/WD-css3-selectors-20051215"><cite>Selectors</cite></a>,    <dd><a href="http://www.w3.org/TR/2005/WD-css3-selectors-20051215"><cite>Selectors</cite></a>,
782    <abbr title="World Wide Web Consortium">W3C</abbr> Working Draft,    <abbr title="World Wide Web Consortium">W3C</abbr> Working Draft,
# Line 442  by choosing <q>Selectors</q> radio butto Line 809  by choosing <q>Selectors</q> radio butto
809  <dt id=ref-HTML5>HTML5</dt>  <dt id=ref-HTML5>HTML5</dt>
810    <dd><cite><a href="http://whatwg.org/html5"><abbr>HTML</abbr> 5</a></cite>,    <dd><cite><a href="http://whatwg.org/html5"><abbr>HTML</abbr> 5</a></cite>,
811    <abbr title="Web Hypertext Application Technology Working Group">WHATWG</abbr>    <abbr title="Web Hypertext Application Technology Working Group">WHATWG</abbr>
812    Working Draft.  Work in progress.</dd>    Working Draft, <time datetime="2007-11-03">3 November 2007</time>.
813      Work in progress.</dd>
814  <dt id=ref-SAPI>SAPI</dt>  <dt id=ref-SAPI>SAPI</dt>
815    <dd><cite><a href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/selectors-api/Overview.html?rev=1.28&amp;content-type=text/html;%20charset=utf-8">Selectors <abbr>API</abbr></a></cite>,    <dd><cite><a href="http://dev.w3.org/cvsweb/~checkout~/2006/webapi/selectors-api/Overview.html?rev=1.28&amp;content-type=text/html;%20charset=utf-8">Selectors <abbr>API</abbr></a></cite>,
816    <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,    <abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft,
# Line 451  by choosing <q>Selectors</q> radio butto Line 819  by choosing <q>Selectors</q> radio butto
819    <code class=URI>&lt;<a href="http://dev.w3.org/2006/webapi/selectors-api/Overview.html">http://dev.w3.org/2006/webapi/selectors-api/Overview.html</a>></code>.    <code class=URI>&lt;<a href="http://dev.w3.org/2006/webapi/selectors-api/Overview.html">http://dev.w3.org/2006/webapi/selectors-api/Overview.html</a>></code>.
820    The latest published version of the specification is available at    The latest published version of the specification is available at
821    <code class=URI>&lt;<a href="http://www.w3.org/TR/selectors-api/">http://www.w3.org/TR/selectors-api/</a>></code>.</dd>    <code class=URI>&lt;<a href="http://www.w3.org/TR/selectors-api/">http://www.w3.org/TR/selectors-api/</a>></code>.</dd>
822  <dt id=XBL2>XBL2</dt>  <dt id=ref-XBL2>XBL2</dt>
823    <dd><cite><a href="http://www.mozilla.org/projects/xbl/xbl2.html"><abbr>XBL</abbr>    <dd><cite><a href="http://www.mozilla.org/projects/xbl/xbl2.html"><abbr>XBL</abbr>
824    2.0</a></cite>, Mozilla.org, <time datetime=2007-03-15>15 Mar 2007</time>.    2.0</a></cite>, Mozilla.org, <time datetime=2007-03-15>15 Mar 2007</time>.
825    Work in progress.  The latest    Work in progress.  The latest

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.24

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24