/[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.8 by wakaba, Mon Oct 15 00:32:05 2007 UTC revision 1.11 by wakaba, Mon Oct 22 10:30:53 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-15>15 October 2007</time></h2>  <h2>Working Draft <time datetime=2007-10-22>22 October 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 116  in not escaping unsafe identifiers.</p> Line 118  in not escaping unsafe identifiers.</p>
118  <div class="section" id="terminology">  <div class="section" id="terminology">
119  <h2>Terminology</h2>  <h2>Terminology</h2>
120    
121  <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>,
122  <q><em class="rfc2119">MUST NOT</em></q>,  <q><dfn id=must-not><em class="rfc2119">MUST NOT</em></dfn></q>,
123  <q><em class="rfc2119">SHOULD</em></q>,  <q><dfn id=should><em class="rfc2119">SHOULD</em></dfn></q>,
124  <q><em class="rfc2119">SHOULD NOT</em></q>, and  <q><dfn id=should-not><em class="rfc2119">SHOULD NOT</em></dfn></q>, and
125  <q><em class=rfc2119>MAY</em></q> in this  <q><dfn id=may><em class=rfc2119>MAY</em></dfn></q> in this
126  document are to be interpreted as described in  document are to be interpreted as described in
127  <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>
128  2119</a>  2119</a>
# Line 173  a group of selectors (<dfn id=var-gs><va Line 175  a group of selectors (<dfn id=var-gs><va
175      <dl class=switch>      <dl class=switch>
176      <dt>If it is a sequence of simle selector      <dt>If it is a sequence of simle selector
177      (<dfn id=var-sss><var>sss</var></dfn>)</dt>      (<dfn id=var-sss><var>sss</var></dfn>)</dt>
178        <dd class=ed>@@</dd>        <dd>
179            <ol>
180            <li class=ed><a href="#algorithm-serialize-a-simple-selector">Serialize
181            each simple selector</a> in <var>sss</var>.</li>
182            <li class=ed>sort</li>
183            <li>Append a <a href="#newline">newline</a> to <var>result</var>.</li>
184            </ol>
185          </dd>
186      <dt>If it is a combinator (<dfn id=var-c><var>c</var></dfn>)</dt>      <dt>If it is a combinator (<dfn id=var-c><var>c</var></dfn>)</dt>
187        <dd>        <dd>
188          <ol>          <ol>
# Line 243  a simple selector (<dfn><var id=var-ss>s Line 252  a simple selector (<dfn><var id=var-ss>s
252        </dl>        </dl>
253      </li>      </li>
254      <li>If <var>ss</var> is a type selector, append the      <li>If <var>ss</var> is a type selector, append the
255      <span class=ed>@@ normalized</span> local name to <var>result</var>.</li>      <a href="#algorithm-normalize-an-ident" title="normalize an IDENT">normalized</a>
256        local name to <var>result</var>.</li>
257      <li>If <var>ss</var> is a universal selector, append      <li>If <var>ss</var> is a universal selector, append
258      a <code class=char>U+002A</code> <code class=charname>ASTERISK</code>      a <code class=char>U+002A</code> <code class=charname>ASTERISK</code>
259      (<code class=char>*</code>) character to <var>result</var>.</li>      (<code class=char>*</code>) character to <var>result</var>.</li>
260      </ol>      </ol>
261    </dd>    </dd>
262  <dt>If <var>ss</var> is an attribute selector</dt>  <dt>If <var>ss</var> is an attribute selector</dt>
263    <dd class=ed>@@</dd>    <dd>
264        <ol>
265        <li>Append a <code class=char>U+005B</code> <code class=charname>LEFT
266        SQUARE BRACKET</code> (<code class=char>[</code>) to
267        <var>result</var>.</li>
268        <li>
269          Append a namespace prefix as following:
270          <dl>
271          <dt>If a namespace URI is specified</dt>
272            <dd class=ed>@@</dd>
273            <dd class=ed>@@ Current reference implementation is wrong,
274            since its result of sorting depends on namespace prefix.</dd>
275          <dt>If the null namespace is specified</dt>
276            <dd>Append a <code class=char>U+007C</code>
277            <code class=charname>VERTICAL BAR</code> character to
278            <var>result</var>.</dd>
279          <dt>If no namespace is specified</dt>
280            <dd>Append a <code class=char>U+002A</code>
281            <code class=charname>ASTERISK</code> (<code class=char>*</code>)
282            character, followed by a <code class=char>U+007C</code>
283            <code class=charname>VERTICAL BAR</code> (<code class=char>|</code>)
284            character, to <var>result</var>.</dd>
285          </dl>
286        </li>
287        <li>Append the
288        <a href="#algorithm-normalize-an-ident" title="normalize an IDENT">normalized</a>
289        local name to <var>result</var>.</li>
290        <li>If a value is specified in <var>ss</var>:
291          <ol>
292          <li>Depending on the way to match, append <code>=</code>,
293          <code>~=</code>, <code>|=</code>, <code>^=</code>,
294          <code>$=</code>, or <code>*=</code> to <var>result</var>.</li>
295          <li>Append the
296          <a href="#algorithm-normalize-a-string" title="normalize a string">normalized</a>
297          value to <var>result</var>.</li>
298          </ol>
299        </li>
300        <li>Append a <code class=char>U+005D</code> <code class=charname>RIGHT
301        SQUARE BRACKET</code> (<code class=char>]</code>) to
302        <var>result</var>.</li>
303        </ol>
304      </dd>
305  <dt>If <var>ss</var> is a class selector</dt>  <dt>If <var>ss</var> is a class selector</dt>
306    <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
307    STOP</code> (<code class=char>.</code>) character, followed    STOP</code> (<code class=char>.</code>) character, followed
308    by <span class=ed>@@ normalized</span> class name,    by <a href="#algorithm-normalize-an-ident" title="normalize an IDENT">normalized</a>
309    <var>result</var>.</dd>    class name, <var>result</var>.</dd>
310  <dt>If <var>ss</var> is an <abbr>ID</abbr> selector</dt>  <dt>If <var>ss</var> is an <abbr>ID</abbr> selector</dt>
311    <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
312    SIGN</code> (<code class=char>#</code>) character, followed    SIGN</code> (<code class=char>#</code>) character, followed
313    by <span class=ed>@@ normalized</span> <abbr>ID</abbr>,    by <a href="#algorithm-normalize-an-ident" title="normalize an IDENT">normalized</a>
314    to <var>result</var>.</dd>    <abbr>ID</abbr>, to <var>result</var>.</dd>
315  <dt>If <var>ss</var> is a pseudo$B!>(Bclass selector</dt>  <dt>If <var>ss</var> is a pseudo$B!>(Bclass selector</dt>
316    <dd>    <dd>
317      <ol>      <ol>
318      <li>Append a <code class=char>U+003A</code>      <li>Append a <code class=char>U+003A</code>
319      <code class=charname>COLON</code> (<code class=char>:</code>) character      <code class=charname>COLON</code> (<code class=char>:</code>) character
320      to <var>result</var>.</li>      to <var>result</var>.</li>
321      <li>Append the <span class=ed>@@ normalized</span> name of the      <li>Append the
322      pseudo$B!>(Bclass to <var>result</var>.</li>      <a href="#algorithm-normalize-an-ident" title="normalize an IDENT">normalized</a>
323        name of the pseudo$B!>(Bclass to <var>result</var>.</li>
324      <li>Append any arguments as following:      <li>Append any arguments as following:
325        <dl class=switch>        <dl class=switch>
326        <dt>If the name of the pseudo$B!>(Bclass is <code>lang</code></dt>        <dt>If the name of the pseudo$B!>(Bclass is <code>lang</code></dt>
# Line 277  a simple selector (<dfn><var id=var-ss>s Line 329  a simple selector (<dfn><var id=var-ss>s
329            <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
330            PARENTHESIS</code> (<code class=char>(</code>) character            PARENTHESIS</code> (<code class=char>(</code>) character
331            to <var>result</var>.</li>            to <var>result</var>.</li>
332            <li>Append <span class=ed>@@ normalized</span>            <li>Append the
333              <a href="#algorithm-normalize-an-ident" title="normalize an IDENT">normalized</a>
334            language tag (the argument) to <var>result</var>.</li>            language tag (the argument) to <var>result</var>.</li>
335            <li>Append a <code class=char>U+0029</code>            <li>Append a <code class=char>U+0029</code>
336            <code class=charname>RIGHT PARENTHESIS</code>            <code class=charname>RIGHT PARENTHESIS</code>
# Line 292  a simple selector (<dfn><var id=var-ss>s Line 345  a simple selector (<dfn><var id=var-ss>s
345            <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
346            PARENTHESIS</code> (<code class=char>(</code>) character            PARENTHESIS</code> (<code class=char>(</code>) character
347            to <var>result</var>.</li>            to <var>result</var>.</li>
348            <li>Append <span class=ed>@@ normalized</span>            <li>Append the
349              <a href="#algorithm-normalize-a-string" title="normalize a string">normalized</a>
350            string (the argument) to <var>result</var>.</li>            string (the argument) to <var>result</var>.</li>
351            <li>Append a <code class=char>U+0029</code>            <li>Append a <code class=char>U+0029</code>
352            <code class=charname>RIGHT PARENTHESIS</code>            <code class=charname>RIGHT PARENTHESIS</code>
# Line 384  a simple selector (<dfn><var id=var-ss>s Line 438  a simple selector (<dfn><var id=var-ss>s
438      <li>Append two <code class=char>U+003A</code>      <li>Append two <code class=char>U+003A</code>
439      <code class=charname>COLON</code> characters (<code>::</code>)      <code class=charname>COLON</code> characters (<code>::</code>)
440      to <var>result</var>.</li>      to <var>result</var>.</li>
441      <li>Append the <span class=ed>@@ normalized</span> name of the      <li>Append the
442      pseudo$B!>(Belement to <var>result</var>.</li>      <a href="#algorithm-normalize-an-ident" title="normalize an IDENT">normalized</a>
443        name of the pseudo$B!>(Belement to <var>result</var>.</li>
444      <!-- For future version: append "(", arguments, ")", if any. -->      <!-- For future version: append "(", arguments, ")", if any. -->
445      </ol>      </ol>
446    </dd>    </dd>
447  </dl>  </dl>
448    
449    <p>To <dfn id=algorithm-normalize-an-ident title="normalize an IDENT">normalize
450    an <code>IDENT</code> (<dfn id=var-n><var>n</var></dfn>)</dfn>:</p>
451    <ol>
452    <li>Replace the escape sequences (<code>\</code> and following
453    characters) in <var>n</var> by characters represented by them
454    respectively.</li>
455    <li>If there is any character that is <em>not</em> one of
456    <code class=char>U+002D</code> <code class=charname>HYPHEN-MINUS</code>
457    (<code class=char>-</code>), <code class=char>U+0030</code>
458    <code class=charname>DIGIT ZERO</code>
459    (<code class=char>0</code>) to <code class=char>U+0039</code>
460    <code class=charname>DIGIT NINE</code> (<code class=char>9</code>),
461    <code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
462    A</code> (<code class=char>A</code>) to <code class=char>U+005A</code>
463    <code class=charname>LATIN CAPITAL LETTER Z</code> (<code class=char>Z</code>),
464    <code class=char>U+005F</code> <code class=charname>LOW LINE</code>
465    (<code class=char>_</code>), <code class=char>U+0061</code>
466    <code class=charname>LATIN SMALL LETTER A</code>
467    (<code class=char>a</code>) to <code class=char>U+006A</code>
468    <code class=charname>LATIN SMALL LETTER Z</code> (<code class=char>z</code>),
469    <code class=char>U+0080</code> to <code class=char>U+D7FF</code>, or
470    <code class=char>U+E000</code> to <code class=char>U+10FFFF</code> in
471    <var>n</var>, then replace it by string <code>\<var>HHHHHH</var></code>, where
472    <dfn id=var-HHHHHH><var>HHHHHH</var></dfn> is the upper$B!>(Bcase zero$B!>(Bpadded
473    hexadecimal representation of the character.  If the character
474    is outside the range of <code>[<code class=char>U+0000</code>,
475    <code class=char>U+10FFFF</code>]</code>, <var>HHHHHH</var>
476    <em class=rfc2119>MUST</em> be <code>FFFFFF</code>.</li>
477    <li>If the first character in <var>n</var> is one of
478    <code class=char>U+0030</code> <code class=charname>DIGIT ZERO</code>
479    (<code class=char>0</code>) to <code class=char>U+0039</code>
480    <code class=charname>DIGIT NINE</code> (<code class=char>9</code>),
481    then prepend a string <code>\00003</code> at the beginning of
482    <var>n</var>.</li>
483    <li>If the first character in <var>n</var> is <code class=char>U+002D</code>
484    <code class=charname>HYPHEN-MINUS</code> (<code class=char>-</code>) and
485    the second character, if any, is <em>not</em> one of
486    <code class=char>U+0041</code> <code class=charname>LATIN CAPITAL LETTER
487    A</code> (<code class=char>A</code>) to <code class=char>U+005A</code>
488    <code class=charname>LATIN CAPITAL LETTER Z</code> (<code class=char>Z</code>),
489    <code class=char>U+005F</code> <code class=charname>LOW LINE</code>
490    (<code class=char>_</code>), <code class=char>U+0061</code>
491    <code class=charname>LATIN SMALL LETTER A</code>
492    (<code class=char>a</code>) to <code class=char>U+006A</code>
493    <code class=charname>LATIN SMALL LETTER Z</code> (<code class=char>z</code>),
494    <code>U+0080</code> to <code>U+D7FF</code>, or
495    <code>U+E000</code> to <code>U+10FFFF</code>, or
496    <var>n</var> is equal to <code class=char>U+002D</code>
497    <code class=charname>HYPHEN-MINUS</code> (<code class=char>-</code>), then
498    replace the <code class=char>U+002D</code>
499    <code class=charname>HYPHEN-MINUS</code> (<code class=char>-</code>)
500    character by string <code>\00002D</code>.</li>
501    <li>Then, <var>n</var> is the result of the algorithm.</li>
502    </ol>
503    
504    <p>To <dfn id=algorithm-normalize-a-string title="normalize a STRING">normalize
505    a <code>STRING</code> (<dfn id=var-s><var>s</var></dfn>)</dfn>:</p>
506    <ol>
507    <li>Replace the escape sequences (<code>\</code> and following
508    characters) in <var>s</var> by characters represented by them
509    (or an empty string if <code>\</code> is immediately followed by
510    newline character(s)) respectively.</li>
511    <li>Remove the quotation characters in <var>s</var>
512    if <var>s</var> is a <code>STRING</code>.</li>
513    <li>If there is any character that is <em>not</em> one of
514    <code class=char>U+0020</code> <code class=charname>SPACE</code>,
515    <code class=char>U+0021</code> <code class=charname>EXCLAMATION MARK</code>
516    (<code class=char>!</code>), <code class=char>U+0023</code>
517    <code class=charname>NUMBER SIGN</code> (<code class=char>#</code>) to
518    <code class=char>U+005B</code> <code class=charname>LEFT SQUARE
519    BRACKET</code>, <code class=char>U+005D</code> <code class=charname>RIGHT
520    SQUARE BRACKET</code> to <code class=char>U+D7FF</code>, or
521    <code class=char>U+E000</code> to <code class=char>U+10FFFF</code> in
522    <var>s</var>, then replace it by string <code>\<var>HHHHHH</var></code>, where
523    <dfn id=var-HHHHHH><var>HHHHHH</var></dfn> is the upper$B!>(Bcase zero$B!>(Bpadded
524    hexadecimal representation of the character.  If the character
525    is outside the range of <code>[<code class=char>U+0000</code>,
526    <code class=char>U+10FFFF</code>]</code>, <var>HHHHHH</var>
527    <em class=rfc2119>MUST</em> be <code>FFFFFF</code>.</li>
528    <li>Insert a <code class=char>U+0022</code> <code class=charname>QUOTATION
529    MARK</code> (<code class=char>"</code>) at the beginning of <var>s</var>.</li>
530    <li>Insert a <code class=char>U+0022</code> <code class=charname>QUOTATION
531    MARK</code> (<code class=char>"</code>) at the end of <var>s</var>.</li>
532    <li>Then, <var>s</var> is the result of the algorithm.</li>
533    </ol>
534    
535  <p>A <dfn id=newline title=newline>newline</dfn>  <p>A <dfn id=newline title=newline>newline</dfn>
536  <em class=rfc2119>SHOULD</em> be represented as a  <em class=rfc2119>SHOULD</em> be represented as a
# Line 400  the <abbr title="Selectors Serialization Line 540  the <abbr title="Selectors Serialization
540  representation is in use, a sequence of  representation is in use, a sequence of
541  <code class=char>U+000D</code> <code class=charname>CARRIAGE RETURN</code>  <code class=char>U+000D</code> <code class=charname>CARRIAGE RETURN</code>
542  followed by a <code class=char>U+000A</code>  followed by a <code class=char>U+000A</code>
543  <code class=charname>LINE FEED</code> or a character  <code class=charname>LINE FEED</code> (i.e. a
544    <code>CRLF</code> sequence) or a character
545  <code class=char>U+000D</code> <code class=charname>CARRIAGE RETURN</code>  <code class=char>U+000D</code> <code class=charname>CARRIAGE RETURN</code>
546  <em class=rfc2119>MAY</em> be used as a newline instead.</p>  <em class=rfc2119>MAY</em> be used as a <a href="#newline">newline</a> instead.
547    <a href="#newline">Newline</a> representations
548    <em class=rfc2119>SHOULD</em> be consistent in an
549    <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
550    representation.</p>
551    
552  <div class="note memo">  <div class="note memo">
553  <p>Therefore, when  <p>Therefore, newlines must be normalized before
554  <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>  <abbr title="Selectors Serialization Format for Testing">SSFT</abbr>
555  representations are literally compared, newlines must be normalized.</p>  representations are literally compared.</p>
556  </div>  </div>
557    
558  </div>  </div>
# Line 504  by choosing <q>Selectors</q> radio butto Line 649  by choosing <q>Selectors</q> radio butto
649    <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>.
650    The latest published version of the specification is available at    The latest published version of the specification is available at
651    <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>
652  <dt id=XBL2>XBL2</dt>  <dt id=ref-XBL2>XBL2</dt>
653    <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>
654    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>.
655    Work in progress.  The latest    Work in progress.  The latest

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.11

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24