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

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24