| OLD | NEW | 
|---|
| 1 <html> | 1 <html> | 
| 2 <head> | 2 <head> | 
| 3 <script src="../htmlrunner.js"></script> | 3 <script type="application/dart" src="dom-attr-htmlfast.dart"></script> | 
| 4 <script> | 4 <script src="http://dart.googlecode.com/svn/branches/bleeding_edge/dart/client/d
      art.js"></script> | 
| 5 window.onload = function(){ |  | 
| 6 startTest("dom-query"); |  | 
| 7 |  | 
| 8 // Try to force real results |  | 
| 9 var ret, tmp; |  | 
| 10 var num = 40; |  | 
| 11 var html = document.body.innerHTML; |  | 
| 12 |  | 
| 13 »       prep(function(){ |  | 
| 14 »       »       html = html.replace(/id="test(\w).*?"/g, 'id="test$1' + num + '"
      '); |  | 
| 15 »       »       html = html.replace(/name="test.*?"/g, 'name="test' + num + '"')
      ; |  | 
| 16 »       »       html = html.replace(/class="foo.*?"/g, 'class="foo test' + num +
       ' bar"'); |  | 
| 17 »       »       var div = document.createElement("div"); |  | 
| 18 »       »       div.innerHTML = html; |  | 
| 19 »       »       document.body.appendChild( div ); |  | 
| 20 »       }); |  | 
| 21 |  | 
| 22 »       test( "getElementById", function(){ |  | 
| 23 »       »       for ( var i = 0; i < num * 30; i++ ) { |  | 
| 24 »       »       »       ret = document.getElementById("testA" + num).nodeType; |  | 
| 25 »       »       »       ret = document.getElementById("testB" + num).nodeType; |  | 
| 26 »       »       »       ret = document.getElementById("testC" + num).nodeType; |  | 
| 27 »       »       »       ret = document.getElementById("testD" + num).nodeType; |  | 
| 28 »       »       »       ret = document.getElementById("testE" + num).nodeType; |  | 
| 29 »       »       »       ret = document.getElementById("testF" + num).nodeType; |  | 
| 30 »       »       } |  | 
| 31 »       }); |  | 
| 32 |  | 
| 33 »       test( "getElementById (not in document)", function(){ |  | 
| 34 »       »       for ( var i = 0; i < num * 30; i++ ) { |  | 
| 35 »       »       »       ret = document.getElementById("testA"); |  | 
| 36 »       »       »       ret = document.getElementById("testB"); |  | 
| 37 »       »       »       ret = document.getElementById("testC"); |  | 
| 38 »       »       »       ret = document.getElementById("testD"); |  | 
| 39 »       »       »       ret = document.getElementById("testE"); |  | 
| 40 »       »       »       ret = document.getElementById("testF"); |  | 
| 41 »       »       } |  | 
| 42 »       }); |  | 
| 43 |  | 
| 44 »       test( "getElementsByTagName(div)", function(){ |  | 
| 45 »       »       for ( var i = 0; i < num; i++ ) { |  | 
| 46 »       »       »       var elems = document.getElementsByTagName("div"); |  | 
| 47 »       »       »       ret = elems[elems.length-1].nodeType; |  | 
| 48 »       »       } |  | 
| 49 »       }); |  | 
| 50 |  | 
| 51 »       test( "getElementsByTagName(p)", function(){ |  | 
| 52 »       »       for ( var i = 0; i < num; i++ ) { |  | 
| 53 »       »       »       var elems = document.getElementsByTagName("p"); |  | 
| 54 »       »       »       ret = elems[elems.length-1].nodeType; |  | 
| 55 »       »       } |  | 
| 56 »       }); |  | 
| 57 |  | 
| 58 »       test( "getElementsByTagName(a)", function(){ |  | 
| 59 »       »       for ( var i = 0; i < num; i++ ) { |  | 
| 60 »       »       »       var elems = document.getElementsByTagName("a"); |  | 
| 61 »       »       »       ret = elems[elems.length-1].nodeType; |  | 
| 62 »       »       } |  | 
| 63 »       }); |  | 
| 64 |  | 
| 65 »       test( "getElementsByTagName(*)", function(){ |  | 
| 66 »       »       for ( var i = 0; i < num; i++ ) { |  | 
| 67 »       »       »       var elems = document.getElementsByTagName("*"); |  | 
| 68 »       »       »       ret = elems[elems.length-1].nodeType; |  | 
| 69 »       »       } |  | 
| 70 »       }); |  | 
| 71 |  | 
| 72 »       test( "getElementsByTagName (not in document)", function(){ |  | 
| 73 »       »       for ( var i = 0; i < num; i++ ) { |  | 
| 74 »       »       »       var elems = document.getElementsByTagName("strong"); |  | 
| 75 »       »       »       ret = elems.length == 0; |  | 
| 76 »       »       } |  | 
| 77 »       }); |  | 
| 78 |  | 
| 79 »       test( "getElementsByName", function(){ |  | 
| 80 »       »       for ( var i = 0; i < num * 20; i++ ) { |  | 
| 81 »       »       »       var elems = document.getElementsByName("test" + num); |  | 
| 82 »       »       »       ret = elems[elems.length-1].nodeType; |  | 
| 83 »       »       »       var elems = document.getElementsByName("test" + num); |  | 
| 84 »       »       »       ret = elems[elems.length-1].nodeType; |  | 
| 85 »       »       »       var elems = document.getElementsByName("test" + num); |  | 
| 86 »       »       »       ret = elems[elems.length-1].nodeType; |  | 
| 87 »       »       »       var elems = document.getElementsByName("test" + num); |  | 
| 88 »       »       »       ret = elems[elems.length-1].nodeType; |  | 
| 89 »       »       } |  | 
| 90 »       }); |  | 
| 91 |  | 
| 92 »       test( "getElementsByName (not in document)", function(){ |  | 
| 93 »       »       for ( var i = 0; i < num * 20; i++ ) { |  | 
| 94 »       »       »       ret = document.getElementsByName("test").length == 0; |  | 
| 95 »       »       »       ret = document.getElementsByName("test").length == 0; |  | 
| 96 »       »       »       ret = document.getElementsByName("test").length == 0; |  | 
| 97 »       »       »       ret = document.getElementsByName("test").length == 0; |  | 
| 98 »       »       »       ret = document.getElementsByName("test").length == 0; |  | 
| 99 »       »       } |  | 
| 100 »       }); |  | 
| 101 |  | 
| 102 endTest(); |  | 
| 103 }; |  | 
| 104 </script> |  | 
| 105 </head> | 5 </head> | 
| 106 <body> | 6 <body> | 
| 107   <div class="head"> | 7   <div class="head"> | 
| 108    <p><a href="http://www.w3.org/"><img height=48 alt=W3C src="http://www.w3.org
      /Icons/w3c_home" width=72></a> | 8    <p><a href="http://www.w3.org/"><img height=48 alt=W3C src="http://www.w3.org
      /Icons/w3c_home" width=72></a> | 
| 109 | 9 | 
| 110    <h1 id="title">Selectors</h1> | 10    <h1 id="title">Selectors</h1> | 
| 111 | 11 | 
| 112    <h2>W3C Working Draft 15 December 2005</h2> | 12    <h2>W3C Working Draft 15 December 2005</h2> | 
| 113 | 13 | 
| 114    <dl> | 14    <dl> | 
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 241   obsoleted by other documents at any time. It is inappropriate to | 141   obsoleted by other documents at any time. It is inappropriate to | 
| 242   cite a W3C Working Draft as other than "work in progress". | 142   cite a W3C Working Draft as other than "work in progress". | 
| 243 | 143 | 
| 244   <p>This document may be available in <a | 144   <p>This document may be available in <a | 
| 245   href="http://www.w3.org/Style/css3-selectors-updates/translations">translation
      </a>. | 145   href="http://www.w3.org/Style/css3-selectors-updates/translations">translation
      </a>. | 
| 246   The English version of this specification is the only normative | 146   The English version of this specification is the only normative | 
| 247   version. | 147   version. | 
| 248 | 148 | 
| 249   <div class="subtoc"> | 149   <div class="subtoc"> | 
| 250 | 150 | 
| 251    <h2 id="testF10"><a name=contents>Table of contents</a></h2> | 151    <h2 id="test1"><a name=contents>Table of contents</a></h2> | 
| 252 | 152 | 
| 253    <ul class="toc"> | 153    <ul class="toc"> | 
| 254     <li class="tocline2"><a href="#context">1. Introduction</a> | 154     <li class="tocline2"><a href="#context">1. Introduction</a> | 
| 255      <ul> | 155      <ul> | 
| 256       <li><a href="#dependencies">1.1. Dependencies</a> </li> | 156       <li><a href="#dependencies">1.1. Dependencies</a> </li> | 
| 257       <li><a href="#terminology">1.2. Terminology</a> </li> | 157       <li><a href="#terminology">1.2. Terminology</a> </li> | 
| 258       <li><a href="#changesFromCSS2">1.3. Changes from CSS2</a> </li> | 158       <li><a href="#changesFromCSS2">1.3. Changes from CSS2</a> </li> | 
| 259      </ul> | 159      </ul> | 
| 260     <li class="tocline2"><a href="#selectors">2. Selectors</a> | 160     <li class="tocline2"><a href="#selectors">2. Selectors</a> | 
| 261     <li class="tocline2"><a href="#casesens">3. Case sensitivity</a> | 161     <li class="tocline2"><a href="#casesens">3. Case sensitivity</a> | 
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 332     <li class="tocline2"><a href="#downlevel">11. Namespaces and down-level clie
      nts</a> | 232     <li class="tocline2"><a href="#downlevel">11. Namespaces and down-level clie
      nts</a> | 
| 333     <li class="tocline2"><a href="#profiling">12. Profiles</a> | 233     <li class="tocline2"><a href="#profiling">12. Profiles</a> | 
| 334     <li><a href="#Conformance">13. Conformance and requirements</a> | 234     <li><a href="#Conformance">13. Conformance and requirements</a> | 
| 335     <li><a href="#Tests">14. Tests</a> | 235     <li><a href="#Tests">14. Tests</a> | 
| 336     <li><a href="#ACKS">15. Acknowledgements</a> | 236     <li><a href="#ACKS">15. Acknowledgements</a> | 
| 337     <li class="tocline2"><a href="#references">16. References</a> | 237     <li class="tocline2"><a href="#references">16. References</a> | 
| 338    </ul> | 238    </ul> | 
| 339 | 239 | 
| 340   </div> | 240   </div> | 
| 341 | 241 | 
| 342   <h2 id="testA10"><a name=context>1. Introduction</a></h2> | 242   <h2><a name=context>1. Introduction</a></h2> | 
| 343 | 243 | 
| 344   <h3><a name=dependencies></a>1.1. Dependencies</h3> | 244   <h3><a name=dependencies></a>1.1. Dependencies</h3> | 
| 345 | 245 | 
| 346   <p>Some features of this specification are specific to CSS, or have | 246   <p>Some features of this specification are specific to CSS, or have | 
| 347   particular limitations or rules specific to CSS. In this | 247   particular limitations or rules specific to CSS. In this | 
| 348   specification, these have been described in terms of CSS2.1. <a | 248   specification, these have been described in terms of CSS2.1. <a | 
| 349   href="#refsCSS21">[CSS21]</a></p> | 249   href="#refsCSS21">[CSS21]</a></p> | 
| 350 | 250 | 
| 351   <h3><a name=terminology></a>1.2. Terminology</h3> | 251   <h3><a name=terminology></a>1.2. Terminology</h3> | 
| 352 | 252 | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 387    each specification</li> | 287    each specification</li> | 
| 388 | 288 | 
| 389    <li>Selectors are now a CSS3 Module and an independent | 289    <li>Selectors are now a CSS3 Module and an independent | 
| 390    specification; other specifications can now refer to this document | 290    specification; other specifications can now refer to this document | 
| 391    independently of CSS</li> | 291    independently of CSS</li> | 
| 392 | 292 | 
| 393    <li>the specification now has its own test suite</li> | 293    <li>the specification now has its own test suite</li> | 
| 394 | 294 | 
| 395   </ul> | 295   </ul> | 
| 396 | 296 | 
| 397 <h2 id="testB10"><a name=selectors></a>2. Selectors</h2> | 297 <h2><a name=selectors></a>2. Selectors</h2> | 
| 398 | 298 | 
| 399 <p><em>This section is non-normative, as it merely summarizes the | 299 <p><em>This section is non-normative, as it merely summarizes the | 
| 400 following sections.</em></p> | 300 following sections.</em></p> | 
| 401 | 301 | 
| 402 <p>A Selector represents a structure. This structure can be used as a | 302 <p>A Selector represents a structure. This structure can be used as a | 
| 403 condition (e.g. in a CSS rule) that determines which elements a | 303 condition (e.g. in a CSS rule) that determines which elements a | 
| 404 selector matches in the document tree, or as a flat description of the | 304 selector matches in the document tree, or as a flat description of the | 
| 405 HTML or XML fragment corresponding to that structure.</p> | 305 HTML or XML fragment corresponding to that structure.</p> | 
| 406 | 306 | 
| 407 <p>Selectors may range from simple element names to rich contextual | 307 <p>Selectors may range from simple element names to rich contextual | 
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 701     <td class="pattern">E ~ F</td> | 601     <td class="pattern">E ~ F</td> | 
| 702     <td class="meaning">an F element preceded by an E element</td> | 602     <td class="meaning">an F element preceded by an E element</td> | 
| 703     <td class="described"><a | 603     <td class="described"><a | 
| 704       href="#general-sibling-combinators">General sibling combinator</a></td> | 604       href="#general-sibling-combinators">General sibling combinator</a></td> | 
| 705     <td class="origin">3</td></tr></tbody></table> | 605     <td class="origin">3</td></tr></tbody></table> | 
| 706 | 606 | 
| 707 <p>The meaning of each selector is derived from the table above by | 607 <p>The meaning of each selector is derived from the table above by | 
| 708 prepending "matches" to the contents of each cell in the "Meaning" | 608 prepending "matches" to the contents of each cell in the "Meaning" | 
| 709 column.</p> | 609 column.</p> | 
| 710 | 610 | 
| 711 <h2 id="testC10"><a name=casesens>3. Case sensitivity</a></h2> | 611 <h2><a name=casesens>3. Case sensitivity</a></h2> | 
| 712 | 612 | 
| 713 <p>The case sensitivity of document language element names, attribute | 613 <p>The case sensitivity of document language element names, attribute | 
| 714 names, and attribute values in selectors depends on the document | 614 names, and attribute values in selectors depends on the document | 
| 715 language. For example, in HTML, element names are case-insensitive, | 615 language. For example, in HTML, element names are case-insensitive, | 
| 716 but in XML, they are case-sensitive.</p> | 616 but in XML, they are case-sensitive.</p> | 
| 717 | 617 | 
| 718 <h2 id="testD10"><a name=selector-syntax>4. Selector syntax</a></h2> | 618 <h2><a name=selector-syntax>4. Selector syntax</a></h2> | 
| 719 | 619 | 
| 720 <p>A <dfn><a name=selector>selector</a></dfn> is a chain of one | 620 <p>A <dfn><a name=selector>selector</a></dfn> is a chain of one | 
| 721 or more <a href="#sequence">sequences of simple selectors</a> | 621 or more <a href="#sequence">sequences of simple selectors</a> | 
| 722 separated by <a href="#combinators">combinators</a>.</p> | 622 separated by <a href="#combinators">combinators</a>.</p> | 
| 723 | 623 | 
| 724 <p>A <dfn><a name=sequence>sequence of simple selectors</a></dfn> | 624 <p>A <dfn><a name=sequence>sequence of simple selectors</a></dfn> | 
| 725 is a chain of <a href="#simple-selectors-dfn">simple selectors</a> | 625 is a chain of <a href="#simple-selectors-dfn">simple selectors</a> | 
| 726 that are not separated by a <a href="#combinators">combinator</a>. It | 626 that are not separated by a <a href="#combinators">combinator</a>. It | 
| 727 always begins with a <a href="#type-selectors">type selector</a> or a | 627 always begins with a <a href="#type-selectors">type selector</a> or a | 
| 728 <a href="#universal-selector">universal selector</a>. No other type | 628 <a href="#universal-selector">universal selector</a>. No other type | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
| 756 represents any element satisfying its requirements. Prepending another | 656 represents any element satisfying its requirements. Prepending another | 
| 757 sequence of simple selectors and a combinator to a sequence imposes | 657 sequence of simple selectors and a combinator to a sequence imposes | 
| 758 additional matching constraints, so the subjects of a selector are | 658 additional matching constraints, so the subjects of a selector are | 
| 759 always a subset of the elements represented by the last sequence of | 659 always a subset of the elements represented by the last sequence of | 
| 760 simple selectors.</p> | 660 simple selectors.</p> | 
| 761 | 661 | 
| 762 <p>An empty selector, containing no sequence of simple selectors and | 662 <p>An empty selector, containing no sequence of simple selectors and | 
| 763 no pseudo-element, is an <a href="#Conformance">invalid | 663 no pseudo-element, is an <a href="#Conformance">invalid | 
| 764 selector</a>.</p> | 664 selector</a>.</p> | 
| 765 | 665 | 
| 766 <h2 id="testE10"><a name=grouping>5. Groups of selectors</a></h2> | 666 <h2><a name=grouping>5. Groups of selectors</a></h2> | 
| 767 | 667 | 
| 768 <p>When several selectors share the same declarations, they may be | 668 <p>When several selectors share the same declarations, they may be | 
| 769 grouped into a comma-separated list. (A comma is U+002C.)</p> | 669 grouped into a comma-separated list. (A comma is U+002C.)</p> | 
| 770 | 670 | 
| 771 <div class="example"> | 671 <div class="example"> | 
| 772 <p>CSS examples:</p> | 672 <p>CSS examples:</p> | 
| 773 <p>In this example, we condense three rules with identical | 673 <p>In this example, we condense three rules with identical | 
| 774 declarations into one. Thus,</p> | 674 declarations into one. Thus,</p> | 
| 775 <pre>h1 { font-family: sans-serif } | 675 <pre>h1 { font-family: sans-serif } | 
| 776 h2 { font-family: sans-serif } | 676 h2 { font-family: sans-serif } | 
| (...skipping 2065 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2842 | 2742 | 
| 2843 <p>namespaces</td></tr> | 2743 <p>namespaces</td></tr> | 
| 2844   <tr> | 2744   <tr> | 
| 2845     <th>Excludes</th> | 2745     <th>Excludes</th> | 
| 2846     <td>non-accepted pseudo-classes<br>pseudo-elements<br></td></tr> | 2746     <td>non-accepted pseudo-classes<br>pseudo-elements<br></td></tr> | 
| 2847   <tr> | 2747   <tr> | 
| 2848     <th>Extra constraints</th> | 2748     <th>Extra constraints</th> | 
| 2849     <td>some selectors and combinators are not allowed in fragment | 2749     <td>some selectors and combinators are not allowed in fragment | 
| 2850       descriptions on the right side of STTS declarations.</td></tr></tbody></ta
      ble> | 2750       descriptions on the right side of STTS declarations.</td></tr></tbody></ta
      ble> | 
| 2851 <form> | 2751 <form> | 
| 2852 <input type="text" name="test10"/> | 2752 <input type="text" name="test1"/> | 
| 2853 <input type="text" name="foo"/> | 2753 <input type="text" name="foo"/> | 
| 2854 <input type="text" name="foo"/> | 2754 <input type="text" name="foo"/> | 
| 2855 <input type="text" name="foo"/> | 2755 <input type="text" name="foo"/> | 
| 2856 <input type="text" name="foo"/> | 2756 <input type="text" name="foo"/> | 
| 2857 <input type="text" name="foo"/> | 2757 <input type="text" name="foo"/> | 
| 2858 <input type="text" name="foo"/> | 2758 <input type="text" name="foo"/> | 
| 2859 <input type="text" name="foo"/> | 2759 <input type="text" name="foo"/> | 
| 2860 <input type="text" name="foo"/> | 2760 <input type="text" name="foo"/> | 
| 2861 <input type="text" name="foo"/> | 2761 <input type="text" name="foo"/> | 
| 2862 <input type="text" name="foo"/> | 2762 <input type="text" name="foo"/> | 
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2902 which is not allowed at the current parsing point. | 2802 which is not allowed at the current parsing point. | 
| 2903 | 2803 | 
| 2904 <p>User agents must observe the rules for handling parsing errors: | 2804 <p>User agents must observe the rules for handling parsing errors: | 
| 2905 <ul> | 2805 <ul> | 
| 2906   <li>a simple selector containing an undeclared namespace prefix is invalid</li
      > | 2806   <li>a simple selector containing an undeclared namespace prefix is invalid</li
      > | 
| 2907   <li>a selector containing an invalid simple selector, an invalid combinator | 2807   <li>a selector containing an invalid simple selector, an invalid combinator | 
| 2908     or an invalid token is invalid. </li> | 2808     or an invalid token is invalid. </li> | 
| 2909   <li>a group of selectors containing an invalid selector is invalid.</li> | 2809   <li>a group of selectors containing an invalid selector is invalid.</li> | 
| 2910 </ul> | 2810 </ul> | 
| 2911 | 2811 | 
| 2912 <p class="foo test10 bar">Specifications reusing Selectors must define how to ha
      ndle parsing | 2812 <p class="foo test1 bar">Specifications reusing Selectors must define how to han
      dle parsing | 
| 2913 errors. (In the case of CSS, the entire rule in which the selector is | 2813 errors. (In the case of CSS, the entire rule in which the selector is | 
| 2914 used is dropped.)</p> | 2814 used is dropped.)</p> | 
| 2915 | 2815 | 
| 2916 <!-- Apparently all these references are out of date: | 2816 <!-- Apparently all these references are out of date: | 
| 2917 <p>Implementations of this specification must behave as | 2817 <p>Implementations of this specification must behave as | 
| 2918 "recipients of text data" as defined by <a href="#refsCWWW">[CWWW]</a> | 2818 "recipients of text data" as defined by <a href="#refsCWWW">[CWWW]</a> | 
| 2919 when parsing selectors and attempting matches. (In particular, | 2819 when parsing selectors and attempting matches. (In particular, | 
| 2920 implementations must assume the data is normalized and must not | 2820 implementations must assume the data is normalized and must not | 
| 2921 normalize it.) Normative rules for matching strings are defined in | 2821 normalize it.) Normative rules for matching strings are defined in | 
| 2922 <a href="#refsCWWW">[CWWW]</a> and <a | 2822 <a href="#refsCWWW">[CWWW]</a> and <a | 
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 2991   <dt>[XMLNAMES] | 2891   <dt>[XMLNAMES] | 
| 2992   <dd><a name="refsXMLNAMES"></a> Tim Bray, Dave Hollander, Andrew Layman, edito
      rs; "<cite>Namespaces in XML</cite>", W3C Recommendation, 14 January 1999 | 2892   <dd><a name="refsXMLNAMES"></a> Tim Bray, Dave Hollander, Andrew Layman, edito
      rs; "<cite>Namespaces in XML</cite>", W3C Recommendation, 14 January 1999 | 
| 2993   <dd>(<a href="http://www.w3.org/TR/REC-xml-names/"><code>http://www.w3.org/TR/
      REC-xml-names/</code></a>) | 2893   <dd>(<a href="http://www.w3.org/TR/REC-xml-names/"><code>http://www.w3.org/TR/
      REC-xml-names/</code></a>) | 
| 2994 | 2894 | 
| 2995   <dt>[YACC] | 2895   <dt>[YACC] | 
| 2996   <dd><a name="refsYACC"></a> S. C. Johnson; "<cite>YACC — Yet another com
      piler compiler</cite>", Technical Report, Murray Hill, 1975 | 2896   <dd><a name="refsYACC"></a> S. C. Johnson; "<cite>YACC — Yet another com
      piler compiler</cite>", Technical Report, Murray Hill, 1975 | 
| 2997 | 2897 | 
| 2998 </dl> | 2898 </dl> | 
| 2999 </body> | 2899 </body> | 
| 3000 </html> | 2900 </html> | 
| OLD | NEW | 
|---|