lsd_rails 0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (991) hide show
  1. data/Packages/Sheet.js/Demo/index.html +78 -0
  2. data/Packages/Sheet.js/Demo/pp.css +69 -0
  3. data/Packages/Sheet.js/Demo/subtlegradient-jslib.js +450 -0
  4. data/Packages/Sheet.js/LICENSE +21 -0
  5. data/Packages/Sheet.js/README.md +59 -0
  6. data/Packages/Sheet.js/Source/Sheet.DOM.js +65 -0
  7. data/Packages/Sheet.js/Source/Sheet.js +80 -0
  8. data/Packages/Sheet.js/Source/SheetParser.CSS.js +194 -0
  9. data/Packages/Sheet.js/Source/SheetParser.Property.js +227 -0
  10. data/Packages/Sheet.js/Source/SheetParser.Styles.js +115 -0
  11. data/Packages/Sheet.js/Source/SheetParser.Value.js +114 -0
  12. data/Packages/Sheet.js/Source/sg-regex-tools.js +42 -0
  13. data/Packages/Sheet.js/Test/DOM-styleSheet.api.js +404 -0
  14. data/Packages/Sheet.js/Test/Sheet.test.js +25 -0
  15. data/Packages/Sheet.js/Test/SheetParser.CSS.RegExp.test.js +108 -0
  16. data/Packages/Sheet.js/Test/SheetParser.Property.test.js +230 -0
  17. data/Packages/Sheet.js/Test/SheetParser.Value.test.js +94 -0
  18. data/Packages/Sheet.js/Test/all-types.mock.css +103 -0
  19. data/Packages/Sheet.js/Test/document.styleSheets.test.js +7 -0
  20. data/Packages/Sheet.js/Test/index.html +12 -0
  21. data/Packages/Sheet.js/Test/lib/qunit/package.json +21 -0
  22. data/Packages/Sheet.js/Test/lib/qunit/qunit/qunit.css +196 -0
  23. data/Packages/Sheet.js/Test/lib/qunit/qunit/qunit.js +1303 -0
  24. data/Packages/Sheet.js/Test/lib/sg-assert-helpers.js +93 -0
  25. data/Packages/Sheet.js/Test/lib/sg-qunit-testrunner.js +40 -0
  26. data/Packages/Sheet.js/Test/lib/sg-testrunner.js +49 -0
  27. data/Packages/Sheet.js/Test/properties.html +39 -0
  28. data/Packages/Sheet.js/Test/run.html +43 -0
  29. data/Packages/Sheet.js/Test/run.js +10 -0
  30. data/Packages/Sheet.js/Test/test-browser.html +47 -0
  31. data/Packages/Sheet.js/Test/values.html +38 -0
  32. data/Packages/Sheet.js/package.json +59 -0
  33. data/Packages/Sheet.js/test-all +13 -0
  34. data/Packages/art/Docs/ART/ART.Group.md +106 -0
  35. data/Packages/art/Docs/ART/ART.Path.md +167 -0
  36. data/Packages/art/Docs/ART/ART.Shape.md +106 -0
  37. data/Packages/art/Docs/ART/ART.Transform.md +148 -0
  38. data/Packages/art/Docs/ART/ART.md +113 -0
  39. data/Packages/art/Docs/Modes/ART.Base.md +10 -0
  40. data/Packages/art/Docs/Modes/ART.SVG.md +9 -0
  41. data/Packages/art/Docs/Modes/ART.VML.md +12 -0
  42. data/Packages/art/Docs/Shapes/ART.Font.md +15 -0
  43. data/Packages/art/Docs/Shapes/ART.Shapes.md +63 -0
  44. data/Packages/art/Docs/Shapes/ART.Text.md +14 -0
  45. data/Packages/art/Fonts/Moderna.Bold.js +31 -0
  46. data/Packages/art/Fonts/Moderna.js +31 -0
  47. data/Packages/art/README.md +3 -0
  48. data/Packages/art/Source/ART.Base.js +33 -0
  49. data/Packages/art/Source/ART.Font.js +89 -0
  50. data/Packages/art/Source/ART.Path.js +440 -0
  51. data/Packages/art/Source/ART.SVG.js +593 -0
  52. data/Packages/art/Source/ART.Shapes.js +136 -0
  53. data/Packages/art/Source/ART.VML.js +772 -0
  54. data/Packages/art/Source/ART.js +202 -0
  55. data/Packages/art/license.txt +21 -0
  56. data/Packages/art/package.yml +24 -0
  57. data/Packages/art-morph/Demos/index.html +18 -0
  58. data/Packages/art-morph/Demos/morph.js +30 -0
  59. data/Packages/art-morph/README.md +3 -0
  60. data/Packages/art-morph/Source/ART.Path.Morph.js +76 -0
  61. data/Packages/art-morph/license.txt +21 -0
  62. data/Packages/lsd/CHANGELOG +152 -0
  63. data/Packages/lsd/README.md +233 -0
  64. data/Packages/lsd/Source/ART/ART.Element.js +51 -0
  65. data/Packages/lsd/Source/ART/ART.Glyphs.js +51 -0
  66. data/Packages/lsd/Source/ART/ART.SVG.js +122 -0
  67. data/Packages/lsd/Source/ART/ART.Shape.Arrow.js +104 -0
  68. data/Packages/lsd/Source/ART/ART.Shape.Ellipse.js +42 -0
  69. data/Packages/lsd/Source/ART/ART.Shape.Flower.js +71 -0
  70. data/Packages/lsd/Source/ART/ART.Shape.Rectangle.js +67 -0
  71. data/Packages/lsd/Source/ART/ART.Shape.Star.js +57 -0
  72. data/Packages/lsd/Source/ART/ART.js +41 -0
  73. data/Packages/lsd/Source/Action/Clone.js +36 -0
  74. data/Packages/lsd/Source/Action/Counter.js +98 -0
  75. data/Packages/lsd/Source/Action/Create.js +26 -0
  76. data/Packages/lsd/Source/Action/Delete.js +32 -0
  77. data/Packages/lsd/Source/Action/Display.js +50 -0
  78. data/Packages/lsd/Source/Action/Edit.js +138 -0
  79. data/Packages/lsd/Source/Action/Focus.js +29 -0
  80. data/Packages/lsd/Source/Action/History.js +27 -0
  81. data/Packages/lsd/Source/Action/Invoke.js +34 -0
  82. data/Packages/lsd/Source/Action/List.js +40 -0
  83. data/Packages/lsd/Source/Action/Set.js +36 -0
  84. data/Packages/lsd/Source/Action/State.js +33 -0
  85. data/Packages/lsd/Source/Action/Submit.js +60 -0
  86. data/Packages/lsd/Source/Action/Toggle.js +41 -0
  87. data/Packages/lsd/Source/Action/Update.js +79 -0
  88. data/Packages/lsd/Source/Action.js +169 -0
  89. data/Packages/lsd/Source/Behavior.js +68 -0
  90. data/Packages/lsd/Source/Command.js +135 -0
  91. data/Packages/lsd/Source/Document.js +188 -0
  92. data/Packages/lsd/Source/Interpolation.js +103 -0
  93. data/Packages/lsd/Source/LSD.js +163 -0
  94. data/Packages/lsd/Source/Layer/Color.js +43 -0
  95. data/Packages/lsd/Source/Layer/Offset.js +37 -0
  96. data/Packages/lsd/Source/Layer/Position.js +35 -0
  97. data/Packages/lsd/Source/Layer/Radius.js +39 -0
  98. data/Packages/lsd/Source/Layer/Scale.js +36 -0
  99. data/Packages/lsd/Source/Layer/Shadow.Blur.js +41 -0
  100. data/Packages/lsd/Source/Layer/Shadow.Inset.js +99 -0
  101. data/Packages/lsd/Source/Layer/Shadow.Native.js +35 -0
  102. data/Packages/lsd/Source/Layer/Shadow.Onion.js +105 -0
  103. data/Packages/lsd/Source/Layer/Shadow.js +46 -0
  104. data/Packages/lsd/Source/Layer/Shape.js +56 -0
  105. data/Packages/lsd/Source/Layer/Size.js +38 -0
  106. data/Packages/lsd/Source/Layer/Stroke.js +61 -0
  107. data/Packages/lsd/Source/Layer.js +212 -0
  108. data/Packages/lsd/Source/Layout.js +445 -0
  109. data/Packages/lsd/Source/Mixin/Animation.js +77 -0
  110. data/Packages/lsd/Source/Mixin/Choice.js +62 -0
  111. data/Packages/lsd/Source/Mixin/Command.js +98 -0
  112. data/Packages/lsd/Source/Mixin/ContentEditable.js +124 -0
  113. data/Packages/lsd/Source/Mixin/Draggable.js +113 -0
  114. data/Packages/lsd/Source/Mixin/Fieldset.js +235 -0
  115. data/Packages/lsd/Source/Mixin/Focusable.js +122 -0
  116. data/Packages/lsd/Source/Mixin/Invokable.js +83 -0
  117. data/Packages/lsd/Source/Mixin/List.js +99 -0
  118. data/Packages/lsd/Source/Mixin/Placeholder.js +77 -0
  119. data/Packages/lsd/Source/Mixin/Request.js +120 -0
  120. data/Packages/lsd/Source/Mixin/Resizable.js +182 -0
  121. data/Packages/lsd/Source/Mixin/Resource.js +81 -0
  122. data/Packages/lsd/Source/Mixin/Root.js +41 -0
  123. data/Packages/lsd/Source/Mixin/Scrollable.js +69 -0
  124. data/Packages/lsd/Source/Mixin/Sortable.js +134 -0
  125. data/Packages/lsd/Source/Mixin/Submittable.js +64 -0
  126. data/Packages/lsd/Source/Mixin/Target.js +102 -0
  127. data/Packages/lsd/Source/Mixin/Touchable.js +41 -0
  128. data/Packages/lsd/Source/Mixin/Unselectable.js +35 -0
  129. data/Packages/lsd/Source/Mixin/Uploader.js +277 -0
  130. data/Packages/lsd/Source/Mixin/Validity.js +102 -0
  131. data/Packages/lsd/Source/Mixin/Value.js +160 -0
  132. data/Packages/lsd/Source/Module/Accessories/Actions.js +79 -0
  133. data/Packages/lsd/Source/Module/Accessories/Attributes.js +192 -0
  134. data/Packages/lsd/Source/Module/Accessories/Chain.js +232 -0
  135. data/Packages/lsd/Source/Module/Accessories/Dimensions.js +114 -0
  136. data/Packages/lsd/Source/Module/Accessories/Element.js +233 -0
  137. data/Packages/lsd/Source/Module/Accessories/Events.js +352 -0
  138. data/Packages/lsd/Source/Module/Accessories/Options.js +112 -0
  139. data/Packages/lsd/Source/Module/Accessories/Shortcuts.js +46 -0
  140. data/Packages/lsd/Source/Module/Accessories/States.js +28 -0
  141. data/Packages/lsd/Source/Module/Accessories/Styles.js +230 -0
  142. data/Packages/lsd/Source/Module/Accessories/Tag.js +145 -0
  143. data/Packages/lsd/Source/Module/Accessories.js +47 -0
  144. data/Packages/lsd/Source/Module/Ambient/Allocations.js +184 -0
  145. data/Packages/lsd/Source/Module/Ambient/Container.js +56 -0
  146. data/Packages/lsd/Source/Module/Ambient/DOM.js +355 -0
  147. data/Packages/lsd/Source/Module/Ambient/Expectations.js +358 -0
  148. data/Packages/lsd/Source/Module/Ambient/Layout.js +97 -0
  149. data/Packages/lsd/Source/Module/Ambient/Mutations.js +101 -0
  150. data/Packages/lsd/Source/Module/Ambient/Proxies.js +84 -0
  151. data/Packages/lsd/Source/Module/Ambient/Relations.js +99 -0
  152. data/Packages/lsd/Source/Module/Ambient/Selectors.js +136 -0
  153. data/Packages/lsd/Source/Module/Ambient.js +39 -0
  154. data/Packages/lsd/Source/Module/Graphics/Layers.js +177 -0
  155. data/Packages/lsd/Source/Module/Graphics/Render.js +96 -0
  156. data/Packages/lsd/Source/Module/Graphics/Shape.js +56 -0
  157. data/Packages/lsd/Source/Module/Graphics.js +30 -0
  158. data/Packages/lsd/Source/Relation.js +397 -0
  159. data/Packages/lsd/Source/Sheet.js +324 -0
  160. data/Packages/lsd/Source/Trait/Date.js +66 -0
  161. data/Packages/lsd/Source/Trait/Input.js +65 -0
  162. data/Packages/lsd/Source/Trait/Menu.js +21 -0
  163. data/Packages/lsd/Source/Trait/Slider.js +93 -0
  164. data/Packages/lsd/Source/Type.js +92 -0
  165. data/Packages/lsd/Source/Widget.js +60 -0
  166. data/Packages/lsd/UNLICENSE +24 -0
  167. data/Packages/lsd/package.yml +114 -0
  168. data/Packages/lsd-mobile/Source/Body/Dialog.js +57 -0
  169. data/Packages/lsd-mobile/Source/Body/Page.js +50 -0
  170. data/Packages/lsd-mobile/Source/Body.js +30 -0
  171. data/Packages/lsd-mobile/Source/Dialog.js +0 -0
  172. data/Packages/lsd-mobile/Source/Document.js +78 -0
  173. data/Packages/lsd-mobile/Source/Input/Date.js +119 -0
  174. data/Packages/lsd-mobile/Source/Input.js +24 -0
  175. data/Packages/lsd-mobile/Source/Mobile.js +27 -0
  176. data/Packages/lsd-mobile/package.yml +15 -0
  177. data/Packages/lsd-native/README.md +0 -0
  178. data/Packages/lsd-native/Source/Input/Checkbox.js +42 -0
  179. data/Packages/lsd-native/Source/Input/Date.js +33 -0
  180. data/Packages/lsd-native/Source/Input/File.js +23 -0
  181. data/Packages/lsd-native/Source/Input/Hidden.js +23 -0
  182. data/Packages/lsd-native/Source/Input/Password.js +29 -0
  183. data/Packages/lsd-native/Source/Input/Radio.js +42 -0
  184. data/Packages/lsd-native/Source/Input/Search.js +23 -0
  185. data/Packages/lsd-native/Source/Input.js +48 -0
  186. data/Packages/lsd-native/Source/Select.js +29 -0
  187. data/Packages/lsd-native/Source/Textarea.js +27 -0
  188. data/Packages/lsd-native/package.yml +18 -0
  189. data/Packages/lsd-specs/Compiled/includes.js +217 -0
  190. data/Packages/lsd-specs/Configuration.js +124 -0
  191. data/Packages/lsd-specs/compile.sh +1 -0
  192. data/Packages/lsd-specs/index.html +26 -0
  193. data/Packages/lsd-specs/lsd/Action/Counter.js +35 -0
  194. data/Packages/lsd-specs/lsd/Layout.js +146 -0
  195. data/Packages/lsd-specs/lsd/Module/Accessories/Attributes.js +68 -0
  196. data/Packages/lsd-specs/lsd/Module/Accessories/Chain.js +385 -0
  197. data/Packages/lsd-specs/lsd/Module/Accessories/Dimensions.js +53 -0
  198. data/Packages/lsd-specs/lsd/Module/Accessories/Element.js +112 -0
  199. data/Packages/lsd-specs/lsd/Module/Accessories/Events.js +151 -0
  200. data/Packages/lsd-specs/lsd/Module/Accessories/Options.js +36 -0
  201. data/Packages/lsd-specs/lsd/Module/Accessories/Shortcuts.js +0 -0
  202. data/Packages/lsd-specs/lsd/Module/Accessories/States.js +0 -0
  203. data/Packages/lsd-specs/lsd/Module/Accessories/Styles.js +14 -0
  204. data/Packages/lsd-specs/lsd/Module/Accessories/Tag.js +84 -0
  205. data/Packages/lsd-specs/lsd/Module/Ambient/DOM.js +394 -0
  206. data/Packages/lsd-specs/lsd/Module/Ambient/Expectations.js +199 -0
  207. data/Packages/lsd-specs/lsd/Module/Ambient/Layout.js +0 -0
  208. data/Packages/lsd-specs/lsd/Module/Ambient/Relations.js +7 -0
  209. data/Packages/lsd-specs/lsd/Module/Behavior/Target.Parser.js +123 -0
  210. data/Packages/lsd-specs/lsd/Module/Behavior/Target.js +0 -0
  211. data/Packages/lsd-specs/lsd/Relation.js +428 -0
  212. data/Packages/lsd-specs/lsd/Trait/Dimensions.js +216 -0
  213. data/Packages/lsd-specs/lsd/Trait/Layers.js +66 -0
  214. data/Packages/lsd-specs/lsd/Type.js +27 -0
  215. data/Packages/lsd-specs/outdated/Focus.js +137 -0
  216. data/Packages/lsd-widgets/Source/Body/Dialog.js +68 -0
  217. data/Packages/lsd-widgets/Source/Body/Page.js +38 -0
  218. data/Packages/lsd-widgets/Source/Body.js +27 -0
  219. data/Packages/lsd-widgets/Source/Button.js +34 -0
  220. data/Packages/lsd-widgets/Source/Form.js +43 -0
  221. data/Packages/lsd-widgets/Source/Input/Checkbox.js +31 -0
  222. data/Packages/lsd-widgets/Source/Input/Date.js +43 -0
  223. data/Packages/lsd-widgets/Source/Input/File.js +63 -0
  224. data/Packages/lsd-widgets/Source/Input/HTML.js +54 -0
  225. data/Packages/lsd-widgets/Source/Input/Radio.js +31 -0
  226. data/Packages/lsd-widgets/Source/Input/Range.js +61 -0
  227. data/Packages/lsd-widgets/Source/Input/Submit.js +55 -0
  228. data/Packages/lsd-widgets/Source/Input.js +62 -0
  229. data/Packages/lsd-widgets/Source/Label.js +66 -0
  230. data/Packages/lsd-widgets/Source/Menu/Context.js +39 -0
  231. data/Packages/lsd-widgets/Source/Menu/List.js +49 -0
  232. data/Packages/lsd-widgets/Source/Menu/Toolbar.Menu.js +65 -0
  233. data/Packages/lsd-widgets/Source/Menu/Toolbar.js +30 -0
  234. data/Packages/lsd-widgets/Source/Menu.js +38 -0
  235. data/Packages/lsd-widgets/Source/Progress.js +45 -0
  236. data/Packages/lsd-widgets/Source/Scrollbar.js +131 -0
  237. data/Packages/lsd-widgets/Source/Select.js +81 -0
  238. data/Packages/lsd-widgets/Source/Table/Calendar.js +127 -0
  239. data/Packages/lsd-widgets/Source/Table.js +100 -0
  240. data/Packages/lsd-widgets/Source/Textarea.js +32 -0
  241. data/Packages/lsd-widgets/package.yml +32 -0
  242. data/Packages/mootools-color/README.md +4 -0
  243. data/Packages/mootools-color/Source/Color.js +167 -0
  244. data/Packages/mootools-color/license.txt +21 -0
  245. data/Packages/mootools-color/package.yml +20 -0
  246. data/Packages/mootools-core/Docs/Browser/Browser.md +102 -0
  247. data/Packages/mootools-core/Docs/Class/Class.Extras.md +453 -0
  248. data/Packages/mootools-core/Docs/Class/Class.md +133 -0
  249. data/Packages/mootools-core/Docs/Core/Core.md +385 -0
  250. data/Packages/mootools-core/Docs/Element/Element.Dimensions.md +235 -0
  251. data/Packages/mootools-core/Docs/Element/Element.Event.md +330 -0
  252. data/Packages/mootools-core/Docs/Element/Element.Style.md +121 -0
  253. data/Packages/mootools-core/Docs/Element/Element.md +1924 -0
  254. data/Packages/mootools-core/Docs/Fx/Fx.CSS.md +12 -0
  255. data/Packages/mootools-core/Docs/Fx/Fx.Morph.md +225 -0
  256. data/Packages/mootools-core/Docs/Fx/Fx.Transitions.md +157 -0
  257. data/Packages/mootools-core/Docs/Fx/Fx.Tween.md +303 -0
  258. data/Packages/mootools-core/Docs/Fx/Fx.md +172 -0
  259. data/Packages/mootools-core/Docs/Intro.md +37 -0
  260. data/Packages/mootools-core/Docs/Request/Request.HTML.md +179 -0
  261. data/Packages/mootools-core/Docs/Request/Request.JSON.md +61 -0
  262. data/Packages/mootools-core/Docs/Request/Request.md +461 -0
  263. data/Packages/mootools-core/Docs/Types/Array.md +797 -0
  264. data/Packages/mootools-core/Docs/Types/Event.md +204 -0
  265. data/Packages/mootools-core/Docs/Types/Function.md +409 -0
  266. data/Packages/mootools-core/Docs/Types/Number.md +212 -0
  267. data/Packages/mootools-core/Docs/Types/Object.md +599 -0
  268. data/Packages/mootools-core/Docs/Types/String.md +400 -0
  269. data/Packages/mootools-core/Docs/Utilities/Cookie.md +95 -0
  270. data/Packages/mootools-core/Docs/Utilities/DOMReady.md +21 -0
  271. data/Packages/mootools-core/Docs/Utilities/JSON.md +56 -0
  272. data/Packages/mootools-core/Docs/Utilities/Swiff.md +90 -0
  273. data/Packages/mootools-core/Docs/license.md +8 -0
  274. data/Packages/mootools-core/README.md +6 -0
  275. data/Packages/mootools-core/Source/Browser/Browser.js +264 -0
  276. data/Packages/mootools-core/Source/Class/Class.Extras.js +121 -0
  277. data/Packages/mootools-core/Source/Class/Class.js +115 -0
  278. data/Packages/mootools-core/Source/Core/Core.js +511 -0
  279. data/Packages/mootools-core/Source/Element/Element.Dimensions.js +283 -0
  280. data/Packages/mootools-core/Source/Element/Element.Event.js +175 -0
  281. data/Packages/mootools-core/Source/Element/Element.Style.js +184 -0
  282. data/Packages/mootools-core/Source/Element/Element.js +862 -0
  283. data/Packages/mootools-core/Source/Fx/Fx.CSS.js +149 -0
  284. data/Packages/mootools-core/Source/Fx/Fx.Morph.js +77 -0
  285. data/Packages/mootools-core/Source/Fx/Fx.Transitions.js +113 -0
  286. data/Packages/mootools-core/Source/Fx/Fx.Tween.js +103 -0
  287. data/Packages/mootools-core/Source/Fx/Fx.js +179 -0
  288. data/Packages/mootools-core/Source/Request/Request.HTML.js +88 -0
  289. data/Packages/mootools-core/Source/Request/Request.JSON.js +46 -0
  290. data/Packages/mootools-core/Source/Request/Request.js +278 -0
  291. data/Packages/mootools-core/Source/Slick/Slick.Finder.js +970 -0
  292. data/Packages/mootools-core/Source/Slick/Slick.Parser.js +230 -0
  293. data/Packages/mootools-core/Source/Types/Array.js +178 -0
  294. data/Packages/mootools-core/Source/Types/Event.js +135 -0
  295. data/Packages/mootools-core/Source/Types/Function.js +118 -0
  296. data/Packages/mootools-core/Source/Types/Number.js +52 -0
  297. data/Packages/mootools-core/Source/Types/Object.js +209 -0
  298. data/Packages/mootools-core/Source/Types/String.js +82 -0
  299. data/Packages/mootools-core/Source/Utilities/Cookie.js +74 -0
  300. data/Packages/mootools-core/Source/Utilities/DOMReady.js +105 -0
  301. data/Packages/mootools-core/Source/Utilities/JSON.js +81 -0
  302. data/Packages/mootools-core/Source/Utilities/Swiff.js +113 -0
  303. data/Packages/mootools-core/Source/license.txt +21 -0
  304. data/Packages/mootools-core/build +40 -0
  305. data/Packages/mootools-core/package.yml +43 -0
  306. data/Packages/mootools-custom-event/Demos/index.html +147 -0
  307. data/Packages/mootools-custom-event/Demos/mootools-core.js +3183 -0
  308. data/Packages/mootools-custom-event/Demos/style.css +44 -0
  309. data/Packages/mootools-custom-event/LICENSE +24 -0
  310. data/Packages/mootools-custom-event/README.md +128 -0
  311. data/Packages/mootools-custom-event/Source/Element.defineCustomEvent.js +90 -0
  312. data/Packages/mootools-custom-event/package.yml +20 -0
  313. data/Packages/mootools-ext/Examples/Class.Includes.js +47 -0
  314. data/Packages/mootools-ext/Examples/Class.Macros.js +69 -0
  315. data/Packages/mootools-ext/Examples/Class.States.js +20 -0
  316. data/Packages/mootools-ext/Examples/_includes.haml +17 -0
  317. data/Packages/mootools-ext/Examples/examples.js +8 -0
  318. data/Packages/mootools-ext/Examples/index.haml +22 -0
  319. data/Packages/mootools-ext/README.md +8 -0
  320. data/Packages/mootools-ext/Rakefile +5 -0
  321. data/Packages/mootools-ext/Source/Core/Class.Binds.Remover.js +21 -0
  322. data/Packages/mootools-ext/Source/Core/Class.Includes.js +68 -0
  323. data/Packages/mootools-ext/Source/Core/Class.Macros.js +90 -0
  324. data/Packages/mootools-ext/Source/Core/Class.Mixin.js +89 -0
  325. data/Packages/mootools-ext/Source/Core/Class.Shortcuts.js +124 -0
  326. data/Packages/mootools-ext/Source/Core/Class.States.js +95 -0
  327. data/Packages/mootools-ext/Source/Drag/Drag.Limits.js +42 -0
  328. data/Packages/mootools-ext/Source/Drag/Slider.js +33 -0
  329. data/Packages/mootools-ext/Source/Drag/Sortables.Delegation.js +64 -0
  330. data/Packages/mootools-ext/Source/Element/Element.Selection.js +45 -0
  331. data/Packages/mootools-ext/Source/Element/Element.from.js +50 -0
  332. data/Packages/mootools-ext/Source/Element/Element.js +47 -0
  333. data/Packages/mootools-ext/Source/Element/Element.onDispose.js +36 -0
  334. data/Packages/mootools-ext/Source/Element/Events/Input.js +23 -0
  335. data/Packages/mootools-ext/Source/Element/Events/Keypress.js +65 -0
  336. data/Packages/mootools-ext/Source/Element/Properties/BorderRadius.js +41 -0
  337. data/Packages/mootools-ext/Source/Element/Properties/BoxShadow.js +61 -0
  338. data/Packages/mootools-ext/Source/Element/Properties/Data.js +32 -0
  339. data/Packages/mootools-ext/Source/Element/Properties/Item.js +210 -0
  340. data/Packages/mootools-ext/Source/Element/Properties/UserSelect.js +32 -0
  341. data/Packages/mootools-ext/Source/Element/Properties/Widget.js +32 -0
  342. data/Packages/mootools-ext/Source/Request/Request.Auto.js +38 -0
  343. data/Packages/mootools-ext/Source/Request/Request.Form.js +108 -0
  344. data/Packages/mootools-ext/Source/Request/Request.Headers.js +41 -0
  345. data/Packages/mootools-ext/Source/Request/Request.Statuses.js +95 -0
  346. data/Packages/mootools-ext/Source/Types/Event.js +336 -0
  347. data/Packages/mootools-ext/Source/Types/FastArray.js +74 -0
  348. data/Packages/mootools-ext/Source/Types/Object.js +34 -0
  349. data/Packages/mootools-ext/Source/Types/String.js +33 -0
  350. data/Packages/mootools-ext/package.yml +45 -0
  351. data/Packages/mootools-history/Demos/demo.css +14 -0
  352. data/Packages/mootools-history/Demos/demo.js +66 -0
  353. data/Packages/mootools-history/Demos/index.html +32 -0
  354. data/Packages/mootools-history/Demos/mootools-class-extras.js +27 -0
  355. data/Packages/mootools-history/Demos/mootools-core.js +4422 -0
  356. data/Packages/mootools-history/Demos/mootools.html +27 -0
  357. data/Packages/mootools-history/Demos/other.html +27 -0
  358. data/Packages/mootools-history/Demos/style.css +96 -0
  359. data/Packages/mootools-history/LICENSE +24 -0
  360. data/Packages/mootools-history/README.md +97 -0
  361. data/Packages/mootools-history/Source/History.handleInitialState.js +42 -0
  362. data/Packages/mootools-history/Source/History.js +102 -0
  363. data/Packages/mootools-history/package.yml +21 -0
  364. data/Packages/mootools-mobile/Demos/custom-event.js +91 -0
  365. data/Packages/mootools-mobile/Demos/demo.css +13 -0
  366. data/Packages/mootools-mobile/Demos/index.html +99 -0
  367. data/Packages/mootools-mobile/Demos/mootools-core.js +3831 -0
  368. data/Packages/mootools-mobile/Demos/pinch.html +60 -0
  369. data/Packages/mootools-mobile/Demos/style.css +121 -0
  370. data/Packages/mootools-mobile/Demos/swipe.html +45 -0
  371. data/Packages/mootools-mobile/Demos/touchhold.html +50 -0
  372. data/Packages/mootools-mobile/LICENSE +24 -0
  373. data/Packages/mootools-mobile/README.md +173 -0
  374. data/Packages/mootools-mobile/Source/Browser/Features.Touch.js +52 -0
  375. data/Packages/mootools-mobile/Source/Browser/Mobile.js +37 -0
  376. data/Packages/mootools-mobile/Source/Desktop/Mouse.js +60 -0
  377. data/Packages/mootools-mobile/Source/Touch/Click.js +30 -0
  378. data/Packages/mootools-mobile/Source/Touch/Pinch.js +66 -0
  379. data/Packages/mootools-mobile/Source/Touch/Swipe.js +95 -0
  380. data/Packages/mootools-mobile/Source/Touch/Touch.js +62 -0
  381. data/Packages/mootools-mobile/Source/Touch/Touchhold.js +69 -0
  382. data/Packages/mootools-mobile/package.yml +24 -0
  383. data/Packages/mootools-more/Docs/Class/Chain.Wait.md +69 -0
  384. data/Packages/mootools-more/Docs/Class/Class.Binds.md +84 -0
  385. data/Packages/mootools-more/Docs/Class/Class.Occlude.md +61 -0
  386. data/Packages/mootools-more/Docs/Class/Class.Refactor.md +65 -0
  387. data/Packages/mootools-more/Docs/Class/Events.Pseudos.md +125 -0
  388. data/Packages/mootools-more/Docs/Drag/Drag.Move.md +147 -0
  389. data/Packages/mootools-more/Docs/Drag/Drag.md +206 -0
  390. data/Packages/mootools-more/Docs/Drag/Slider.md +249 -0
  391. data/Packages/mootools-more/Docs/Drag/Sortables.md +287 -0
  392. data/Packages/mootools-more/Docs/Element/Element.Delegation.md +120 -0
  393. data/Packages/mootools-more/Docs/Element/Element.Event.Pseudos.Keys.md +67 -0
  394. data/Packages/mootools-more/Docs/Element/Element.Event.Pseudos.md +124 -0
  395. data/Packages/mootools-more/Docs/Element/Element.Forms.md +231 -0
  396. data/Packages/mootools-more/Docs/Element/Element.Measure.md +130 -0
  397. data/Packages/mootools-more/Docs/Element/Element.Pin.md +56 -0
  398. data/Packages/mootools-more/Docs/Element/Element.Position.md +77 -0
  399. data/Packages/mootools-more/Docs/Element/Element.Shortcuts.md +121 -0
  400. data/Packages/mootools-more/Docs/Element/Elements.From.md +32 -0
  401. data/Packages/mootools-more/Docs/Forms/Form.Request.Append.md +36 -0
  402. data/Packages/mootools-more/Docs/Forms/Form.Request.md +141 -0
  403. data/Packages/mootools-more/Docs/Forms/Form.Validator.Extras.md +157 -0
  404. data/Packages/mootools-more/Docs/Forms/Form.Validator.Inline.md +100 -0
  405. data/Packages/mootools-more/Docs/Forms/Form.Validator.md +666 -0
  406. data/Packages/mootools-more/Docs/Forms/OverText.md +237 -0
  407. data/Packages/mootools-more/Docs/Fx/Fx.Accordion.md +178 -0
  408. data/Packages/mootools-more/Docs/Fx/Fx.Elements.md +114 -0
  409. data/Packages/mootools-more/Docs/Fx/Fx.Move.md +160 -0
  410. data/Packages/mootools-more/Docs/Fx/Fx.Reveal.md +235 -0
  411. data/Packages/mootools-more/Docs/Fx/Fx.Scroll.md +291 -0
  412. data/Packages/mootools-more/Docs/Fx/Fx.Slide.md +272 -0
  413. data/Packages/mootools-more/Docs/Fx/Fx.SmoothScroll.md +50 -0
  414. data/Packages/mootools-more/Docs/Fx/Fx.Sort.md +201 -0
  415. data/Packages/mootools-more/Docs/Interface/HtmlTable.Select.md +246 -0
  416. data/Packages/mootools-more/Docs/Interface/HtmlTable.Sort.md +193 -0
  417. data/Packages/mootools-more/Docs/Interface/HtmlTable.Zebra.md +94 -0
  418. data/Packages/mootools-more/Docs/Interface/HtmlTable.md +250 -0
  419. data/Packages/mootools-more/Docs/Interface/Keyboard.Extras.md +163 -0
  420. data/Packages/mootools-more/Docs/Interface/Keyboard.md +226 -0
  421. data/Packages/mootools-more/Docs/Interface/Mask.md +232 -0
  422. data/Packages/mootools-more/Docs/Interface/Scroller.md +97 -0
  423. data/Packages/mootools-more/Docs/Interface/Spinner.md +284 -0
  424. data/Packages/mootools-more/Docs/Interface/Tips.md +267 -0
  425. data/Packages/mootools-more/Docs/Locale/Date.md +222 -0
  426. data/Packages/mootools-more/Docs/Locale/Form.Validator.md +197 -0
  427. data/Packages/mootools-more/Docs/Locale/Locale.Set.From.md +29 -0
  428. data/Packages/mootools-more/Docs/Locale/Locale.md +208 -0
  429. data/Packages/mootools-more/Docs/Locale/Number.md +97 -0
  430. data/Packages/mootools-more/Docs/More/More.md +20 -0
  431. data/Packages/mootools-more/Docs/Request/Request.JSONP.md +126 -0
  432. data/Packages/mootools-more/Docs/Request/Request.Periodical.md +82 -0
  433. data/Packages/mootools-more/Docs/Request/Request.Queue.md +337 -0
  434. data/Packages/mootools-more/Docs/Types/Array.Extras.md +193 -0
  435. data/Packages/mootools-more/Docs/Types/Date.Extras.md +97 -0
  436. data/Packages/mootools-more/Docs/Types/Date.md +564 -0
  437. data/Packages/mootools-more/Docs/Types/Hash.Extras.md +111 -0
  438. data/Packages/mootools-more/Docs/Types/Hash.md +633 -0
  439. data/Packages/mootools-more/Docs/Types/Number.Format.md +91 -0
  440. data/Packages/mootools-more/Docs/Types/Object.Extras.md +134 -0
  441. data/Packages/mootools-more/Docs/Types/String.Extras.md +188 -0
  442. data/Packages/mootools-more/Docs/Types/String.QueryString.md +56 -0
  443. data/Packages/mootools-more/Docs/Types/URI.Relative.md +46 -0
  444. data/Packages/mootools-more/Docs/Types/URI.md +213 -0
  445. data/Packages/mootools-more/Docs/Utilities/Assets.md +175 -0
  446. data/Packages/mootools-more/Docs/Utilities/Color.md +276 -0
  447. data/Packages/mootools-more/Docs/Utilities/Group.md +75 -0
  448. data/Packages/mootools-more/Docs/Utilities/Hash.Cookie.md +117 -0
  449. data/Packages/mootools-more/Docs/Utilities/IframeShim.md +136 -0
  450. data/Packages/mootools-more/Docs/Utilities/Table.md +114 -0
  451. data/Packages/mootools-more/Docs/license.md +8 -0
  452. data/Packages/mootools-more/README.md +244 -0
  453. data/Packages/mootools-more/Source/Class/Chain.Wait.js +63 -0
  454. data/Packages/mootools-more/Source/Class/Class.Binds.js +37 -0
  455. data/Packages/mootools-more/Source/Class/Class.Occlude.js +38 -0
  456. data/Packages/mootools-more/Source/Class/Class.Refactor.js +41 -0
  457. data/Packages/mootools-more/Source/Class/Events.Pseudos.js +180 -0
  458. data/Packages/mootools-more/Source/Drag/Drag.Move.js +197 -0
  459. data/Packages/mootools-more/Source/Drag/Drag.js +234 -0
  460. data/Packages/mootools-more/Source/Drag/Slider.js +225 -0
  461. data/Packages/mootools-more/Source/Drag/Sortables.js +233 -0
  462. data/Packages/mootools-more/Source/Element/Element.Delegation.js +140 -0
  463. data/Packages/mootools-more/Source/Element/Element.Event.Pseudos.Keys.js +82 -0
  464. data/Packages/mootools-more/Source/Element/Element.Event.Pseudos.js +36 -0
  465. data/Packages/mootools-more/Source/Element/Element.Forms.js +140 -0
  466. data/Packages/mootools-more/Source/Element/Element.Measure.js +170 -0
  467. data/Packages/mootools-more/Source/Element/Element.Pin.js +130 -0
  468. data/Packages/mootools-more/Source/Element/Element.Position.js +235 -0
  469. data/Packages/mootools-more/Source/Element/Element.Shortcuts.js +76 -0
  470. data/Packages/mootools-more/Source/Element/Elements.From.js +40 -0
  471. data/Packages/mootools-more/Source/Forms/Form.Request.Append.js +77 -0
  472. data/Packages/mootools-more/Source/Forms/Form.Request.js +203 -0
  473. data/Packages/mootools-more/Source/Forms/Form.Validator.Extras.js +231 -0
  474. data/Packages/mootools-more/Source/Forms/Form.Validator.Inline.js +190 -0
  475. data/Packages/mootools-more/Source/Forms/Form.Validator.js +523 -0
  476. data/Packages/mootools-more/Source/Forms/OverText.js +258 -0
  477. data/Packages/mootools-more/Source/Fx/Fx.Accordion.js +240 -0
  478. data/Packages/mootools-more/Source/Fx/Fx.Elements.js +74 -0
  479. data/Packages/mootools-more/Source/Fx/Fx.Move.js +71 -0
  480. data/Packages/mootools-more/Source/Fx/Fx.Reveal.js +246 -0
  481. data/Packages/mootools-more/Source/Fx/Fx.Scroll.js +180 -0
  482. data/Packages/mootools-more/Source/Fx/Fx.Slide.js +170 -0
  483. data/Packages/mootools-more/Source/Fx/Fx.SmoothScroll.js +70 -0
  484. data/Packages/mootools-more/Source/Fx/Fx.Sort.js +172 -0
  485. data/Packages/mootools-more/Source/Interface/HtmlTable.Select.js +352 -0
  486. data/Packages/mootools-more/Source/Interface/HtmlTable.Sort.js +349 -0
  487. data/Packages/mootools-more/Source/Interface/HtmlTable.Zebra.js +64 -0
  488. data/Packages/mootools-more/Source/Interface/HtmlTable.js +150 -0
  489. data/Packages/mootools-more/Source/Interface/Keyboard.Extras.js +109 -0
  490. data/Packages/mootools-more/Source/Interface/Keyboard.js +242 -0
  491. data/Packages/mootools-more/Source/Interface/Mask.js +211 -0
  492. data/Packages/mootools-more/Source/Interface/Scroller.js +104 -0
  493. data/Packages/mootools-more/Source/Interface/Spinner.js +216 -0
  494. data/Packages/mootools-more/Source/Interface/Tips.js +259 -0
  495. data/Packages/mootools-more/Source/Locale/Locale.EU.Number.js +30 -0
  496. data/Packages/mootools-more/Source/Locale/Locale.Set.From.js +52 -0
  497. data/Packages/mootools-more/Source/Locale/Locale.ar.Date.js +28 -0
  498. data/Packages/mootools-more/Source/Locale/Locale.ar.Form.Validator.js +40 -0
  499. data/Packages/mootools-more/Source/Locale/Locale.ca-CA.Date.js +55 -0
  500. data/Packages/mootools-more/Source/Locale/Locale.ca-CA.Form.Validator.js +55 -0
  501. data/Packages/mootools-more/Source/Locale/Locale.cs-CZ.Date.js +80 -0
  502. data/Packages/mootools-more/Source/Locale/Locale.cs-CZ.Form.Validator.js +55 -0
  503. data/Packages/mootools-more/Source/Locale/Locale.da-DK.Date.js +68 -0
  504. data/Packages/mootools-more/Source/Locale/Locale.da-DK.Form.Validator.js +54 -0
  505. data/Packages/mootools-more/Source/Locale/Locale.de-CH.Date.js +22 -0
  506. data/Packages/mootools-more/Source/Locale/Locale.de-CH.Form.Validator.js +55 -0
  507. data/Packages/mootools-more/Source/Locale/Locale.de-DE.Date.js +70 -0
  508. data/Packages/mootools-more/Source/Locale/Locale.de-DE.Form.Validator.js +57 -0
  509. data/Packages/mootools-more/Source/Locale/Locale.de-DE.Number.js +22 -0
  510. data/Packages/mootools-more/Source/Locale/Locale.en-GB.Date.js +29 -0
  511. data/Packages/mootools-more/Source/Locale/Locale.en-US.Date.js +70 -0
  512. data/Packages/mootools-more/Source/Locale/Locale.en-US.Form.Validator.js +55 -0
  513. data/Packages/mootools-more/Source/Locale/Locale.en-US.Number.js +51 -0
  514. data/Packages/mootools-more/Source/Locale/Locale.es-AR.Date.js +23 -0
  515. data/Packages/mootools-more/Source/Locale/Locale.es-AR.Form.Validator.js +54 -0
  516. data/Packages/mootools-more/Source/Locale/Locale.es-ES.Date.js +67 -0
  517. data/Packages/mootools-more/Source/Locale/Locale.es-ES.Form.Validator.js +54 -0
  518. data/Packages/mootools-more/Source/Locale/Locale.es-VE.Date.js +22 -0
  519. data/Packages/mootools-more/Source/Locale/Locale.es-VE.Form.Validator.js +34 -0
  520. data/Packages/mootools-more/Source/Locale/Locale.es-VE.Number.js +44 -0
  521. data/Packages/mootools-more/Source/Locale/Locale.et-EE.Date.js +67 -0
  522. data/Packages/mootools-more/Source/Locale/Locale.et-EE.Form.Validator.js +54 -0
  523. data/Packages/mootools-more/Source/Locale/Locale.fa.Date.js +66 -0
  524. data/Packages/mootools-more/Source/Locale/Locale.fa.Form.Validator.js +55 -0
  525. data/Packages/mootools-more/Source/Locale/Locale.fi-FI.Date.js +72 -0
  526. data/Packages/mootools-more/Source/Locale/Locale.fi-FI.Form.Validator.js +55 -0
  527. data/Packages/mootools-more/Source/Locale/Locale.fi-FI.Number.js +26 -0
  528. data/Packages/mootools-more/Source/Locale/Locale.fr-FR.Date.js +70 -0
  529. data/Packages/mootools-more/Source/Locale/Locale.fr-FR.Form.Validator.js +56 -0
  530. data/Packages/mootools-more/Source/Locale/Locale.fr-FR.Number.js +27 -0
  531. data/Packages/mootools-more/Source/Locale/Locale.he-IL.Date.js +67 -0
  532. data/Packages/mootools-more/Source/Locale/Locale.he-IL.Form.Validator.js +55 -0
  533. data/Packages/mootools-more/Source/Locale/Locale.he-IL.Number.js +30 -0
  534. data/Packages/mootools-more/Source/Locale/Locale.hu-HU.Date.js +67 -0
  535. data/Packages/mootools-more/Source/Locale/Locale.hu-HU.Form.Validator.js +55 -0
  536. data/Packages/mootools-more/Source/Locale/Locale.it-IT.Date.js +68 -0
  537. data/Packages/mootools-more/Source/Locale/Locale.it-IT.Form.Validator.js +55 -0
  538. data/Packages/mootools-more/Source/Locale/Locale.ja-JP.Date.js +67 -0
  539. data/Packages/mootools-more/Source/Locale/Locale.ja-JP.Form.Validator.js +54 -0
  540. data/Packages/mootools-more/Source/Locale/Locale.ja-JP.Number.js +31 -0
  541. data/Packages/mootools-more/Source/Locale/Locale.js +188 -0
  542. data/Packages/mootools-more/Source/Locale/Locale.nl-NL.Date.js +68 -0
  543. data/Packages/mootools-more/Source/Locale/Locale.nl-NL.Form.Validator.js +57 -0
  544. data/Packages/mootools-more/Source/Locale/Locale.nl-NL.Number.js +25 -0
  545. data/Packages/mootools-more/Source/Locale/Locale.no-NO.Date.js +39 -0
  546. data/Packages/mootools-more/Source/Locale/Locale.no-NO.Form.Validator.js +40 -0
  547. data/Packages/mootools-more/Source/Locale/Locale.pl-PL.Date.js +57 -0
  548. data/Packages/mootools-more/Source/Locale/Locale.pl-PL.Form.Validator.js +54 -0
  549. data/Packages/mootools-more/Source/Locale/Locale.pt-BR.Date.js +27 -0
  550. data/Packages/mootools-more/Source/Locale/Locale.pt-BR.Form.Validator.js +55 -0
  551. data/Packages/mootools-more/Source/Locale/Locale.pt-BR.Number.js +33 -0
  552. data/Packages/mootools-more/Source/Locale/Locale.pt-PT.Date.js +67 -0
  553. data/Packages/mootools-more/Source/Locale/Locale.pt-PT.Form.Validator.js +40 -0
  554. data/Packages/mootools-more/Source/Locale/Locale.ru-RU.Date.js +98 -0
  555. data/Packages/mootools-more/Source/Locale/Locale.ru-RU.Form.Validator.js +46 -0
  556. data/Packages/mootools-more/Source/Locale/Locale.si-SI.Date.js +75 -0
  557. data/Packages/mootools-more/Source/Locale/Locale.si-SI.Form.Validator.js +55 -0
  558. data/Packages/mootools-more/Source/Locale/Locale.sv-SE.Date.js +55 -0
  559. data/Packages/mootools-more/Source/Locale/Locale.sv-SE.Form.Validator.js +54 -0
  560. data/Packages/mootools-more/Source/Locale/Locale.sv-SE.Number.js +29 -0
  561. data/Packages/mootools-more/Source/Locale/Locale.tr-TR.Date.js +67 -0
  562. data/Packages/mootools-more/Source/Locale/Locale.tr-TR.Form.Validator.js +55 -0
  563. data/Packages/mootools-more/Source/Locale/Locale.tr-TR.Number.js +29 -0
  564. data/Packages/mootools-more/Source/Locale/Locale.uk-UA.Date.js +82 -0
  565. data/Packages/mootools-more/Source/Locale/Locale.uk-UA.Form.Validator.js +54 -0
  566. data/Packages/mootools-more/Source/Locale/Locale.zh-CH.Date.js +117 -0
  567. data/Packages/mootools-more/Source/Locale/Locale.zh-CH.Form.Validator.js +110 -0
  568. data/Packages/mootools-more/Source/Locale/Locale.zh-CH.Number.js +32 -0
  569. data/Packages/mootools-more/Source/More/More.js +33 -0
  570. data/Packages/mootools-more/Source/Request/Request.JSONP.js +142 -0
  571. data/Packages/mootools-more/Source/Request/Request.Periodical.js +51 -0
  572. data/Packages/mootools-more/Source/Request/Request.Queue.js +212 -0
  573. data/Packages/mootools-more/Source/Types/Array.Extras.js +79 -0
  574. data/Packages/mootools-more/Source/Types/Date.Extras.js +117 -0
  575. data/Packages/mootools-more/Source/Types/Date.js +559 -0
  576. data/Packages/mootools-more/Source/Types/Hash.Extras.js +38 -0
  577. data/Packages/mootools-more/Source/Types/Hash.js +145 -0
  578. data/Packages/mootools-more/Source/Types/Number.Format.js +105 -0
  579. data/Packages/mootools-more/Source/Types/Object.Extras.js +66 -0
  580. data/Packages/mootools-more/Source/Types/String.Extras.js +148 -0
  581. data/Packages/mootools-more/Source/Types/String.QueryString.js +68 -0
  582. data/Packages/mootools-more/Source/Types/URI.Relative.js +57 -0
  583. data/Packages/mootools-more/Source/Types/URI.js +169 -0
  584. data/Packages/mootools-more/Source/Utilities/Assets.js +131 -0
  585. data/Packages/mootools-more/Source/Utilities/Color.js +162 -0
  586. data/Packages/mootools-more/Source/Utilities/Group.js +60 -0
  587. data/Packages/mootools-more/Source/Utilities/Hash.Cookie.js +61 -0
  588. data/Packages/mootools-more/Source/Utilities/IframeShim.js +130 -0
  589. data/Packages/mootools-more/Source/Utilities/Table.js +57 -0
  590. data/Packages/mootools-more/Source/license.txt +21 -0
  591. data/Packages/mootools-more/Styles/Interface/Mask/mask.css +8 -0
  592. data/Packages/mootools-more/Styles/Interface/Spinner/spinner.css +19 -0
  593. data/Packages/mootools-more/Styles/Interface/Spinner/spinner.gif +0 -0
  594. data/Packages/mootools-more/Tests/Interactive/Class/Chain.Wait_(tween).html +14 -0
  595. data/Packages/mootools-more/Tests/Interactive/Class/Chain.Wait_(tween).yml +2 -0
  596. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(basic).html +39 -0
  597. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(basic).yml +3 -0
  598. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(container).html +130 -0
  599. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(container).yml +3 -0
  600. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(drag_in_drag).html +46 -0
  601. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(drag_in_drag).yml +3 -0
  602. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(drag_in_drag_border).html +48 -0
  603. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(drag_in_drag_border).yml +3 -0
  604. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(droppables).html +88 -0
  605. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(droppables).yml +3 -0
  606. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(no_offsetParent).html +42 -0
  607. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(no_offsetParent).yml +3 -0
  608. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(position_right_bottom).html +41 -0
  609. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(style_false).html +23 -0
  610. data/Packages/mootools-more/Tests/Interactive/Drag/Drag.Move_(style_false).yml +3 -0
  611. data/Packages/mootools-more/Tests/Interactive/Drag/Drag_(resize).html +48 -0
  612. data/Packages/mootools-more/Tests/Interactive/Drag/Drag_(resize).yml +2 -0
  613. data/Packages/mootools-more/Tests/Interactive/Drag/Slider.html +169 -0
  614. data/Packages/mootools-more/Tests/Interactive/Drag/Slider.yml +2 -0
  615. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(images).html +19 -0
  616. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(images).yml +2 -0
  617. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(multi).html +44 -0
  618. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(multi).yml +2 -0
  619. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(revert).html +51 -0
  620. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(single).html +67 -0
  621. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(single).yml +2 -0
  622. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(table).html +46 -0
  623. data/Packages/mootools-more/Tests/Interactive/Drag/Sortables_(table).yml +2 -0
  624. data/Packages/mootools-more/Tests/Interactive/Element/Element.Delegation.html +89 -0
  625. data/Packages/mootools-more/Tests/Interactive/Element/Element.Delegation.yml +2 -0
  626. data/Packages/mootools-more/Tests/Interactive/Element/Element.Delegation_(focus_blur).yml +2 -0
  627. data/Packages/mootools-more/Tests/Interactive/Element/Element.Delegation_(non_bubbling).html +126 -0
  628. data/Packages/mootools-more/Tests/Interactive/Element/Element.Event.Pseudos.Keys.html +39 -0
  629. data/Packages/mootools-more/Tests/Interactive/Element/Element.Event.Pseudos.Keys.yml +3 -0
  630. data/Packages/mootools-more/Tests/Interactive/Element/Element.Event.Pseudos.html +56 -0
  631. data/Packages/mootools-more/Tests/Interactive/Element/Element.Forms.html +125 -0
  632. data/Packages/mootools-more/Tests/Interactive/Element/Element.Forms.yml +2 -0
  633. data/Packages/mootools-more/Tests/Interactive/Element/Element.Pin.html +46 -0
  634. data/Packages/mootools-more/Tests/Interactive/Element/Element.Pin.yml +2 -0
  635. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(basic).html +118 -0
  636. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(basic).yml +2 -0
  637. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(scrolled).html +47 -0
  638. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(scrolled).yml +2 -0
  639. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(scrolling).html +46 -0
  640. data/Packages/mootools-more/Tests/Interactive/Element/Element.Position_(scrolling).yml +2 -0
  641. data/Packages/mootools-more/Tests/Interactive/Element/Element.Shortcuts.html +171 -0
  642. data/Packages/mootools-more/Tests/Interactive/Element/Element.Shortcuts.yml +2 -0
  643. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Request.Append.html +29 -0
  644. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Request.Append.yml +3 -0
  645. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Request.html +49 -0
  646. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Request.yml +2 -0
  647. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Extras.html +88 -0
  648. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Extras.yml +3 -0
  649. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Extras_(data-).html +87 -0
  650. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Extras_(data-).yml +3 -0
  651. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline.html +54 -0
  652. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline.yml +3 -0
  653. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(data-).html +54 -0
  654. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(data-).yml +3 -0
  655. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(data-warnings).html +42 -0
  656. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(data-warnings).yml +3 -0
  657. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(onBlur).html +60 -0
  658. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(onBlur).yml +3 -0
  659. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(onChange).html +68 -0
  660. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(onChange).yml +3 -0
  661. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(single_input).html +33 -0
  662. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(single_input).yml +3 -0
  663. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(warnings).html +42 -0
  664. data/Packages/mootools-more/Tests/Interactive/Forms/Form.Validator.Inline_(warnings).yml +3 -0
  665. data/Packages/mootools-more/Tests/Interactive/Forms/OverText.html +116 -0
  666. data/Packages/mootools-more/Tests/Interactive/Forms/OverText.yml +2 -0
  667. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Accordion.html +152 -0
  668. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Accordion.yml +2 -0
  669. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Elements.html +34 -0
  670. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Elements.yml +2 -0
  671. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Move.html +91 -0
  672. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Move.yml +2 -0
  673. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Reveal.html +42 -0
  674. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Reveal.yml +2 -0
  675. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Scroll_(element).html +107 -0
  676. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Scroll_(element).yml +2 -0
  677. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Scroll_(window).html +88 -0
  678. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Scroll_(window).yml +2 -0
  679. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Slide.html +63 -0
  680. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Slide.yml +2 -0
  681. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.SmoothScroll.html +77 -0
  682. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.SmoothScroll.yml +3 -0
  683. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Sort.html +100 -0
  684. data/Packages/mootools-more/Tests/Interactive/Fx/Fx.Sort.yml +2 -0
  685. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable.Select.html +109 -0
  686. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable.Select.yml +3 -0
  687. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable.html +46 -0
  688. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable.yml +2 -0
  689. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(empty_and_refill).html +46 -0
  690. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(empty_and_refill).yml +2 -0
  691. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(id).html +43 -0
  692. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(id).yml +2 -0
  693. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(sortable).html +256 -0
  694. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(sortable).yml +3 -0
  695. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(zebra).html +93 -0
  696. data/Packages/mootools-more/Tests/Interactive/Interface/HtmlTable_(zebra).yml +3 -0
  697. data/Packages/mootools-more/Tests/Interactive/Interface/Keyboard_(nested).html +129 -0
  698. data/Packages/mootools-more/Tests/Interactive/Interface/Keyboard_(nested).yml +2 -0
  699. data/Packages/mootools-more/Tests/Interactive/Interface/Keyboard_(single).html +93 -0
  700. data/Packages/mootools-more/Tests/Interactive/Interface/Keyboard_(single).yml +2 -0
  701. data/Packages/mootools-more/Tests/Interactive/Interface/Mask.html +63 -0
  702. data/Packages/mootools-more/Tests/Interactive/Interface/Mask.yml +2 -0
  703. data/Packages/mootools-more/Tests/Interactive/Interface/Scroller.html +40 -0
  704. data/Packages/mootools-more/Tests/Interactive/Interface/Scroller.yml +2 -0
  705. data/Packages/mootools-more/Tests/Interactive/Interface/Scroller_(With_Drag).html +45 -0
  706. data/Packages/mootools-more/Tests/Interactive/Interface/Scroller_(With_Drag).yml +3 -0
  707. data/Packages/mootools-more/Tests/Interactive/Interface/Spinner.html +125 -0
  708. data/Packages/mootools-more/Tests/Interactive/Interface/Spinner.yml +3 -0
  709. data/Packages/mootools-more/Tests/Interactive/Interface/Tips.html +156 -0
  710. data/Packages/mootools-more/Tests/Interactive/Interface/Tips.yml +2 -0
  711. data/Packages/mootools-more/Tests/Interactive/Interface/Tips_(offset).html +64 -0
  712. data/Packages/mootools-more/Tests/Interactive/Interface/Tips_(offset).yml +3 -0
  713. data/Packages/mootools-more/Tests/Interactive/README.md +3 -0
  714. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP.html +22 -0
  715. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP.yml +2 -0
  716. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP_(async).html +33 -0
  717. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP_(async).yml +2 -0
  718. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP_(timeout).html +46 -0
  719. data/Packages/mootools-more/Tests/Interactive/Request/Request.JSONP_(timeout).yml +2 -0
  720. data/Packages/mootools-more/Tests/Interactive/Request/Request.Periodical.html +38 -0
  721. data/Packages/mootools-more/Tests/Interactive/Request/Request.Periodical.yml +2 -0
  722. data/Packages/mootools-more/Tests/Interactive/Request/Request.Queue.html +42 -0
  723. data/Packages/mootools-more/Tests/Interactive/Request/Request.Queue.yml +2 -0
  724. data/Packages/mootools-more/Tests/Interactive/Utilities/Assets.html +78 -0
  725. data/Packages/mootools-more/Tests/Interactive/Utilities/Assets.yml +2 -0
  726. data/Packages/mootools-more/Tests/Interactive/Utilities/IframeShim.html +36 -0
  727. data/Packages/mootools-more/Tests/Interactive/Utilities/IframeShim.yml +2 -0
  728. data/Packages/mootools-more/Tests/Interactive/_assets/Assets.css.test.css +24 -0
  729. data/Packages/mootools-more/Tests/Interactive/_assets/Assets.js.test.js +3 -0
  730. data/Packages/mootools-more/Tests/Interactive/_assets/bullet_arrow_down.png +0 -0
  731. data/Packages/mootools-more/Tests/Interactive/_assets/bullet_arrow_up.png +0 -0
  732. data/Packages/mootools-more/Tests/Interactive/_assets/cow.png +0 -0
  733. data/Packages/mootools-more/Tests/Interactive/_assets/mask.css +8 -0
  734. data/Packages/mootools-more/Tests/Interactive/_assets/mediaplayer.swf +0 -0
  735. data/Packages/mootools-more/Tests/Interactive/_assets/mootools.png +0 -0
  736. data/Packages/mootools-more/Tests/Interactive/_assets/spinner.css +19 -0
  737. data/Packages/mootools-more/Tests/Interactive/_assets/spinner.gif +0 -0
  738. data/Packages/mootools-more/Tests/Interactive/_assets/video.flv +0 -0
  739. data/Packages/mootools-more/Tests/Specs/1.3/Class/Chain.Wait.js +74 -0
  740. data/Packages/mootools-more/Tests/Specs/1.3/Class/Class.Binds.js +91 -0
  741. data/Packages/mootools-more/Tests/Specs/1.3/Class/Class.Occlude.js +49 -0
  742. data/Packages/mootools-more/Tests/Specs/1.3/Class/Class.Refactor.js +103 -0
  743. data/Packages/mootools-more/Tests/Specs/1.3/Class/Events.Pseudos.js +367 -0
  744. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Delegation.js +32 -0
  745. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Event.Pseudos.Keys.js +33 -0
  746. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Event.Pseudos.js +69 -0
  747. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Forms.js +155 -0
  748. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Measure.js +92 -0
  749. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Pin.js +131 -0
  750. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Position.js +181 -0
  751. data/Packages/mootools-more/Tests/Specs/1.3/Element/Element.Shortcuts.js +93 -0
  752. data/Packages/mootools-more/Tests/Specs/1.3/Element/Elements.From.js +22 -0
  753. data/Packages/mootools-more/Tests/Specs/1.3/Forms/Form.Validator.js +384 -0
  754. data/Packages/mootools-more/Tests/Specs/1.3/Fx/Fx.Reveal.js +24 -0
  755. data/Packages/mootools-more/Tests/Specs/1.3/Fx/Fx.Slide.js +21 -0
  756. data/Packages/mootools-more/Tests/Specs/1.3/Interface/HtmlTable.Select.js +153 -0
  757. data/Packages/mootools-more/Tests/Specs/1.3/Interface/HtmlTable.Sort.js +181 -0
  758. data/Packages/mootools-more/Tests/Specs/1.3/Interface/HtmlTable.Zebra.js +39 -0
  759. data/Packages/mootools-more/Tests/Specs/1.3/Interface/HtmlTable.js +153 -0
  760. data/Packages/mootools-more/Tests/Specs/1.3/Interface/Keyboard.js +130 -0
  761. data/Packages/mootools-more/Tests/Specs/1.3/Locale/Locale.js +104 -0
  762. data/Packages/mootools-more/Tests/Specs/1.3/Request/Request.JSONP.js +55 -0
  763. data/Packages/mootools-more/Tests/Specs/1.3/Types/Array.Extras.js +119 -0
  764. data/Packages/mootools-more/Tests/Specs/1.3/Types/Date.Extras.js +80 -0
  765. data/Packages/mootools-more/Tests/Specs/1.3/Types/Date.js +709 -0
  766. data/Packages/mootools-more/Tests/Specs/1.3/Types/Hash.Extras.js +21 -0
  767. data/Packages/mootools-more/Tests/Specs/1.3/Types/Hash.js +202 -0
  768. data/Packages/mootools-more/Tests/Specs/1.3/Types/Number.Format.js +90 -0
  769. data/Packages/mootools-more/Tests/Specs/1.3/Types/Object.Extras.js +105 -0
  770. data/Packages/mootools-more/Tests/Specs/1.3/Types/Object.Extras_client.js +17 -0
  771. data/Packages/mootools-more/Tests/Specs/1.3/Types/String.Extras.js +72 -0
  772. data/Packages/mootools-more/Tests/Specs/1.3/Types/String.QueryString.js +63 -0
  773. data/Packages/mootools-more/Tests/Specs/1.3/Types/URI.Relative.js +114 -0
  774. data/Packages/mootools-more/Tests/Specs/1.3/Types/URI.js +123 -0
  775. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Assets.js +211 -0
  776. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Color.js +78 -0
  777. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Group.js +25 -0
  778. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Hash.Cookie.js +50 -0
  779. data/Packages/mootools-more/Tests/Specs/1.3/Utilities/Table.js +56 -0
  780. data/Packages/mootools-more/Tests/Specs/Configuration.js +245 -0
  781. data/Packages/mootools-more/Tests/Specs/assets/Assets.css.test.css +24 -0
  782. data/Packages/mootools-more/Tests/Specs/assets/Assets.js.test.js +3 -0
  783. data/Packages/mootools-more/Tests/Specs/assets/cow.png +0 -0
  784. data/Packages/mootools-more/Tests/Specs/assets/jsonp.js +8 -0
  785. data/Packages/mootools-more/Tests/Specs/assets/mootools.png +0 -0
  786. data/Packages/mootools-more/Tests/Specs/index.html +26 -0
  787. data/Packages/mootools-more/Tests/Specs/package.yml +47 -0
  788. data/Packages/mootools-more/build +40 -0
  789. data/Packages/mootools-more/package.yml +145 -0
  790. data/Packages/mootools-resource/README.md +60 -0
  791. data/Packages/mootools-resource/Source/Resource.Collection.js +40 -0
  792. data/Packages/mootools-resource/Source/Resource.Model.Actions.js +98 -0
  793. data/Packages/mootools-resource/Source/Resource.Model.js +175 -0
  794. data/Packages/mootools-resource/Source/Resource.Parser.HTML.js +28 -0
  795. data/Packages/mootools-resource/Source/Resource.Parser.JSON.js +35 -0
  796. data/Packages/mootools-resource/Source/Resource.Parser.XML.js +31 -0
  797. data/Packages/mootools-resource/Source/Resource.Parser.js +50 -0
  798. data/Packages/mootools-resource/Source/Resource.js +282 -0
  799. data/Packages/mootools-resource/package.yml +18 -0
  800. data/Packages/mootools-speedups/README.md +10 -0
  801. data/Packages/mootools-speedups/Source/Core/Class.Extras.Speedups.js +14 -0
  802. data/Packages/mootools-speedups/Source/Core/Class.Speedups.js +129 -0
  803. data/Packages/mootools-speedups/Source/Core/Core.Speedups.js +89 -0
  804. data/Packages/mootools-speedups/Source/Types/Object.js +36 -0
  805. data/Packages/mootools-speedups/package.yml +19 -0
  806. data/Packages/mootools-string-inflections/README.md +292 -0
  807. data/Packages/mootools-string-inflections/Source/String.Inflections.js +230 -0
  808. data/Packages/mootools-string-inflections/TODO.md +2 -0
  809. data/Packages/mootools-string-inflections/Tests/index.html +12 -0
  810. data/Packages/mootools-string-inflections/Tests/test.js +95 -0
  811. data/Packages/mootools-string-inflections/package.yml +7 -0
  812. data/Packages/qfocuser/README +63 -0
  813. data/Packages/qfocuser/Source/QFocuser.js +278 -0
  814. data/Packages/qfocuser/package.yml +8 -0
  815. data/Packages/slick/Makefile +19 -0
  816. data/Packages/slick/README.md +127 -0
  817. data/Packages/slick/SlickSpec/Configuration.js +56 -0
  818. data/Packages/slick/SlickSpec/assets/JSSpecHelpers.js +187 -0
  819. data/Packages/slick/SlickSpec/assets/getgetter.js +65 -0
  820. data/Packages/slick/SlickSpec/assets/ie.css +37 -0
  821. data/Packages/slick/SlickSpec/assets/moobugger/bookmarklet.html +46 -0
  822. data/Packages/slick/SlickSpec/assets/moobugger/debugger-iframe.js +386 -0
  823. data/Packages/slick/SlickSpec/assets/moobugger/debugger.css +190 -0
  824. data/Packages/slick/SlickSpec/assets/moobugger/debugger.html +25 -0
  825. data/Packages/slick/SlickSpec/assets/moobugger/debugger.js +284 -0
  826. data/Packages/slick/SlickSpec/assets/moobugger/images/close.png +0 -0
  827. data/Packages/slick/SlickSpec/assets/moobugger/images/error.png +0 -0
  828. data/Packages/slick/SlickSpec/assets/moobugger/images/group-close.png +0 -0
  829. data/Packages/slick/SlickSpec/assets/moobugger/images/group-open.png +0 -0
  830. data/Packages/slick/SlickSpec/assets/moobugger/images/icon.png +0 -0
  831. data/Packages/slick/SlickSpec/assets/moobugger/images/info.png +0 -0
  832. data/Packages/slick/SlickSpec/assets/moobugger/images/lick.png +0 -0
  833. data/Packages/slick/SlickSpec/assets/moobugger/images/max.png +0 -0
  834. data/Packages/slick/SlickSpec/assets/moobugger/images/min.png +0 -0
  835. data/Packages/slick/SlickSpec/assets/moobugger/images/mootools.png +0 -0
  836. data/Packages/slick/SlickSpec/assets/moobugger/images/time.png +0 -0
  837. data/Packages/slick/SlickSpec/assets/moobugger/images/warning.png +0 -0
  838. data/Packages/slick/SlickSpec/assets/moobugger/mootools.js +57 -0
  839. data/Packages/slick/SlickSpec/assets/moobugger/test.html +88 -0
  840. data/Packages/slick/SlickSpec/assets/screen.css +259 -0
  841. data/Packages/slick/SlickSpec/assets/simple_request.js +67 -0
  842. data/Packages/slick/SlickSpec/assets/slickspec.css +366 -0
  843. data/Packages/slick/SlickSpec/bootstrap/moo12.slickspec.js +55 -0
  844. data/Packages/slick/SlickSpec/bootstrap/nwmatcher.slickspec.js +27 -0
  845. data/Packages/slick/SlickSpec/bootstrap/sizzle.slickspec.js +65 -0
  846. data/Packages/slick/SlickSpec/bootstrap/slick.slickspec.js +66 -0
  847. data/Packages/slick/SlickSpec/bootstrap/yui.slickspec.js +36 -0
  848. data/Packages/slick/SlickSpec/index.html +26 -0
  849. data/Packages/slick/SlickSpec/mocks/MooTools_Logo.svg +24 -0
  850. data/Packages/slick/SlickSpec/mocks/html5-shim.html +70 -0
  851. data/Packages/slick/SlickSpec/mocks/query_test-dojo.html +79 -0
  852. data/Packages/slick/SlickSpec/mocks/query_test-google_closure.html +72 -0
  853. data/Packages/slick/SlickSpec/mocks/query_test-jquery.html +213 -0
  854. data/Packages/slick/SlickSpec/mocks/query_test-prototype.html +95 -0
  855. data/Packages/slick/SlickSpec/mocks/query_test-slick.html +20 -0
  856. data/Packages/slick/SlickSpec/mocks/query_test-yui.html +88 -0
  857. data/Packages/slick/SlickSpec/mocks/template-almost.html +2932 -0
  858. data/Packages/slick/SlickSpec/mocks/template-chromeframe.html +2932 -0
  859. data/Packages/slick/SlickSpec/mocks/template-ie7.html +2932 -0
  860. data/Packages/slick/SlickSpec/mocks/template-quirks.html +2932 -0
  861. data/Packages/slick/SlickSpec/mocks/template-standard.html +2932 -0
  862. data/Packages/slick/SlickSpec/mocks/template-transitional.html +2932 -0
  863. data/Packages/slick/SlickSpec/mocks/template.xhtml +2476 -0
  864. data/Packages/slick/SlickSpec/mocks/template.xml +2475 -0
  865. data/Packages/slick/SlickSpec/mocks/xml.xml +21 -0
  866. data/Packages/slick/SlickSpec/select.html +107 -0
  867. data/Packages/slick/SlickSpec/setup.js +93 -0
  868. data/Packages/slick/SlickSpec/slickspec.html +261 -0
  869. data/Packages/slick/SlickSpec/specrunner_browser.html +69 -0
  870. data/Packages/slick/SlickSpec/specs/api.js +167 -0
  871. data/Packages/slick/SlickSpec/specs/browser_bugs.js +269 -0
  872. data/Packages/slick/SlickSpec/specs/dojo.js +260 -0
  873. data/Packages/slick/SlickSpec/specs/engine_bugs.js +388 -0
  874. data/Packages/slick/SlickSpec/specs/google_closure.js +176 -0
  875. data/Packages/slick/SlickSpec/specs/html.js +58 -0
  876. data/Packages/slick/SlickSpec/specs/html5.js +40 -0
  877. data/Packages/slick/SlickSpec/specs/isxml.js +24 -0
  878. data/Packages/slick/SlickSpec/specs/jquery.js +465 -0
  879. data/Packages/slick/SlickSpec/specs/match.js +139 -0
  880. data/Packages/slick/SlickSpec/specs/mock_template.js +360 -0
  881. data/Packages/slick/SlickSpec/specs/parser.js +409 -0
  882. data/Packages/slick/SlickSpec/specs/prototype.js +428 -0
  883. data/Packages/slick/SlickSpec/specs/select_exhaustive.js +84 -0
  884. data/Packages/slick/SlickSpec/specs/select_nth-child.js +64 -0
  885. data/Packages/slick/SlickSpec/specs/syntax.js +45 -0
  886. data/Packages/slick/SlickSpec/specs/unit.js +87 -0
  887. data/Packages/slick/SlickSpec/specs/xml.js +47 -0
  888. data/Packages/slick/SlickSpec/specs/yui.js +510 -0
  889. data/Packages/slick/SlickSpec/user-specs/pseudos.html +45 -0
  890. data/Packages/slick/Source/Slick.Finder.js +1012 -0
  891. data/Packages/slick/Source/Slick.Parser.js +231 -0
  892. data/Packages/slick/Source/slick.js +10 -0
  893. data/Packages/slick/package.json +12 -0
  894. data/Packages/slick/package.yml +19 -0
  895. data/Packages/slick/speed/frameworks/dojo-acme.js +1625 -0
  896. data/Packages/slick/speed/frameworks/dojo.js +16 -0
  897. data/Packages/slick/speed/frameworks/domass.js +1365 -0
  898. data/Packages/slick/speed/frameworks/jquery.js +4376 -0
  899. data/Packages/slick/speed/frameworks/mootools-core-1.3.js +5367 -0
  900. data/Packages/slick/speed/frameworks/mootools-slick.js +626 -0
  901. data/Packages/slick/speed/frameworks/mootools.js +4329 -0
  902. data/Packages/slick/speed/frameworks/native.js +0 -0
  903. data/Packages/slick/speed/frameworks/nwmatcher.js +1264 -0
  904. data/Packages/slick/speed/frameworks/prototype.js +4320 -0
  905. data/Packages/slick/speed/frameworks/sizzle.js +1102 -0
  906. data/Packages/slick/speed/frameworks/slick.js +1099 -0
  907. data/Packages/slick/speed/frameworks/sly.js +857 -0
  908. data/Packages/slick/speed/frameworks/yass.css3.js +490 -0
  909. data/Packages/slick/speed/jslitmus/JSLitmus.js +714 -0
  910. data/Packages/slick/speed/jslitmus/JSLitmusHelpers.js +3 -0
  911. data/Packages/slick/speed/jslitmus/bench_catch.html +49 -0
  912. data/Packages/slick/speed/jslitmus/bench_match.html +214 -0
  913. data/Packages/slick/speed/jslitmus/bench_match.js +98 -0
  914. data/Packages/slick/speed/jslitmus/bench_parse.html +161 -0
  915. data/Packages/slick/speed/jslitmus/bench_parse.js +68 -0
  916. data/Packages/slick/speed/jslitmus/bench_select.html +198 -0
  917. data/Packages/slick/speed/jslitmus/bench_select.js +106 -0
  918. data/Packages/slick/speed/jslitmus/bench_select2.js +106 -0
  919. data/Packages/slick/speed/jslitmus/bench_uidOf.html +121 -0
  920. data/Packages/slick/speed/jslitmus/closedNodes.html +92 -0
  921. data/Packages/slick/speed/jslitmus/demo.html +97 -0
  922. data/Packages/slick/speed/jslitmus/get_attribute.html +75 -0
  923. data/Packages/slick/speed/jslitmus/label_break-vs-fn_return.html +65 -0
  924. data/Packages/slick/speed/jslitmus/label_string-vs-var.html +94 -0
  925. data/Packages/slick/speed/jslitmus/method_vs_propfn.html +109 -0
  926. data/Packages/slick/speed/jslitmus/nodeListtoArray.html +89 -0
  927. data/Packages/slick/speed/jslitmus/parse_vs_clone.html +41 -0
  928. data/Packages/slick/speed/jslitmus/results.html +68 -0
  929. data/Packages/slick/speed/jslitmus/select.html +25 -0
  930. data/Packages/slick/speed/jslitmus/selectHTML.html +206 -0
  931. data/Packages/slick/speed/jslitmus/selectXML.html +140 -0
  932. data/Packages/slick/speed/jslitmus/select_class-doctypes.html +150 -0
  933. data/Packages/slick/speed/jslitmus/select_class.html +92 -0
  934. data/Packages/slick/speed/jslitmus/select_id.html +133 -0
  935. data/Packages/slick/speed/slickspeed/config.ini +54 -0
  936. data/Packages/slick/speed/slickspeed/footer.html +3 -0
  937. data/Packages/slick/speed/slickspeed/header.php +28 -0
  938. data/Packages/slick/speed/slickspeed/index.php +36 -0
  939. data/Packages/slick/speed/slickspeed/instructions.txt +4 -0
  940. data/Packages/slick/speed/slickspeed/logo.png +0 -0
  941. data/Packages/slick/speed/slickspeed/selectors.list.crazy.css +319 -0
  942. data/Packages/slick/speed/slickspeed/selectors.list.css +40 -0
  943. data/Packages/slick/speed/slickspeed/selectors.list.extended.css +81 -0
  944. data/Packages/slick/speed/slickspeed/selectors.list.mine.css +54 -0
  945. data/Packages/slick/speed/slickspeed/selectors.list.org.css +37 -0
  946. data/Packages/slick/speed/slickspeed/selectors.list.simple.css +105 -0
  947. data/Packages/slick/speed/slickspeed/selectors.list.sly.css +54 -0
  948. data/Packages/slick/speed/slickspeed/selectors.list.yahoo.css +33 -0
  949. data/Packages/slick/speed/slickspeed/style.css +197 -0
  950. data/Packages/slick/speed/slickspeed/system/index.php +172 -0
  951. data/Packages/slick/speed/slickspeed/system/slickspeed.js +162 -0
  952. data/Packages/slick/speed/slickspeed/system/template.php +154 -0
  953. data/Packages/slick/speed/slickspeed/system_slackerspeed/index.php +295 -0
  954. data/Packages/slick/speed/slickspeed/system_slackerspeed/slickspeed.js +147 -0
  955. data/Packages/slick/speed/slickspeed/system_slackerspeed/template.php +54 -0
  956. data/Packages/slick/speed/slickspeed/template.html +2921 -0
  957. data/Packages/slick/speed/slickspeed/template.yahoo.html +1 -0
  958. data/Packages/slick/speed/speedtests/deepmatch/index.html +294 -0
  959. data/Packages/slick/speed/speedtests/index.html +14 -0
  960. data/Packages/slick/speed/speedtests/setdocument/index.html +44 -0
  961. data/Packages/slick/speed/speedtests/setdocument/slow-document.js +69 -0
  962. data/Packages/slick/speed/subtleslickspeed/README.mdown +6 -0
  963. data/Packages/slick/speed/subtleslickspeed/lib/ie.css +26 -0
  964. data/Packages/slick/speed/subtleslickspeed/lib/jslib.js +389 -0
  965. data/Packages/slick/speed/subtleslickspeed/lib/own_tests/report_test.html +64 -0
  966. data/Packages/slick/speed/subtleslickspeed/lib/print.css +30 -0
  967. data/Packages/slick/speed/subtleslickspeed/lib/screen.css +251 -0
  968. data/Packages/slick/speed/subtleslickspeed/lib/subtlesandbox.js +174 -0
  969. data/Packages/slick/speed/subtleslickspeed/lib/subtlesandbox_strict.html +18 -0
  970. data/Packages/slick/speed/subtleslickspeed/lib/subtleslickspeed.js +290 -0
  971. data/Packages/slick/speed/subtleslickspeed/lib/subtleslickspeed.reports.js +87 -0
  972. data/Packages/slick/speed/subtleslickspeed/lib/subtleslickspeed.reports.table.js +353 -0
  973. data/Packages/slick/speed/subtleslickspeed/lib/table_report.css +241 -0
  974. data/Packages/slick/speed/subtleslickspeed/selectors.html +156 -0
  975. data/Packages/slick/speed/subtleslickspeed/string_replace.html +2998 -0
  976. data/Packages/slick/speed/subtleslickspeed/tests/selectors/template.html +14 -0
  977. data/Packages/slick/speed/subtleslickspeed/tests/selectors/template.js +2924 -0
  978. data/Packages/slick/speed/subtleslickspeed/tests/selectors/tests.js +177 -0
  979. data/lib/lsd/helper.rb +12 -0
  980. data/lib/lsd/packages.rb +25 -0
  981. data/lib/lsd/railtie.rb +33 -0
  982. data/lib/lsd/source.rb +37 -0
  983. data/lib/lsd/widget_generator.rb +24 -0
  984. data/lib/lsd.rake +17 -0
  985. data/lib/lsd.rb +20 -0
  986. data/lib/templates/Application.js +37 -0
  987. data/lib/templates/Widget.js +25 -0
  988. data/lib/templates/app_name.js +18 -0
  989. data/lib/templates/new_widget.js +25 -0
  990. data/lib/templates/package.yml +18 -0
  991. metadata +1053 -0
@@ -0,0 +1,2998 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
6
+ <title>SubtleSlickSpeed</title>
7
+ <link rel="stylesheet" href="lib/screen.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="lib/print.css" type="text/css" media="print" charset="utf-8" />
9
+ <!--[if IE]><link rel="stylesheet" href="lib/ie.css" type="text/css" media="screen" charset="utf-8" /><![endif]-->
10
+ <script src="lib/jslib.js" type="text/javascript" charset="utf-8"></script>
11
+ <script src="lib/subtlesandbox.js" type="text/javascript" charset="utf-8"></script>
12
+ <script src="lib/subtleslickspeed.js" type="text/javascript" charset="utf-8"></script>
13
+ <script src="lib/subtleslickspeed.reports.js" type="text/javascript" charset="utf-8"></script>
14
+ <script type="text/javascript" charset="utf-8">
15
+
16
+ var report = new SubtleSlickSpeed.Report();
17
+ var runner = new SubtleSlickSpeed.Runner(SubtleSlickSpeed.Tests);
18
+
19
+
20
+ WindowEvents.addEvents({
21
+ 'load': function(){
22
+ report.element = document.getElementById('report');
23
+ report.addTests(SubtleSlickSpeed.Tests);
24
+ runner.run();
25
+ }
26
+ });
27
+
28
+
29
+ // =========
30
+ // = Tests =
31
+ // =========
32
+ new SubtleSlickSpeed.Test("regex replace", function(){
33
+ TEMPLATE_HTML.replace(/<[^>]+>/g,'FLARM');
34
+ });
35
+ new SubtleSlickSpeed.Test("regex replace with function", function(){
36
+ TEMPLATE_HTML.replace(/<[^>]+>/g,function(){return 'FLARM' });
37
+ });
38
+ function cachedReplaceFunction(){return 'FLARM';};
39
+
40
+ new SubtleSlickSpeed.Test("regex replace with cached function", function(){
41
+ TEMPLATE_HTML.replace(/<[^>]+>/g, cachedReplaceFunction);
42
+ });
43
+ new SubtleSlickSpeed.Test("split_join", function(){
44
+ TEMPLATE_HTML.split(/<[^>]+>/g).join('FLARM');
45
+ });
46
+
47
+
48
+ // ============
49
+ // = Defaults =
50
+ // ============
51
+ SubtleSlickSpeed.Test.MIN_ITERS = 1;
52
+ SubtleSlickSpeed.Test.MIN_ITER_TIME = 1;
53
+ SubtleSlickSpeed.Test.MIN_RUNS = 5;
54
+ SubtleSlickSpeed.Test.MIN_RUN_TIME = 10;
55
+
56
+
57
+ // ==========
58
+ // = Report =
59
+ // ==========
60
+ // SubtleSlickSpeed.Report.TIMEOUT = 1000;
61
+ SubtleSlickSpeed.Report.prototype.buildOne = function(test){
62
+ var one = document.createElement('li');
63
+ var data = test.getData();
64
+ one.innerHTML = pp([test.id, data.iterations.time]);
65
+ return one;
66
+ };
67
+
68
+
69
+ var TEMPLATE_HTML = " <div class=\"head\">\n\
70
+ <p><a href=\"http://www.w3.org/\"><img height=48 alt=W3C src=\"http://www.w3.org/Icons/w3c_home\" width=72></a>\n\
71
+ \n\
72
+ <h1 id=\"title\">Selectors</h1>\n\
73
+ \n\
74
+ <h2>W3C Working Draft 15 December 2005</h2>\n\
75
+ \n\
76
+ <dl>\n\
77
+ \n\
78
+ <dt>This version:\n\
79
+ \n\
80
+ <dd><a href=\"http://www.w3.org/TR/2005/WD-css3-selectors-20051215\">\n\
81
+ http://www.w3.org/TR/2005/WD-css3-selectors-20051215</a>\n\
82
+ \n\
83
+ <dt>Latest version:\n\
84
+ \n\
85
+ <dd><a href=\"http://www.w3.org/TR/css3-selectors\">\n\
86
+ http://www.w3.org/TR/css3-selectors</a>\n\
87
+ \n\
88
+ <dt>Previous version:\n\
89
+ \n\
90
+ <dd><a href=\"http://www.w3.org/TR/2001/CR-css3-selectors-20011113\">\n\
91
+ http://www.w3.org/TR/2001/CR-css3-selectors-20011113</a>\n\
92
+ \n\
93
+ <dt><a name=editors-list></a>Editors:\n\
94
+ \n\
95
+ <dd class=\"vcard\"><span class=\"fn\">Daniel Glazman</span> (Invited Expert)</dd>\n\
96
+ \n\
97
+ <dd class=\"vcard\"><a lang=\"tr\" class=\"url fn\" href=\"http://www.tantek.com/\">Tantek &Ccedil;elik</a> (Invited Expert)\n\
98
+ \n\
99
+ <dd class=\"vcard\"><a href=\"mailto:ian@hixie.ch\" class=\"url fn\">Ian Hickson</a> (<span\n\
100
+ class=\"company\"><a href=\"http://www.google.com/\">Google</a></span>)\n\
101
+ \n\
102
+ <dd class=\"vcard\"><span class=\"fn\">Peter Linss</span> (former editor, <span class=\"company\"><a\n\
103
+ href=\"http://www.netscape.com/\">Netscape/AOL</a></span>)\n\
104
+ \n\
105
+ <dd class=\"vcard\"><span class=\"fn\">John Williams</span> (former editor, <span class=\"company\"><a\n\
106
+ href=\"http://www.quark.com/\">Quark, Inc.</a></span>)\n\
107
+ \n\
108
+ </dl>\n\
109
+ \n\
110
+ <p class=\"copyright\"><a\n\
111
+ href=\"http://www.w3.org/Consortium/Legal/ipr-notice#Copyright\">\n\
112
+ Copyright</a> &copy; 2005 <a href=\"http://www.w3.org/\"><abbr\n\
113
+ title=\"World Wide Web Consortium\">W3C</abbr></a><sup>&reg;</sup>\n\
114
+ (<a href=\"http://www.csail.mit.edu/\"><abbr title=\"Massachusetts\n\
115
+ Institute of Technology\">MIT</abbr></a>, <a\n\
116
+ href=\"http://www.ercim.org/\"><acronym title=\"European Research\n\
117
+ Consortium for Informatics and Mathematics\">ERCIM</acronym></a>, <a\n\
118
+ href=\"http://www.keio.ac.jp/\">Keio</a>), All Rights Reserved. W3C\n\
119
+ <a\n\
120
+ href=\"http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer\">liability</a>,\n\
121
+ <a\n\
122
+ href=\"http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks\">trademark</a>,\n\
123
+ <a\n\
124
+ href=\"http://www.w3.org/Consortium/Legal/copyright-documents\">document\n\
125
+ use</a> rules apply.\n\
126
+ \n\
127
+ <hr title=\"Separator for header\">\n\
128
+ \n\
129
+ </div>\n\
130
+ \n\
131
+ <h2><a name=abstract></a>Abstract</h2>\n\
132
+ \n\
133
+ <p><em>Selectors</em> are patterns that match against elements in a\n\
134
+ tree. Selectors have been optimized for use with HTML and XML, and\n\
135
+ are designed to be usable in performance-critical code.</p>\n\
136
+ \n\
137
+ <p><acronym title=\"Cascading Style Sheets\">CSS</acronym> (Cascading\n\
138
+ Style Sheets) is a language for describing the rendering of <acronym\n\
139
+ title=\"Hypertext Markup Language\">HTML</acronym> and <acronym\n\
140
+ title=\"Extensible Markup Language\">XML</acronym> documents on\n\
141
+ screen, on paper, in speech, etc. CSS uses Selectors for binding\n\
142
+ style properties to elements in the document. This document\n\
143
+ describes extensions to the selectors defined in CSS level 2. These\n\
144
+ extended selectors will be used by CSS level 3.\n\
145
+ \n\
146
+ <p>Selectors define the following function:</p>\n\
147
+ \n\
148
+ <pre>expression &#x2217; element &rarr; boolean</pre>\n\
149
+ \n\
150
+ <p>That is, given an element and a selector, this specification\n\
151
+ defines whether that element matches the selector.</p>\n\
152
+ \n\
153
+ <p>These expressions can also be used, for instance, to select a set\n\
154
+ of elements, or a single element from a set of elements, by\n\
155
+ evaluating the expression across all the elements in a\n\
156
+ subtree. <acronym title=\"Simple Tree Transformation\n\
157
+ Sheets\">STTS</acronym> (Simple Tree Transformation Sheets), a\n\
158
+ language for transforming XML trees, uses this mechanism. <a href=\"#refsSTTS\">[STTS]</a></p>\n\
159
+ \n\
160
+ <h2><a name=status></a>Status of this document</h2>\n\
161
+ \n\
162
+ <p><em>This section describes the status of this document at the\n\
163
+ time of its publication. Other documents may supersede this\n\
164
+ document. A list of current W3C publications and the latest revision\n\
165
+ of this technical report can be found in the <a\n\
166
+ href=\"http://www.w3.org/TR/\">W3C technical reports index at\n\
167
+ http://www.w3.org/TR/.</a></em></p>\n\
168
+ \n\
169
+ <p>This document describes the selectors that already exist in <a\n\
170
+ href=\"#refsCSS1\"><abbr title=\"CSS level 1\">CSS1</abbr></a> and <a\n\
171
+ href=\"#refsCSS21\"><abbr title=\"CSS level 2\">CSS2</abbr></a>, and\n\
172
+ also proposes new selectors for <abbr title=\"CSS level\n\
173
+ 3\">CSS3</abbr> and other languages that may need them.</p>\n\
174
+ \n\
175
+ <p>The CSS Working Group doesn't expect that all implementations of\n\
176
+ CSS3 will have to implement all selectors. Instead, there will\n\
177
+ probably be a small number of variants of CSS3, called profiles. For\n\
178
+ example, it may be that only a profile for interactive user agents\n\
179
+ will include all of the selectors.</p>\n\
180
+ \n\
181
+ <p>This specification is a last call working draft for the the <a\n\
182
+ href=\"http://www.w3.org/Style/CSS/members\">CSS Working Group</a>\n\
183
+ (<a href=\"/Style/\">Style Activity</a>). This\n\
184
+ document is a revision of the <a\n\
185
+ href=\"http://www.w3.org/TR/2001/CR-css3-selectors-20011113/\">Candidate\n\
186
+ Recommendation dated 2001 November 13</a>, and has incorporated\n\
187
+ implementation feedback received in the past few years. It is\n\
188
+ expected that this last call will proceed straight to Proposed\n\
189
+ Recommendation stage since it is believed that interoperability will\n\
190
+ be demonstrable.</p>\n\
191
+ \n\
192
+ <p>All persons are encouraged to review and implement this\n\
193
+ specification and return comments to the (<a\n\
194
+ href=\"http://lists.w3.org/Archives/Public/www-style/\">archived</a>)\n\
195
+ public mailing list <a\n\
196
+ href=\"http://www.w3.org/Mail/Lists.html#www-style\">www-style</a>\n\
197
+ (see <a href=\"http://www.w3.org/Mail/Request\">instructions</a>). W3C\n\
198
+ Members can also send comments directly to the CSS Working\n\
199
+ Group.\n\
200
+ The deadline for comments is 14 January 2006.</p>\n\
201
+ \n\
202
+ <p>This is still a draft document and may be updated, replaced, or\n\
203
+ obsoleted by other documents at any time. It is inappropriate to\n\
204
+ cite a W3C Working Draft as other than &quot;work in progress&quot;.\n\
205
+ \n\
206
+ <p>This document may be available in <a\n\
207
+ href=\"http://www.w3.org/Style/css3-selectors-updates/translations\">translation</a>.\n\
208
+ The English version of this specification is the only normative\n\
209
+ version.\n\
210
+ \n\
211
+ <div class=\"subtoc\">\n\
212
+ \n\
213
+ <h2><a name=contents>Table of contents</a></h2>\n\
214
+ \n\
215
+ <ul class=\"toc\">\n\
216
+ <li class=\"tocline2\"><a href=\"#context\">1. Introduction</a>\n\
217
+ <ul>\n\
218
+ <li><a href=\"#dependencies\">1.1. Dependencies</a> </li>\n\
219
+ <li><a href=\"#terminology\">1.2. Terminology</a> </li>\n\
220
+ <li><a href=\"#changesFromCSS2\">1.3. Changes from CSS2</a> </li>\n\
221
+ </ul>\n\
222
+ <li class=\"tocline2\"><a href=\"#selectors\">2. Selectors</a>\n\
223
+ <li class=\"tocline2\"><a href=\"#casesens\">3. Case sensitivity</a>\n\
224
+ <li class=\"tocline2\"><a href=\"#selector-syntax\">4. Selector syntax</a>\n\
225
+ <li class=\"tocline2\"><a href=\"#grouping\">5. Groups of selectors</a>\n\
226
+ <li class=\"tocline2\"><a href=\"#simple-selectors\">6. Simple selectors</a>\n\
227
+ <ul class=\"toc\">\n\
228
+ <li class=\"tocline3\"><a href=\"#type-selectors\">6.1. Type selectors</a>\n\
229
+ <ul class=\"toc\">\n\
230
+ <li class=\"tocline4\"><a href=\"#typenmsp\">6.1.1. Type selectors and namespaces</a></li>\n\
231
+ </ul>\n\
232
+ <li class=\"tocline3\"><a href=\"#universal-selector\">6.2. Universal selector</a>\n\
233
+ <ul>\n\
234
+ <li><a href=\"#univnmsp\">6.2.1. Universal selector and namespaces</a></li>\n\
235
+ </ul>\n\
236
+ <li class=\"tocline3\"><a href=\"#attribute-selectors\">6.3. Attribute selectors</a>\n\
237
+ <ul class=\"toc\">\n\
238
+ <li class=\"tocline4\"><a href=\"#attribute-representation\">6.3.1. Representation of attributes and attributes values</a>\n\
239
+ <li><a href=\"#attribute-substrings\">6.3.2. Substring matching attribute selectors</a>\n\
240
+ <li class=\"tocline4\"><a href=\"#attrnmsp\">6.3.3. Attribute selectors and namespaces</a>\n\
241
+ <li class=\"tocline4\"><a href=\"#def-values\">6.3.4. Default attribute values in DTDs</a></li>\n\
242
+ </ul>\n\
243
+ <li class=\"tocline3\"><a href=\"#class-html\">6.4. Class selectors</a>\n\
244
+ <li class=\"tocline3\"><a href=\"#id-selectors\">6.5. ID selectors</a>\n\
245
+ <li class=\"tocline3\"><a href=\"#pseudo-classes\">6.6. Pseudo-classes</a>\n\
246
+ <ul class=\"toc\">\n\
247
+ <li class=\"tocline4\"><a href=\"#dynamic-pseudos\">6.6.1. Dynamic pseudo-classes</a>\n\
248
+ <li class=\"tocline4\"><a href=\"#target-pseudo\">6.6.2. The :target pseudo-class</a>\n\
249
+ <li class=\"tocline4\"><a href=\"#lang-pseudo\">6.6.3. The :lang() pseudo-class</a>\n\
250
+ <li class=\"tocline4\"><a href=\"#UIstates\">6.6.4. UI element states pseudo-classes</a>\n\
251
+ <li class=\"tocline4\"><a href=\"#structural-pseudos\">6.6.5. Structural pseudo-classes</a>\n\
252
+ <ul>\n\
253
+ <li><a href=\"#root-pseudo\">:root pseudo-class</a>\n\
254
+ <li><a href=\"#nth-child-pseudo\">:nth-child() pseudo-class</a>\n\
255
+ <li><a href=\"#nth-last-child-pseudo\">:nth-last-child()</a>\n\
256
+ <li><a href=\"#nth-of-type-pseudo\">:nth-of-type() pseudo-class</a>\n\
257
+ <li><a href=\"#nth-last-of-type-pseudo\">:nth-last-of-type()</a>\n\
258
+ <li><a href=\"#first-child-pseudo\">:first-child pseudo-class</a>\n\
259
+ <li><a href=\"#last-child-pseudo\">:last-child pseudo-class</a>\n\
260
+ <li><a href=\"#first-of-type-pseudo\">:first-of-type pseudo-class</a>\n\
261
+ <li><a href=\"#last-of-type-pseudo\">:last-of-type pseudo-class</a>\n\
262
+ <li><a href=\"#only-child-pseudo\">:only-child pseudo-class</a>\n\
263
+ <li><a href=\"#only-of-type-pseudo\">:only-of-type pseudo-class</a>\n\
264
+ <li><a href=\"#empty-pseudo\">:empty pseudo-class</a></li>\n\
265
+ </ul>\n\
266
+ <li class=\"tocline4\"><a href=\"#negation\">6.6.7. The negation pseudo-class</a></li>\n\
267
+ </ul>\n\
268
+ </li>\n\
269
+ </ul>\n\
270
+ <li><a href=\"#pseudo-elements\">7. Pseudo-elements</a>\n\
271
+ <ul>\n\
272
+ <li><a href=\"#first-line\">7.1. The ::first-line pseudo-element</a>\n\
273
+ <li><a href=\"#first-letter\">7.2. The ::first-letter pseudo-element</a>\n\
274
+ <li><a href=\"#UIfragments\">7.3. The ::selection pseudo-element</a>\n\
275
+ <li><a href=\"#gen-content\">7.4. The ::before and ::after pseudo-elements</a></li>\n\
276
+ </ul>\n\
277
+ <li class=\"tocline2\"><a href=\"#combinators\">8. Combinators</a>\n\
278
+ <ul class=\"toc\">\n\
279
+ <li class=\"tocline3\"><a href=\"#descendant-combinators\">8.1. Descendant combinators</a>\n\
280
+ <li class=\"tocline3\"><a href=\"#child-combinators\">8.2. Child combinators</a>\n\
281
+ <li class=\"tocline3\"><a href=\"#sibling-combinators\">8.3. Sibling combinators</a>\n\
282
+ <ul class=\"toc\">\n\
283
+ <li class=\"tocline4\"><a href=\"#adjacent-sibling-combinators\">8.3.1. Adjacent sibling combinator</a>\n\
284
+ <li class=\"tocline4\"><a href=\"#general-sibling-combinators\">8.3.2. General sibling combinator</a></li>\n\
285
+ </ul>\n\
286
+ </li>\n\
287
+ </ul>\n\
288
+ <li class=\"tocline2\"><a href=\"#specificity\">9. Calculating a selector's specificity</a>\n\
289
+ <li class=\"tocline2\"><a href=\"#w3cselgrammar\">10. The grammar of Selectors</a>\n\
290
+ <ul class=\"toc\">\n\
291
+ <li class=\"tocline3\"><a href=\"#grammar\">10.1. Grammar</a>\n\
292
+ <li class=\"tocline3\"><a href=\"#lex\">10.2. Lexical scanner</a></li>\n\
293
+ </ul>\n\
294
+ <li class=\"tocline2\"><a href=\"#downlevel\">11. Namespaces and down-level clients</a>\n\
295
+ <li class=\"tocline2\"><a href=\"#profiling\">12. Profiles</a>\n\
296
+ <li><a href=\"#Conformance\">13. Conformance and requirements</a>\n\
297
+ <li><a href=\"#Tests\">14. Tests</a>\n\
298
+ <li><a href=\"#ACKS\">15. Acknowledgements</a>\n\
299
+ <li class=\"tocline2\"><a href=\"#references\">16. References</a>\n\
300
+ </ul>\n\
301
+ \n\
302
+ </div>\n\
303
+ \n\
304
+ <h2><a name=context>1. Introduction</a></h2>\n\
305
+ \n\
306
+ <h3><a name=dependencies></a>1.1. Dependencies</h3>\n\
307
+ \n\
308
+ <p>Some features of this specification are specific to CSS, or have\n\
309
+ particular limitations or rules specific to CSS. In this\n\
310
+ specification, these have been described in terms of CSS2.1. <a\n\
311
+ href=\"#refsCSS21\">[CSS21]</a></p>\n\
312
+ \n\
313
+ <h3><a name=terminology></a>1.2. Terminology</h3>\n\
314
+ \n\
315
+ <p>All of the text of this specification is normative except\n\
316
+ examples, notes, and sections explicitly marked as\n\
317
+ non-normative.</p>\n\
318
+ \n\
319
+ <h3><a name=changesFromCSS2></a>1.3. Changes from CSS2</h3>\n\
320
+ \n\
321
+ <p><em>This section is non-normative.</em></p>\n\
322
+ \n\
323
+ <p>The main differences between the selectors in CSS2 and those in\n\
324
+ Selectors are:\n\
325
+ \n\
326
+ <ul>\n\
327
+ \n\
328
+ <li>the list of basic definitions (selector, group of selectors,\n\
329
+ simple selector, etc.) has been changed; in particular, what was\n\
330
+ referred to in CSS2 as a simple selector is now called a sequence\n\
331
+ of simple selectors, and the term \"simple selector\" is now used for\n\
332
+ the components of this sequence</li>\n\
333
+ \n\
334
+ <li>an optional namespace component is now allowed in type element\n\
335
+ selectors, the universal selector and attribute selectors</li>\n\
336
+ \n\
337
+ <li>a <a href=\"#general-sibling-combinators\">new combinator</a> has been introduced</li>\n\
338
+ \n\
339
+ <li>new simple selectors including substring matching attribute\n\
340
+ selectors, and new pseudo-classes</li>\n\
341
+ \n\
342
+ <li>new pseudo-elements, and introduction of the \"::\" convention\n\
343
+ for pseudo-elements</li>\n\
344
+ \n\
345
+ <li>the grammar has been rewritten</li>\n\
346
+ \n\
347
+ <li>profiles to be added to specifications integrating Selectors\n\
348
+ and defining the set of selectors which is actually supported by\n\
349
+ each specification</li>\n\
350
+ \n\
351
+ <li>Selectors are now a CSS3 Module and an independent\n\
352
+ specification; other specifications can now refer to this document\n\
353
+ independently of CSS</li>\n\
354
+ \n\
355
+ <li>the specification now has its own test suite</li>\n\
356
+ \n\
357
+ </ul>\n\
358
+ \n\
359
+ <h2><a name=selectors></a>2. Selectors</h2>\n\
360
+ \n\
361
+ <p><em>This section is non-normative, as it merely summarizes the\n\
362
+ following sections.</em></p>\n\
363
+ \n\
364
+ <p>A Selector represents a structure. This structure can be used as a\n\
365
+ condition (e.g. in a CSS rule) that determines which elements a\n\
366
+ selector matches in the document tree, or as a flat description of the\n\
367
+ HTML or XML fragment corresponding to that structure.</p>\n\
368
+ \n\
369
+ <p>Selectors may range from simple element names to rich contextual\n\
370
+ representations.</p>\n\
371
+ \n\
372
+ <p>The following table summarizes the Selector syntax:</p>\n\
373
+ \n\
374
+ <table class=\"selectorsReview\">\n\
375
+ <thead>\n\
376
+ <tr>\n\
377
+ <th class=\"pattern\">Pattern</th>\n\
378
+ <th class=\"meaning\">Meaning</th>\n\
379
+ <th class=\"described\">Described in section</th>\n\
380
+ <th class=\"origin\">First defined in CSS level</th></tr>\n\
381
+ <tbody>\n\
382
+ <tr>\n\
383
+ <td class=\"pattern\">*</td>\n\
384
+ <td class=\"meaning\">any element</td>\n\
385
+ <td class=\"described\"><a\n\
386
+ href=\"#universal-selector\">Universal\n\
387
+ selector</a></td>\n\
388
+ <td class=\"origin\">2</td></tr>\n\
389
+ <tr>\n\
390
+ <td class=\"pattern\">E</td>\n\
391
+ <td class=\"meaning\">an element of type E</td>\n\
392
+ <td class=\"described\"><a\n\
393
+ href=\"#type-selectors\">Type selector</a></td>\n\
394
+ <td class=\"origin\">1</td></tr>\n\
395
+ <tr>\n\
396
+ <td class=\"pattern\">E[foo]</td>\n\
397
+ <td class=\"meaning\">an E element with a \"foo\" attribute</td>\n\
398
+ <td class=\"described\"><a\n\
399
+ href=\"#attribute-selectors\">Attribute\n\
400
+ selectors</a></td>\n\
401
+ <td class=\"origin\">2</td></tr>\n\
402
+ <tr>\n\
403
+ <td class=\"pattern\">E[foo=\"bar\"]</td>\n\
404
+ <td class=\"meaning\">an E element whose \"foo\" attribute value is exactly\n\
405
+ equal to \"bar\"</td>\n\
406
+ <td class=\"described\"><a\n\
407
+ href=\"#attribute-selectors\">Attribute\n\
408
+ selectors</a></td>\n\
409
+ <td class=\"origin\">2</td></tr>\n\
410
+ <tr>\n\
411
+ <td class=\"pattern\">E[foo~=\"bar\"]</td>\n\
412
+ <td class=\"meaning\">an E element whose \"foo\" attribute value is a list of\n\
413
+ space-separated values, one of which is exactly equal to \"bar\"</td>\n\
414
+ <td class=\"described\"><a\n\
415
+ href=\"#attribute-selectors\">Attribute\n\
416
+ selectors</a></td>\n\
417
+ <td class=\"origin\">2</td></tr>\n\
418
+ <tr>\n\
419
+ <td class=\"pattern\">E[foo^=\"bar\"]</td>\n\
420
+ <td class=\"meaning\">an E element whose \"foo\" attribute value begins exactly\n\
421
+ with the string \"bar\"</td>\n\
422
+ <td class=\"described\"><a\n\
423
+ href=\"#attribute-selectors\">Attribute\n\
424
+ selectors</a></td>\n\
425
+ <td class=\"origin\">3</td></tr>\n\
426
+ <tr>\n\
427
+ <td class=\"pattern\">E[foo$=\"bar\"]</td>\n\
428
+ <td class=\"meaning\">an E element whose \"foo\" attribute value ends exactly\n\
429
+ with the string \"bar\"</td>\n\
430
+ <td class=\"described\"><a\n\
431
+ href=\"#attribute-selectors\">Attribute\n\
432
+ selectors</a></td>\n\
433
+ <td class=\"origin\">3</td></tr>\n\
434
+ <tr>\n\
435
+ <td class=\"pattern\">E[foo*=\"bar\"]</td>\n\
436
+ <td class=\"meaning\">an E element whose \"foo\" attribute value contains the\n\
437
+ substring \"bar\"</td>\n\
438
+ <td class=\"described\"><a\n\
439
+ href=\"#attribute-selectors\">Attribute\n\
440
+ selectors</a></td>\n\
441
+ <td class=\"origin\">3</td></tr>\n\
442
+ <tr>\n\
443
+ <td class=\"pattern\">E[hreflang|=\"en\"]</td>\n\
444
+ <td class=\"meaning\">an E element whose \"hreflang\" attribute has a hyphen-separated\n\
445
+ list of values beginning (from the left) with \"en\"</td>\n\
446
+ <td class=\"described\"><a\n\
447
+ href=\"#attribute-selectors\">Attribute\n\
448
+ selectors</a></td>\n\
449
+ <td class=\"origin\">2</td></tr>\n\
450
+ <tr>\n\
451
+ <td class=\"pattern\">E:root</td>\n\
452
+ <td class=\"meaning\">an E element, root of the document</td>\n\
453
+ <td class=\"described\"><a\n\
454
+ href=\"#structural-pseudos\">Structural\n\
455
+ pseudo-classes</a></td>\n\
456
+ <td class=\"origin\">3</td></tr>\n\
457
+ <tr>\n\
458
+ <td class=\"pattern\">E:nth-child(n)</td>\n\
459
+ <td class=\"meaning\">an E element, the n-th child of its parent</td>\n\
460
+ <td class=\"described\"><a\n\
461
+ href=\"#structural-pseudos\">Structural\n\
462
+ pseudo-classes</a></td>\n\
463
+ <td class=\"origin\">3</td></tr>\n\
464
+ <tr>\n\
465
+ <td class=\"pattern\">E:nth-last-child(n)</td>\n\
466
+ <td class=\"meaning\">an E element, the n-th child of its parent, counting\n\
467
+ from the last one</td>\n\
468
+ <td class=\"described\"><a\n\
469
+ href=\"#structural-pseudos\">Structural\n\
470
+ pseudo-classes</a></td>\n\
471
+ <td class=\"origin\">3</td></tr>\n\
472
+ <tr>\n\
473
+ <td class=\"pattern\">E:nth-of-type(n)</td>\n\
474
+ <td class=\"meaning\">an E element, the n-th sibling of its type</td>\n\
475
+ <td class=\"described\"><a\n\
476
+ href=\"#structural-pseudos\">Structural\n\
477
+ pseudo-classes</a></td>\n\
478
+ <td class=\"origin\">3</td></tr>\n\
479
+ <tr>\n\
480
+ <td class=\"pattern\">E:nth-last-of-type(n)</td>\n\
481
+ <td class=\"meaning\">an E element, the n-th sibling of its type, counting\n\
482
+ from the last one</td>\n\
483
+ <td class=\"described\"><a\n\
484
+ href=\"#structural-pseudos\">Structural\n\
485
+ pseudo-classes</a></td>\n\
486
+ <td class=\"origin\">3</td></tr>\n\
487
+ <tr>\n\
488
+ <td class=\"pattern\">E:first-child</td>\n\
489
+ <td class=\"meaning\">an E element, first child of its parent</td>\n\
490
+ <td class=\"described\"><a\n\
491
+ href=\"#structural-pseudos\">Structural\n\
492
+ pseudo-classes</a></td>\n\
493
+ <td class=\"origin\">2</td></tr>\n\
494
+ <tr>\n\
495
+ <td class=\"pattern\">E:last-child</td>\n\
496
+ <td class=\"meaning\">an E element, last child of its parent</td>\n\
497
+ <td class=\"described\"><a\n\
498
+ href=\"#structural-pseudos\">Structural\n\
499
+ pseudo-classes</a></td>\n\
500
+ <td class=\"origin\">3</td></tr>\n\
501
+ <tr>\n\
502
+ <td class=\"pattern\">E:first-of-type</td>\n\
503
+ <td class=\"meaning\">an E element, first sibling of its type</td>\n\
504
+ <td class=\"described\"><a\n\
505
+ href=\"#structural-pseudos\">Structural\n\
506
+ pseudo-classes</a></td>\n\
507
+ <td class=\"origin\">3</td></tr>\n\
508
+ <tr>\n\
509
+ <td class=\"pattern\">E:last-of-type</td>\n\
510
+ <td class=\"meaning\">an E element, last sibling of its type</td>\n\
511
+ <td class=\"described\"><a\n\
512
+ href=\"#structural-pseudos\">Structural\n\
513
+ pseudo-classes</a></td>\n\
514
+ <td class=\"origin\">3</td></tr>\n\
515
+ <tr>\n\
516
+ <td class=\"pattern\">E:only-child</td>\n\
517
+ <td class=\"meaning\">an E element, only child of its parent</td>\n\
518
+ <td class=\"described\"><a\n\
519
+ href=\"#structural-pseudos\">Structural\n\
520
+ pseudo-classes</a></td>\n\
521
+ <td class=\"origin\">3</td></tr>\n\
522
+ <tr>\n\
523
+ <td class=\"pattern\">E:only-of-type</td>\n\
524
+ <td class=\"meaning\">an E element, only sibling of its type</td>\n\
525
+ <td class=\"described\"><a\n\
526
+ href=\"#structural-pseudos\">Structural\n\
527
+ pseudo-classes</a></td>\n\
528
+ <td class=\"origin\">3</td></tr>\n\
529
+ <tr>\n\
530
+ <td class=\"pattern\">E:empty</td>\n\
531
+ <td class=\"meaning\">an E element that has no children (including text\n\
532
+ nodes)</td>\n\
533
+ <td class=\"described\"><a\n\
534
+ href=\"#structural-pseudos\">Structural\n\
535
+ pseudo-classes</a></td>\n\
536
+ <td class=\"origin\">3</td></tr>\n\
537
+ <tr>\n\
538
+ <td class=\"pattern\">E:link<br>E:visited</td>\n\
539
+ <td class=\"meaning\">an E element being the source anchor of a hyperlink of\n\
540
+ which the target is not yet visited (:link) or already visited\n\
541
+ (:visited)</td>\n\
542
+ <td class=\"described\"><a\n\
543
+ href=\"#link\">The link\n\
544
+ pseudo-classes</a></td>\n\
545
+ <td class=\"origin\">1</td></tr>\n\
546
+ <tr>\n\
547
+ <td class=\"pattern\">E:active<br>E:hover<br>E:focus</td>\n\
548
+ <td class=\"meaning\">an E element during certain user actions</td>\n\
549
+ <td class=\"described\"><a\n\
550
+ href=\"#useraction-pseudos\">The user\n\
551
+ action pseudo-classes</a></td>\n\
552
+ <td class=\"origin\">1 and 2</td></tr>\n\
553
+ <tr>\n\
554
+ <td class=\"pattern\">E:target</td>\n\
555
+ <td class=\"meaning\">an E element being the target of the referring URI</td>\n\
556
+ <td class=\"described\"><a\n\
557
+ href=\"#target-pseudo\">The target\n\
558
+ pseudo-class</a></td>\n\
559
+ <td class=\"origin\">3</td></tr>\n\
560
+ <tr>\n\
561
+ <td class=\"pattern\">E:lang(fr)</td>\n\
562
+ <td class=\"meaning\">an element of type E in language \"fr\" (the document\n\
563
+ language specifies how language is determined)</td>\n\
564
+ <td class=\"described\"><a\n\
565
+ href=\"#lang-pseudo\">The :lang()\n\
566
+ pseudo-class</a></td>\n\
567
+ <td class=\"origin\">2</td></tr>\n\
568
+ <tr>\n\
569
+ <td class=\"pattern\">E:enabled<br>E:disabled</td>\n\
570
+ <td class=\"meaning\">a user interface element E which is enabled or\n\
571
+ disabled</td>\n\
572
+ <td class=\"described\"><a\n\
573
+ href=\"#UIstates\">The UI element states\n\
574
+ pseudo-classes</a></td>\n\
575
+ <td class=\"origin\">3</td></tr>\n\
576
+ <tr>\n\
577
+ <td class=\"pattern\">E:checked<!--<br>E:indeterminate--></td>\n\
578
+ <td class=\"meaning\">a user interface element E which is checked<!-- or in an\n\
579
+ indeterminate state--> (for instance a radio-button or checkbox)</td>\n\
580
+ <td class=\"described\"><a\n\
581
+ href=\"#UIstates\">The UI element states\n\
582
+ pseudo-classes</a></td>\n\
583
+ <td class=\"origin\">3</td></tr>\n\
584
+ <tr>\n\
585
+ <td class=\"pattern\">E::first-line</td>\n\
586
+ <td class=\"meaning\">the first formatted line of an E element</td>\n\
587
+ <td class=\"described\"><a\n\
588
+ href=\"#first-line\">The ::first-line\n\
589
+ pseudo-element</a></td>\n\
590
+ <td class=\"origin\">1</td></tr>\n\
591
+ <tr>\n\
592
+ <td class=\"pattern\">E::first-letter</td>\n\
593
+ <td class=\"meaning\">the first formatted letter of an E element</td>\n\
594
+ <td class=\"described\"><a\n\
595
+ href=\"#first-letter\">The ::first-letter\n\
596
+ pseudo-element</a></td>\n\
597
+ <td class=\"origin\">1</td></tr>\n\
598
+ <tr>\n\
599
+ <td class=\"pattern\">E::selection</td>\n\
600
+ <td class=\"meaning\">the portion of an E element that is currently\n\
601
+ selected/highlighted by the user</td>\n\
602
+ <td class=\"described\"><a\n\
603
+ href=\"#UIfragments\">The UI element\n\
604
+ fragments pseudo-elements</a></td>\n\
605
+ <td class=\"origin\">3</td></tr>\n\
606
+ <tr>\n\
607
+ <td class=\"pattern\">E::before</td>\n\
608
+ <td class=\"meaning\">generated content before an E element</td>\n\
609
+ <td class=\"described\"><a\n\
610
+ href=\"#gen-content\">The ::before\n\
611
+ pseudo-element</a></td>\n\
612
+ <td class=\"origin\">2</td></tr>\n\
613
+ <tr>\n\
614
+ <td class=\"pattern\">E::after</td>\n\
615
+ <td class=\"meaning\">generated content after an E element</td>\n\
616
+ <td class=\"described\"><a\n\
617
+ href=\"#gen-content\">The ::after\n\
618
+ pseudo-element</a></td>\n\
619
+ <td class=\"origin\">2</td></tr>\n\
620
+ <tr>\n\
621
+ <td class=\"pattern\">E.warning</td>\n\
622
+ <td class=\"meaning\">an E element whose class is\n\
623
+ \"warning\" (the document language specifies how class is determined).</td>\n\
624
+ <td class=\"described\"><a\n\
625
+ href=\"#class-html\">Class\n\
626
+ selectors</a></td>\n\
627
+ <td class=\"origin\">1</td></tr>\n\
628
+ <tr>\n\
629
+ <td class=\"pattern\">E#myid</td>\n\
630
+ <td class=\"meaning\">an E element with ID equal to \"myid\".</td>\n\
631
+ <td class=\"described\"><a\n\
632
+ href=\"#id-selectors\">ID\n\
633
+ selectors</a></td>\n\
634
+ <td class=\"origin\">1</td></tr>\n\
635
+ <tr>\n\
636
+ <td class=\"pattern\">E:not(s)</td>\n\
637
+ <td class=\"meaning\">an E element that does not match simple selector s</td>\n\
638
+ <td class=\"described\"><a\n\
639
+ href=\"#negation\">Negation\n\
640
+ pseudo-class</a></td>\n\
641
+ <td class=\"origin\">3</td></tr>\n\
642
+ <tr>\n\
643
+ <td class=\"pattern\">E F</td>\n\
644
+ <td class=\"meaning\">an F element descendant of an E element</td>\n\
645
+ <td class=\"described\"><a\n\
646
+ href=\"#descendant-combinators\">Descendant\n\
647
+ combinator</a></td>\n\
648
+ <td class=\"origin\">1</td></tr>\n\
649
+ <tr>\n\
650
+ <td class=\"pattern\">E &gt; F</td>\n\
651
+ <td class=\"meaning\">an F element child of an E element</td>\n\
652
+ <td class=\"described\"><a\n\
653
+ href=\"#child-combinators\">Child\n\
654
+ combinator</a></td>\n\
655
+ <td class=\"origin\">2</td></tr>\n\
656
+ <tr>\n\
657
+ <td class=\"pattern\">E + F</td>\n\
658
+ <td class=\"meaning\">an F element immediately preceded by an E element</td>\n\
659
+ <td class=\"described\"><a\n\
660
+ href=\"#adjacent-sibling-combinators\">Adjacent sibling combinator</a></td>\n\
661
+ <td class=\"origin\">2</td></tr>\n\
662
+ <tr>\n\
663
+ <td class=\"pattern\">E ~ F</td>\n\
664
+ <td class=\"meaning\">an F element preceded by an E element</td>\n\
665
+ <td class=\"described\"><a\n\
666
+ href=\"#general-sibling-combinators\">General sibling combinator</a></td>\n\
667
+ <td class=\"origin\">3</td></tr></tbody></table>\n\
668
+ \n\
669
+ <p>The meaning of each selector is derived from the table above by\n\
670
+ prepending \"matches\" to the contents of each cell in the \"Meaning\"\n\
671
+ column.</p>\n\
672
+ \n\
673
+ <h2><a name=casesens>3. Case sensitivity</a></h2>\n\
674
+ \n\
675
+ <p>The case sensitivity of document language element names, attribute\n\
676
+ names, and attribute values in selectors depends on the document\n\
677
+ language. For example, in HTML, element names are case-insensitive,\n\
678
+ but in XML, they are case-sensitive.</p>\n\
679
+ \n\
680
+ <h2><a name=selector-syntax>4. Selector syntax</a></h2>\n\
681
+ \n\
682
+ <p>A <dfn><a name=selector>selector</a></dfn> is a chain of one\n\
683
+ or more <a href=\"#sequence\">sequences of simple selectors</a>\n\
684
+ separated by <a href=\"#combinators\">combinators</a>.</p>\n\
685
+ \n\
686
+ <p>A <dfn><a name=sequence>sequence of simple selectors</a></dfn>\n\
687
+ is a chain of <a href=\"#simple-selectors-dfn\">simple selectors</a>\n\
688
+ that are not separated by a <a href=\"#combinators\">combinator</a>. It\n\
689
+ always begins with a <a href=\"#type-selectors\">type selector</a> or a\n\
690
+ <a href=\"#universal-selector\">universal selector</a>. No other type\n\
691
+ selector or universal selector is allowed in the sequence.</p>\n\
692
+ \n\
693
+ <p>A <dfn><a name=simple-selectors-dfn></a><a\n\
694
+ href=\"#simple-selectors\">simple selector</a></dfn> is either a <a\n\
695
+ href=\"#type-selectors\">type selector</a>, <a\n\
696
+ href=\"#universal-selector\">universal selector</a>, <a\n\
697
+ href=\"#attribute-selectors\">attribute selector</a>, <a\n\
698
+ href=\"#class-html\">class selector</a>, <a\n\
699
+ href=\"#id-selectors\">ID selector</a>, <a\n\
700
+ href=\"#content-selectors\">content selector</a>, or <a\n\
701
+ href=\"#pseudo-classes\">pseudo-class</a>. One <a\n\
702
+ href=\"#pseudo-elements\">pseudo-element</a> may be appended to the last\n\
703
+ sequence of simple selectors.</p>\n\
704
+ \n\
705
+ <p><dfn>Combinators</dfn> are: white space, &quot;greater-than\n\
706
+ sign&quot; (U+003E, <code>&gt;</code>), &quot;plus sign&quot; (U+002B,\n\
707
+ <code>+</code>) and &quot;tilde&quot; (U+007E, <code>~</code>). White\n\
708
+ space may appear between a combinator and the simple selectors around\n\
709
+ it. <a name=whitespace></a>Only the characters \"space\" (U+0020), \"tab\"\n\
710
+ (U+0009), \"line feed\" (U+000A), \"carriage return\" (U+000D), and \"form\n\
711
+ feed\" (U+000C) can occur in white space. Other space-like characters,\n\
712
+ such as \"em-space\" (U+2003) and \"ideographic space\" (U+3000), are\n\
713
+ never part of white space.</p>\n\
714
+ \n\
715
+ <p>The elements of a document tree that are represented by a selector\n\
716
+ are the <dfn><a name=subject></a>subjects of the selector</dfn>. A\n\
717
+ selector consisting of a single sequence of simple selectors\n\
718
+ represents any element satisfying its requirements. Prepending another\n\
719
+ sequence of simple selectors and a combinator to a sequence imposes\n\
720
+ additional matching constraints, so the subjects of a selector are\n\
721
+ always a subset of the elements represented by the last sequence of\n\
722
+ simple selectors.</p>\n\
723
+ \n\
724
+ <p>An empty selector, containing no sequence of simple selectors and\n\
725
+ no pseudo-element, is an <a href=\"#Conformance\">invalid\n\
726
+ selector</a>.</p>\n\
727
+ \n\
728
+ <h2><a name=grouping>5. Groups of selectors</a></h2>\n\
729
+ \n\
730
+ <p>When several selectors share the same declarations, they may be\n\
731
+ grouped into a comma-separated list. (A comma is U+002C.)</p>\n\
732
+ \n\
733
+ <div class=\"example\">\n\
734
+ <p>CSS examples:</p>\n\
735
+ <p>In this example, we condense three rules with identical\n\
736
+ declarations into one. Thus,</p>\n\
737
+ <pre>h1 { font-family: sans-serif }\n\
738
+ h2 { font-family: sans-serif }\n\
739
+ h3 { font-family: sans-serif }</pre>\n\
740
+ <p>is equivalent to:</p>\n\
741
+ <pre>h1, h2, h3 { font-family: sans-serif }</pre>\n\
742
+ </div>\n\
743
+ \n\
744
+ <p><strong>Warning</strong>: the equivalence is true in this example\n\
745
+ because all the selectors are valid selectors. If just one of these\n\
746
+ selectors were invalid, the entire group of selectors would be\n\
747
+ invalid. This would invalidate the rule for all three heading\n\
748
+ elements, whereas in the former case only one of the three individual\n\
749
+ heading rules would be invalidated.</p>\n\
750
+ \n\
751
+ \n\
752
+ <h2><a name=simple-selectors>6. Simple selectors</a></h2>\n\
753
+ \n\
754
+ <h3><a name=type-selectors>6.1. Type selector</a></h3>\n\
755
+ \n\
756
+ <p>A <dfn>type selector</dfn> is the name of a document language\n\
757
+ element type. A type selector represents an instance of the element\n\
758
+ type in the document tree.</p>\n\
759
+ \n\
760
+ <div class=\"example\">\n\
761
+ <p>Example:</p>\n\
762
+ <p>The following selector represents an <code>h1</code> element in the document tree:</p>\n\
763
+ <pre>h1</pre>\n\
764
+ </div>\n\
765
+ \n\
766
+ \n\
767
+ <h4><a name=typenmsp>6.1.1. Type selectors and namespaces</a></h4>\n\
768
+ \n\
769
+ <p>Type selectors allow an optional namespace (<a\n\
770
+ href=\"#refsXMLNAMES\">[XMLNAMES]</a>) component. A namespace prefix\n\
771
+ that has been previously declared may be prepended to the element name\n\
772
+ separated by the namespace separator &quot;vertical bar&quot;\n\
773
+ (U+007C, <code>|</code>).</p>\n\
774
+ \n\
775
+ <p>The namespace component may be left empty to indicate that the\n\
776
+ selector is only to represent elements with no declared namespace.</p>\n\
777
+ \n\
778
+ <p>An asterisk may be used for the namespace prefix, indicating that\n\
779
+ the selector represents elements in any namespace (including elements\n\
780
+ with no namespace).</p>\n\
781
+ \n\
782
+ <p>Element type selectors that have no namespace component (no\n\
783
+ namespace separator), represent elements without regard to the\n\
784
+ element's namespace (equivalent to \"<code>*|</code>\") unless a default\n\
785
+ namespace has been declared. If a default namespace has been declared,\n\
786
+ the selector will represent only elements in the default\n\
787
+ namespace.</p>\n\
788
+ \n\
789
+ <p>A type selector containing a namespace prefix that has not been\n\
790
+ previously declared is an <a href=\"#Conformance\">invalid</a> selector.\n\
791
+ The mechanism for declaring a namespace prefix is left up to the\n\
792
+ language implementing Selectors. In CSS, such a mechanism is defined\n\
793
+ in the General Syntax module.</p>\n\
794
+ \n\
795
+ <p>In a namespace-aware client, element type selectors will only match\n\
796
+ against the <a\n\
797
+ href=\"http://www.w3.org/TR/REC-xml-names/#NT-LocalPart\">local part</a>\n\
798
+ of the element's <a\n\
799
+ href=\"http://www.w3.org/TR/REC-xml-names/#ns-qualnames\">qualified\n\
800
+ name</a>. See <a href=\"#downlevel\">below</a> for notes about matching\n\
801
+ behaviors in down-level clients.</p>\n\
802
+ \n\
803
+ <p>In summary:</p>\n\
804
+ \n\
805
+ <dl>\n\
806
+ <dt><code>ns|E</code></dt>\n\
807
+ <dd>elements with name E in namespace ns</dd>\n\
808
+ <dt><code>*|E</code></dt>\n\
809
+ <dd>elements with name E in any namespace, including those without any\n\
810
+ declared namespace</dd>\n\
811
+ <dt><code>|E</code></dt>\n\
812
+ <dd>elements with name E without any declared namespace</dd>\n\
813
+ <dt><code>E</code></dt>\n\
814
+ <dd>if no default namespace has been specified, this is equivalent to *|E.\n\
815
+ Otherwise it is equivalent to ns|E where ns is the default namespace.</dd>\n\
816
+ </dl>\n\
817
+ \n\
818
+ <div class=\"example\">\n\
819
+ <p>CSS examples:</p>\n\
820
+ \n\
821
+ <pre>@namespace foo url(http://www.example.com);\n\
822
+ foo|h1 { color: blue }\n\
823
+ foo|* { color: yellow }\n\
824
+ |h1 { color: red }\n\
825
+ *|h1 { color: green }\n\
826
+ h1 { color: green }</pre>\n\
827
+ \n\
828
+ <p>The first rule will match only <code>h1</code> elements in the\n\
829
+ \"http://www.example.com\" namespace.</p>\n\
830
+ \n\
831
+ <p>The second rule will match all elements in the\n\
832
+ \"http://www.example.com\" namespace.</p>\n\
833
+ \n\
834
+ <p>The third rule will match only <code>h1</code> elements without\n\
835
+ any declared namespace.</p>\n\
836
+ \n\
837
+ <p>The fourth rule will match <code>h1</code> elements in any\n\
838
+ namespace (including those without any declared namespace).</p>\n\
839
+ \n\
840
+ <p>The last rule is equivalent to the fourth rule because no default\n\
841
+ namespace has been defined.</p>\n\
842
+ \n\
843
+ </div>\n\
844
+ \n\
845
+ <h3><a name=universal-selector>6.2. Universal selector</a> </h3>\n\
846
+ \n\
847
+ <p>The <dfn>universal selector</dfn>, written &quot;asterisk&quot;\n\
848
+ (<code>*</code>), represents the qualified name of any element\n\
849
+ type. It represents any single element in the document tree in any\n\
850
+ namespace (including those without any declared namespace) if no\n\
851
+ default namespace has been specified. If a default namespace has been\n\
852
+ specified, see <a href=\"#univnmsp\">Universal selector and\n\
853
+ Namespaces</a> below.</p>\n\
854
+ \n\
855
+ <p>If the universal selector is not the only component of a sequence\n\
856
+ of simple selectors, the <code>*</code> may be omitted.</p>\n\
857
+ \n\
858
+ <div class=\"example\">\n\
859
+ <p>Examples:</p>\n\
860
+ <ul>\n\
861
+ <li><code>*[hreflang|=en]</code> and <code>[hreflang|=en]</code> are equivalent,</li>\n\
862
+ <li><code>*.warning</code> and <code>.warning</code> are equivalent,</li>\n\
863
+ <li><code>*#myid</code> and <code>#myid</code> are equivalent.</li>\n\
864
+ </ul>\n\
865
+ </div>\n\
866
+ \n\
867
+ <p class=\"note\"><strong>Note:</strong> it is recommended that the\n\
868
+ <code>*</code>, representing the universal selector, not be\n\
869
+ omitted.</p>\n\
870
+ \n\
871
+ <h4><a name=univnmsp>6.2.1. Universal selector and namespaces</a></h4>\n\
872
+ \n\
873
+ <p>The universal selector allows an optional namespace component. It\n\
874
+ is used as follows:</p>\n\
875
+ \n\
876
+ <dl>\n\
877
+ <dt><code>ns|*</code></dt>\n\
878
+ <dd>all elements in namespace ns</dd>\n\
879
+ <dt><code>*|*</code></dt>\n\
880
+ <dd>all elements</dd>\n\
881
+ <dt><code>|*</code></dt>\n\
882
+ <dd>all elements without any declared namespace</dd>\n\
883
+ <dt><code>*</code></dt>\n\
884
+ <dd>if no default namespace has been specified, this is equivalent to *|*.\n\
885
+ Otherwise it is equivalent to ns|* where ns is the default namespace.</dd>\n\
886
+ </dl>\n\
887
+ \n\
888
+ <p>A universal selector containing a namespace prefix that has not\n\
889
+ been previously declared is an <a href=\"#Conformance\">invalid</a>\n\
890
+ selector. The mechanism for declaring a namespace prefix is left up\n\
891
+ to the language implementing Selectors. In CSS, such a mechanism is\n\
892
+ defined in the General Syntax module.</p>\n\
893
+ \n\
894
+ \n\
895
+ <h3><a name=attribute-selectors>6.3. Attribute selectors</a></h3>\n\
896
+ \n\
897
+ <p>Selectors allow the representation of an element's attributes. When\n\
898
+ a selector is used as an expression to match against an element,\n\
899
+ attribute selectors must be considered to match an element if that\n\
900
+ element has an attribute that matches the attribute represented by the\n\
901
+ attribute selector.</p>\n\
902
+ \n\
903
+ <h4><a name=attribute-representation>6.3.1. Attribute presence and values\n\
904
+ selectors</a></h4>\n\
905
+ \n\
906
+ <p>CSS2 introduced four attribute selectors:</p>\n\
907
+ \n\
908
+ <dl>\n\
909
+ <dt><code>[att]</code>\n\
910
+ <dd>Represents an element with the <code>att</code> attribute, whatever the value of\n\
911
+ the attribute.</dd>\n\
912
+ <dt><code>[att=val]</code></dt>\n\
913
+ <dd>Represents an element with the <code>att</code> attribute whose value is exactly\n\
914
+ \"val\".</dd>\n\
915
+ <dt><code>[att~=val]</code></dt>\n\
916
+ <dd>Represents an element with the <code>att</code> attribute whose value is a <a\n\
917
+ href=\"#whitespace\">whitespace</a>-separated list of words, one of\n\
918
+ which is exactly \"val\". If \"val\" contains whitespace, it will never\n\
919
+ represent anything (since the words are <em>separated</em> by\n\
920
+ spaces).</dd>\n\
921
+ <dt><code>[att|=val]</code>\n\
922
+ <dd>Represents an element with the <code>att</code> attribute, its value either\n\
923
+ being exactly \"val\" or beginning with \"val\" immediately followed by\n\
924
+ \"-\" (U+002D). This is primarily intended to allow language subcode\n\
925
+ matches (e.g., the <code>hreflang</code> attribute on the\n\
926
+ <code>link</code> element in HTML) as described in RFC 3066 (<a\n\
927
+ href=\"#refsRFC3066\">[RFC3066]</a>). For <code>lang</code> (or\n\
928
+ <code>xml:lang</code>) language subcode matching, please see <a\n\
929
+ href=\"#lang-pseudo\">the <code>:lang</code> pseudo-class</a>.</dd>\n\
930
+ </dl>\n\
931
+ \n\
932
+ <p>Attribute values must be identifiers or strings. The\n\
933
+ case-sensitivity of attribute names and values in selectors depends on\n\
934
+ the document language.</p>\n\
935
+ \n\
936
+ <div class=\"example\">\n\
937
+ \n\
938
+ <p>Examples:</p>\n\
939
+ \n\
940
+ <p>The following attribute selector represents an <code>h1</code>\n\
941
+ element that carries the <code>title</code> attribute, whatever its\n\
942
+ value:</p>\n\
943
+ \n\
944
+ <pre>h1[title]</pre>\n\
945
+ \n\
946
+ <p>In the following example, the selector represents a\n\
947
+ <code>span</code> element whose <code>class</code> attribute has\n\
948
+ exactly the value \"example\":</p>\n\
949
+ \n\
950
+ <pre>span[class=\"example\"]</pre>\n\
951
+ \n\
952
+ <p>Multiple attribute selectors can be used to represent several\n\
953
+ attributes of an element, or several conditions on the same\n\
954
+ attribute. Here, the selector represents a <code>span</code> element\n\
955
+ whose <code>hello</code> attribute has exactly the value \"Cleveland\"\n\
956
+ and whose <code>goodbye</code> attribute has exactly the value\n\
957
+ \"Columbus\":</p>\n\
958
+ \n\
959
+ <pre>span[hello=\"Cleveland\"][goodbye=\"Columbus\"]</pre>\n\
960
+ \n\
961
+ <p>The following selectors illustrate the differences between \"=\"\n\
962
+ and \"~=\". The first selector will represent, for example, the value\n\
963
+ \"copyright copyleft copyeditor\" on a <code>rel</code> attribute. The\n\
964
+ second selector will only represent an <code>a</code> element with\n\
965
+ an <code>href</code> attribute having the exact value\n\
966
+ \"http://www.w3.org/\".</p>\n\
967
+ \n\
968
+ <pre>a[rel~=\"copyright\"]\n\
969
+ a[href=\"http://www.w3.org/\"]</pre>\n\
970
+ \n\
971
+ <p>The following selector represents a <code>link</code> element\n\
972
+ whose <code>hreflang</code> attribute is exactly \"fr\".</p>\n\
973
+ \n\
974
+ <pre>link[hreflang=fr]</pre>\n\
975
+ \n\
976
+ <p>The following selector represents a <code>link</code> element for\n\
977
+ which the values of the <code>hreflang</code> attribute begins with\n\
978
+ \"en\", including \"en\", \"en-US\", and \"en-cockney\":</p>\n\
979
+ \n\
980
+ <pre>link[hreflang|=\"en\"]</pre>\n\
981
+ \n\
982
+ <p>Similarly, the following selectors represents a\n\
983
+ <code>DIALOGUE</code> element whenever it has one of two different\n\
984
+ values for an attribute <code>character</code>:</p>\n\
985
+ \n\
986
+ <pre>DIALOGUE[character=romeo]\n\
987
+ DIALOGUE[character=juliet]</pre>\n\
988
+ \n\
989
+ </div>\n\
990
+ \n\
991
+ <h4><a name=attribute-substrings></a>6.3.2. Substring matching attribute\n\
992
+ selectors</h4>\n\
993
+ \n\
994
+ <p>Three additional attribute selectors are provided for matching\n\
995
+ substrings in the value of an attribute:</p>\n\
996
+ \n\
997
+ <dl>\n\
998
+ <dt><code>[att^=val]</code></dt>\n\
999
+ <dd>Represents an element with the <code>att</code> attribute whose value begins\n\
1000
+ with the prefix \"val\".</dd>\n\
1001
+ <dt><code>[att$=val]</code>\n\
1002
+ <dd>Represents an element with the <code>att</code> attribute whose value ends with\n\
1003
+ the suffix \"val\".</dd>\n\
1004
+ <dt><code>[att*=val]</code>\n\
1005
+ <dd>Represents an element with the <code>att</code> attribute whose value contains\n\
1006
+ at least one instance of the substring \"val\".</dd>\n\
1007
+ </dl>\n\
1008
+ \n\
1009
+ <p>Attribute values must be identifiers or strings. The\n\
1010
+ case-sensitivity of attribute names in selectors depends on the\n\
1011
+ document language.</p>\n\
1012
+ \n\
1013
+ <div class=\"example\">\n\
1014
+ <p>Examples:</p>\n\
1015
+ <p>The following selector represents an HTML <code>object</code>, referencing an\n\
1016
+ image:</p>\n\
1017
+ <pre>object[type^=\"image/\"]</pre>\n\
1018
+ <p>The following selector represents an HTML anchor <code>a</code> with an\n\
1019
+ <code>href</code> attribute whose value ends with \".html\".</p>\n\
1020
+ <pre>a[href$=\".html\"]</pre>\n\
1021
+ <p>The following selector represents an HTML paragraph with a <code>title</code>\n\
1022
+ attribute whose value contains the substring \"hello\"</p>\n\
1023
+ <pre>p[title*=\"hello\"]</pre>\n\
1024
+ </div>\n\
1025
+ \n\
1026
+ <h4><a name=attrnmsp>6.3.3. Attribute selectors and namespaces</a></h4>\n\
1027
+ \n\
1028
+ <p>Attribute selectors allow an optional namespace component to the\n\
1029
+ attribute name. A namespace prefix that has been previously declared\n\
1030
+ may be prepended to the attribute name separated by the namespace\n\
1031
+ separator &quot;vertical bar&quot; (<code>|</code>). In keeping with\n\
1032
+ the Namespaces in the XML recommendation, default namespaces do not\n\
1033
+ apply to attributes, therefore attribute selectors without a namespace\n\
1034
+ component apply only to attributes that have no declared namespace\n\
1035
+ (equivalent to \"<code>|attr</code>\"). An asterisk may be used for the\n\
1036
+ namespace prefix indicating that the selector is to match all\n\
1037
+ attribute names without regard to the attribute's namespace.\n\
1038
+ \n\
1039
+ <p>An attribute selector with an attribute name containing a namespace\n\
1040
+ prefix that has not been previously declared is an <a\n\
1041
+ href=\"#Conformance\">invalid</a> selector. The mechanism for declaring\n\
1042
+ a namespace prefix is left up to the language implementing Selectors.\n\
1043
+ In CSS, such a mechanism is defined in the General Syntax module.\n\
1044
+ \n\
1045
+ <div class=\"example\">\n\
1046
+ <p>CSS examples:</p>\n\
1047
+ <pre>@namespace foo \"http://www.example.com\";\n\
1048
+ [foo|att=val] { color: blue }\n\
1049
+ [*|att] { color: yellow }\n\
1050
+ [|att] { color: green }\n\
1051
+ [att] { color: green }</pre>\n\
1052
+ \n\
1053
+ <p>The first rule will match only elements with the attribute\n\
1054
+ <code>att</code> in the \"http://www.example.com\" namespace with the\n\
1055
+ value \"val\".</p>\n\
1056
+ \n\
1057
+ <p>The second rule will match only elements with the attribute\n\
1058
+ <code>att</code> regardless of the namespace of the attribute\n\
1059
+ (including no declared namespace).</p>\n\
1060
+ \n\
1061
+ <p>The last two rules are equivalent and will match only elements\n\
1062
+ with the attribute <code>att</code> where the attribute is not\n\
1063
+ declared to be in a namespace.</p>\n\
1064
+ \n\
1065
+ </div>\n\
1066
+ \n\
1067
+ <h4><a name=def-values>6.3.4. Default attribute values in DTDs</a></h4>\n\
1068
+ \n\
1069
+ <p>Attribute selectors represent explicitly set attribute values in\n\
1070
+ the document tree. Default attribute values may be defined in a DTD or\n\
1071
+ elsewhere, but cannot always be selected by attribute\n\
1072
+ selectors. Selectors should be designed so that they work even if the\n\
1073
+ default values are not included in the document tree.</p>\n\
1074
+ \n\
1075
+ <p>More precisely, a UA is <em>not</em> required to read an \"external\n\
1076
+ subset\" of the DTD but <em>is</em> required to look for default\n\
1077
+ attribute values in the document's \"internal subset.\" (See <a\n\
1078
+ href=\"#refsXML10\">[XML10]</a> for definitions of these subsets.)</p>\n\
1079
+ \n\
1080
+ <p>A UA that recognizes an XML namespace <a\n\
1081
+ href=\"#refsXMLNAMES\">[XMLNAMES]</a> is not required to use its\n\
1082
+ knowledge of that namespace to treat default attribute values as if\n\
1083
+ they were present in the document. (For example, an XHTML UA is not\n\
1084
+ required to use its built-in knowledge of the XHTML DTD.)</p>\n\
1085
+ \n\
1086
+ <p class=\"note\"><strong>Note:</strong> Typically, implementations\n\
1087
+ choose to ignore external subsets.</p>\n\
1088
+ \n\
1089
+ <div class=\"example\">\n\
1090
+ <p>Example:</p>\n\
1091
+ \n\
1092
+ <p>Consider an element EXAMPLE with an attribute \"notation\" that has a\n\
1093
+ default value of \"decimal\". The DTD fragment might be</p>\n\
1094
+ \n\
1095
+ <pre class=\"dtd-example\">&lt;!ATTLIST EXAMPLE notation (decimal,octal) \"decimal\"></pre>\n\
1096
+ \n\
1097
+ <p>If the style sheet contains the rules</p>\n\
1098
+ \n\
1099
+ <pre>EXAMPLE[notation=decimal] { /*... default property settings ...*/ }\n\
1100
+ EXAMPLE[notation=octal] { /*... other settings...*/ }</pre>\n\
1101
+ \n\
1102
+ <p>the first rule will not match elements whose \"notation\" attribute\n\
1103
+ is set by default, i.e. not set explicitly. To catch all cases, the\n\
1104
+ attribute selector for the default value must be dropped:</p>\n\
1105
+ \n\
1106
+ <pre>EXAMPLE { /*... default property settings ...*/ }\n\
1107
+ EXAMPLE[notation=octal] { /*... other settings...*/ }</pre>\n\
1108
+ \n\
1109
+ <p>Here, because the selector <code>EXAMPLE[notation=octal]</code> is\n\
1110
+ more specific than the tag\n\
1111
+ selector alone, the style declarations in the second rule will override\n\
1112
+ those in the first for elements that have a \"notation\" attribute value\n\
1113
+ of \"octal\". Care has to be taken that all property declarations that\n\
1114
+ are to apply only to the default case are overridden in the non-default\n\
1115
+ cases' style rules.</p>\n\
1116
+ \n\
1117
+ </div>\n\
1118
+ \n\
1119
+ <h3><a name=class-html>6.4. Class selectors</a></h3>\n\
1120
+ \n\
1121
+ <p>Working with HTML, authors may use the period (U+002E,\n\
1122
+ <code>.</code>) notation as an alternative to the <code>~=</code>\n\
1123
+ notation when representing the <code>class</code> attribute. Thus, for\n\
1124
+ HTML, <code>div.value</code> and <code>div[class~=value]</code> have\n\
1125
+ the same meaning. The attribute value must immediately follow the\n\
1126
+ &quot;period&quot; (<code>.</code>).</p>\n\
1127
+ \n\
1128
+ <p>UAs may apply selectors using the period (.) notation in XML\n\
1129
+ documents if the UA has namespace-specific knowledge that allows it to\n\
1130
+ determine which attribute is the &quot;class&quot; attribute for the\n\
1131
+ respective namespace. One such example of namespace-specific knowledge\n\
1132
+ is the prose in the specification for a particular namespace (e.g. SVG\n\
1133
+ 1.0 <a href=\"#refsSVG\">[SVG]</a> describes the <a\n\
1134
+ href=\"http://www.w3.org/TR/2001/PR-SVG-20010719/styling.html#ClassAttribute\">SVG\n\
1135
+ &quot;class&quot; attribute</a> and how a UA should interpret it, and\n\
1136
+ similarly MathML 1.01 <a href=\"#refsMATH\">[MATH]</a> describes the <a\n\
1137
+ href=\"http://www.w3.org/1999/07/REC-MathML-19990707/chapter2.html#sec2.3.4\">MathML\n\
1138
+ &quot;class&quot; attribute</a>.)</p>\n\
1139
+ \n\
1140
+ <div class=\"example\">\n\
1141
+ <p>CSS examples:</p>\n\
1142
+ \n\
1143
+ <p>We can assign style information to all elements with\n\
1144
+ <code>class~=\"pastoral\"</code> as follows:</p>\n\
1145
+ \n\
1146
+ <pre>*.pastoral { color: green } /* all elements with class~=pastoral */</pre>\n\
1147
+ \n\
1148
+ <p>or just</p>\n\
1149
+ \n\
1150
+ <pre>.pastoral { color: green } /* all elements with class~=pastoral */</pre>\n\
1151
+ \n\
1152
+ <p>The following assigns style only to H1 elements with\n\
1153
+ <code>class~=\"pastoral\"</code>:</p>\n\
1154
+ \n\
1155
+ <pre>H1.pastoral { color: green } /* H1 elements with class~=pastoral */</pre>\n\
1156
+ \n\
1157
+ <p>Given these rules, the first H1 instance below would not have\n\
1158
+ green text, while the second would:</p>\n\
1159
+ \n\
1160
+ <pre>&lt;H1&gt;Not green&lt;/H1&gt;\n\
1161
+ &lt;H1 class=\"pastoral\"&gt;Very green&lt;/H1&gt;</pre>\n\
1162
+ \n\
1163
+ </div>\n\
1164
+ \n\
1165
+ <p>To represent a subset of \"class\" values, each value must be preceded\n\
1166
+ by a \".\", in any order.</P>\n\
1167
+ \n\
1168
+ <div class=\"example\">\n\
1169
+ \n\
1170
+ <p>CSS example:</p>\n\
1171
+ \n\
1172
+ <p>The following rule matches any P element whose \"class\" attribute\n\
1173
+ has been assigned a list of <a\n\
1174
+ href=\"#whitespace\">whitespace</a>-separated values that includes\n\
1175
+ \"pastoral\" and \"marine\":</p>\n\
1176
+ \n\
1177
+ <pre>p.pastoral.marine { color: green }</pre>\n\
1178
+ \n\
1179
+ <p>This rule matches when <code>class=\"pastoral blue aqua\n\
1180
+ marine\"</code> but does not match for <code>class=\"pastoral\n\
1181
+ blue\"</code>.</p>\n\
1182
+ \n\
1183
+ </div>\n\
1184
+ \n\
1185
+ <p class=\"note\"><strong>Note:</strong> Because CSS gives considerable\n\
1186
+ power to the \"class\" attribute, authors could conceivably design their\n\
1187
+ own \"document language\" based on elements with almost no associated\n\
1188
+ presentation (such as DIV and SPAN in HTML) and assigning style\n\
1189
+ information through the \"class\" attribute. Authors should avoid this\n\
1190
+ practice since the structural elements of a document language often\n\
1191
+ have recognized and accepted meanings and author-defined classes may\n\
1192
+ not.</p>\n\
1193
+ \n\
1194
+ <p class=\"note\"><strong>Note:</strong> If an element has multiple\n\
1195
+ class attributes, their values must be concatenated with spaces\n\
1196
+ between the values before searching for the class. As of this time the\n\
1197
+ working group is not aware of any manner in which this situation can\n\
1198
+ be reached, however, so this behavior is explicitly non-normative in\n\
1199
+ this specification.</p>\n\
1200
+ \n\
1201
+ <h3><a name=id-selectors>6.5. ID selectors</a></h3>\n\
1202
+ \n\
1203
+ <p>Document languages may contain attributes that are declared to be\n\
1204
+ of type ID. What makes attributes of type ID special is that no two\n\
1205
+ such attributes can have the same value in a document, regardless of\n\
1206
+ the type of the elements that carry them; whatever the document\n\
1207
+ language, an ID typed attribute can be used to uniquely identify its\n\
1208
+ element. In HTML all ID attributes are named \"id\"; XML applications\n\
1209
+ may name ID attributes differently, but the same restriction\n\
1210
+ applies.</p>\n\
1211
+ \n\
1212
+ <p>An ID-typed attribute of a document language allows authors to\n\
1213
+ assign an identifier to one element instance in the document tree. W3C\n\
1214
+ ID selectors represent an element instance based on its identifier. An\n\
1215
+ ID selector contains a &quot;number sign&quot; (U+0023,\n\
1216
+ <code>#</code>) immediately followed by the ID value, which must be an\n\
1217
+ identifier.</p>\n\
1218
+ \n\
1219
+ <p>Selectors does not specify how a UA knows the ID-typed attribute of\n\
1220
+ an element. The UA may, e.g., read a document's DTD, have the\n\
1221
+ information hard-coded or ask the user.\n\
1222
+ \n\
1223
+ <div class=\"example\">\n\
1224
+ <p>Examples:</p>\n\
1225
+ <p>The following ID selector represents an <code>h1</code> element\n\
1226
+ whose ID-typed attribute has the value \"chapter1\":</p>\n\
1227
+ <pre>h1#chapter1</pre>\n\
1228
+ <p>The following ID selector represents any element whose ID-typed\n\
1229
+ attribute has the value \"chapter1\":</p>\n\
1230
+ <pre>#chapter1</pre>\n\
1231
+ <p>The following selector represents any element whose ID-typed\n\
1232
+ attribute has the value \"z98y\".</p>\n\
1233
+ <pre>*#z98y</pre>\n\
1234
+ </div>\n\
1235
+ \n\
1236
+ <p class=\"note\"><strong>Note.</strong> In XML 1.0 <a\n\
1237
+ href=\"#refsXML10\">[XML10]</a>, the information about which attribute\n\
1238
+ contains an element's IDs is contained in a DTD or a schema. When\n\
1239
+ parsing XML, UAs do not always read the DTD, and thus may not know\n\
1240
+ what the ID of an element is (though a UA may have namespace-specific\n\
1241
+ knowledge that allows it to determine which attribute is the ID\n\
1242
+ attribute for that namespace). If a style sheet designer knows or\n\
1243
+ suspects that a UA may not know what the ID of an element is, he\n\
1244
+ should use normal attribute selectors instead:\n\
1245
+ <code>[name=p371]</code> instead of <code>#p371</code>. Elements in\n\
1246
+ XML 1.0 documents without a DTD do not have IDs at all.</p>\n\
1247
+ \n\
1248
+ <p>If an element has multiple ID attributes, all of them must be\n\
1249
+ treated as IDs for that element for the purposes of the ID\n\
1250
+ selector. Such a situation could be reached using mixtures of xml:id,\n\
1251
+ DOM3 Core, XML DTDs, and namespace-specific knowledge.</p>\n\
1252
+ \n\
1253
+ <h3><a name=pseudo-classes>6.6. Pseudo-classes</a></h3>\n\
1254
+ \n\
1255
+ <p>The pseudo-class concept is introduced to permit selection based on\n\
1256
+ information that lies outside of the document tree or that cannot be\n\
1257
+ expressed using the other simple selectors.</p>\n\
1258
+ \n\
1259
+ <p>A pseudo-class always consists of a &quot;colon&quot;\n\
1260
+ (<code>:</code>) followed by the name of the pseudo-class and\n\
1261
+ optionally by a value between parentheses.</p>\n\
1262
+ \n\
1263
+ <p>Pseudo-classes are allowed in all sequences of simple selectors\n\
1264
+ contained in a selector. Pseudo-classes are allowed anywhere in\n\
1265
+ sequences of simple selectors, after the leading type selector or\n\
1266
+ universal selector (possibly omitted). Pseudo-class names are\n\
1267
+ case-insensitive. Some pseudo-classes are mutually exclusive, while\n\
1268
+ others can be applied simultaneously to the same\n\
1269
+ element. Pseudo-classes may be dynamic, in the sense that an element\n\
1270
+ may acquire or lose a pseudo-class while a user interacts with the\n\
1271
+ document.</p>\n\
1272
+ \n\
1273
+ \n\
1274
+ <h4><a name=dynamic-pseudos>6.6.1. Dynamic pseudo-classes</a></h4>\n\
1275
+ \n\
1276
+ <p>Dynamic pseudo-classes classify elements on characteristics other\n\
1277
+ than their name, attributes, or content, in principle characteristics\n\
1278
+ that cannot be deduced from the document tree.</p>\n\
1279
+ \n\
1280
+ <p>Dynamic pseudo-classes do not appear in the document source or\n\
1281
+ document tree.</p>\n\
1282
+ \n\
1283
+ \n\
1284
+ <h5>The <a name=link>link pseudo-classes: :link and :visited</a></h5>\n\
1285
+ \n\
1286
+ <p>User agents commonly display unvisited links differently from\n\
1287
+ previously visited ones. Selectors\n\
1288
+ provides the pseudo-classes <code>:link</code> and\n\
1289
+ <code>:visited</code> to distinguish them:</p>\n\
1290
+ \n\
1291
+ <ul>\n\
1292
+ <li>The <code>:link</code> pseudo-class applies to links that have\n\
1293
+ not yet been visited.</li>\n\
1294
+ <li>The <code>:visited</code> pseudo-class applies once the link has\n\
1295
+ been visited by the user. </li>\n\
1296
+ </ul>\n\
1297
+ \n\
1298
+ <p>After some amount of time, user agents may choose to return a\n\
1299
+ visited link to the (unvisited) ':link' state.</p>\n\
1300
+ \n\
1301
+ <p>The two states are mutually exclusive.</p>\n\
1302
+ \n\
1303
+ <div class=\"example\">\n\
1304
+ \n\
1305
+ <p>Example:</p>\n\
1306
+ \n\
1307
+ <p>The following selector represents links carrying class\n\
1308
+ <code>external</code> and already visited:</p>\n\
1309
+ \n\
1310
+ <pre>a.external:visited</pre>\n\
1311
+ \n\
1312
+ </div>\n\
1313
+ \n\
1314
+ <p class=\"note\"><strong>Note:</strong> It is possible for style sheet\n\
1315
+ authors to abuse the :link and :visited pseudo-classes to determine\n\
1316
+ which sites a user has visited without the user's consent.\n\
1317
+ \n\
1318
+ <p>UAs may therefore treat all links as unvisited links, or implement\n\
1319
+ other measures to preserve the user's privacy while rendering visited\n\
1320
+ and unvisited links differently.</p>\n\
1321
+ \n\
1322
+ <h5>The <a name=useraction-pseudos>user action pseudo-classes\n\
1323
+ :hover, :active, and :focus</a></h5>\n\
1324
+ \n\
1325
+ <p>Interactive user agents sometimes change the rendering in response\n\
1326
+ to user actions. Selectors provides\n\
1327
+ three pseudo-classes for the selection of an element the user is\n\
1328
+ acting on.</p>\n\
1329
+ \n\
1330
+ <ul>\n\
1331
+ \n\
1332
+ <li>The <code>:hover</code> pseudo-class applies while the user\n\
1333
+ designates an element with a pointing device, but does not activate\n\
1334
+ it. For example, a visual user agent could apply this pseudo-class\n\
1335
+ when the cursor (mouse pointer) hovers over a box generated by the\n\
1336
+ element. User agents not that do not support <a\n\
1337
+ href=\"http://www.w3.org/TR/REC-CSS2/media.html#interactive-media-group\">interactive\n\
1338
+ media</a> do not have to support this pseudo-class. Some conforming\n\
1339
+ user agents that support <a\n\
1340
+ href=\"http://www.w3.org/TR/REC-CSS2/media.html#interactive-media-group\">interactive\n\
1341
+ media</a> may not be able to support this pseudo-class (e.g., a pen\n\
1342
+ device that does not detect hovering).</li>\n\
1343
+ \n\
1344
+ <li>The <code>:active</code> pseudo-class applies while an element\n\
1345
+ is being activated by the user. For example, between the times the\n\
1346
+ user presses the mouse button and releases it.</li>\n\
1347
+ \n\
1348
+ <li>The <code>:focus</code> pseudo-class applies while an element\n\
1349
+ has the focus (accepts keyboard or mouse events, or other forms of\n\
1350
+ input). </li>\n\
1351
+ \n\
1352
+ </ul>\n\
1353
+ \n\
1354
+ <p>There may be document language or implementation specific limits on\n\
1355
+ which elements can become <code>:active</code> or acquire\n\
1356
+ <code>:focus</code>.</p>\n\
1357
+ \n\
1358
+ <p>These pseudo-classes are not mutually exclusive. An element may\n\
1359
+ match several pseudo-classes at the same time.</p>\n\
1360
+ \n\
1361
+ <p>Selectors doesn't define if the parent of an element that is\n\
1362
+ ':active' or ':hover' is also in that state.</p>\n\
1363
+ \n\
1364
+ <div class=\"example\">\n\
1365
+ <p>Examples:</p>\n\
1366
+ <pre>a:link /* unvisited links */\n\
1367
+ a:visited /* visited links */\n\
1368
+ a:hover /* user hovers */\n\
1369
+ a:active /* active links */</pre>\n\
1370
+ <p>An example of combining dynamic pseudo-classes:</p>\n\
1371
+ <pre>a:focus\n\
1372
+ a:focus:hover</pre>\n\
1373
+ <p>The last selector matches <code>a</code> elements that are in\n\
1374
+ the pseudo-class :focus and in the pseudo-class :hover.</p>\n\
1375
+ </div>\n\
1376
+ \n\
1377
+ <p class=\"note\"><strong>Note:</strong> An element can be both ':visited'\n\
1378
+ and ':active' (or ':link' and ':active').</p>\n\
1379
+ \n\
1380
+ <h4><a name=target-pseudo>6.6.2. The target pseudo-class :target</a></h4>\n\
1381
+ \n\
1382
+ <p>Some URIs refer to a location within a resource. This kind of URI\n\
1383
+ ends with a &quot;number sign&quot; (#) followed by an anchor\n\
1384
+ identifier (called the fragment identifier).</p>\n\
1385
+ \n\
1386
+ <p>URIs with fragment identifiers link to a certain element within the\n\
1387
+ document, known as the target element. For instance, here is a URI\n\
1388
+ pointing to an anchor named <code>section_2</code> in an HTML\n\
1389
+ document:</p>\n\
1390
+ \n\
1391
+ <pre>http://example.com/html/top.html#section_2</pre>\n\
1392
+ \n\
1393
+ <p>A target element can be represented by the <code>:target</code>\n\
1394
+ pseudo-class. If the document's URI has no fragment identifier, then\n\
1395
+ the document has no target element.</p>\n\
1396
+ \n\
1397
+ <div class=\"example\">\n\
1398
+ <p>Example:</p>\n\
1399
+ <pre>p.note:target</pre>\n\
1400
+ <p>This selector represents a <code>p</code> element of class\n\
1401
+ <code>note</code> that is the target element of the referring\n\
1402
+ URI.</p>\n\
1403
+ </div>\n\
1404
+ \n\
1405
+ <div class=\"example\">\n\
1406
+ <p>CSS example:</p>\n\
1407
+ <p>Here, the <code>:target</code> pseudo-class is used to make the\n\
1408
+ target element red and place an image before it, if there is one:</p>\n\
1409
+ <pre>*:target { color : red }\n\
1410
+ *:target::before { content : url(target.png) }</pre>\n\
1411
+ </div>\n\
1412
+ \n\
1413
+ <h4><a name=lang-pseudo>6.6.3. The language pseudo-class :lang</a></h4>\n\
1414
+ \n\
1415
+ <p>If the document language specifies how the human language of an\n\
1416
+ element is determined, it is possible to write selectors that\n\
1417
+ represent an element based on its language. For example, in HTML <a\n\
1418
+ href=\"#refsHTML4\">[HTML4]</a>, the language is determined by a\n\
1419
+ combination of the <code>lang</code> attribute, the <code>meta</code>\n\
1420
+ element, and possibly by information from the protocol (such as HTTP\n\
1421
+ headers). XML uses an attribute called <code>xml:lang</code>, and\n\
1422
+ there may be other document language-specific methods for determining\n\
1423
+ the language.</p>\n\
1424
+ \n\
1425
+ <p>The pseudo-class <code>:lang(C)</code> represents an element that\n\
1426
+ is in language C. Whether an element is represented by a\n\
1427
+ <code>:lang()</code> selector is based solely on the identifier C\n\
1428
+ being either equal to, or a hyphen-separated substring of, the\n\
1429
+ element's language value, in the same way as if performed by the <a\n\
1430
+ href=\"#attribute-representation\">'|='</a> operator in attribute\n\
1431
+ selectors. The identifier C does not have to be a valid language\n\
1432
+ name.</p>\n\
1433
+ \n\
1434
+ <p>C must not be empty. (If it is, the selector is invalid.)</p>\n\
1435
+ \n\
1436
+ <p class=\"note\"><strong>Note:</strong> It is recommended that\n\
1437
+ documents and protocols indicate language using codes from RFC 3066 <a\n\
1438
+ href=\"#refsRFC3066\">[RFC3066]</a> or its successor, and by means of\n\
1439
+ \"xml:lang\" attributes in the case of XML-based documents <a\n\
1440
+ href=\"#refsXML10\">[XML10]</a>. See <a\n\
1441
+ href=\"http://www.w3.org/International/questions/qa-lang-2or3.html\">\n\
1442
+ \"FAQ: Two-letter or three-letter language codes.\"</a></p>\n\
1443
+ \n\
1444
+ <div class=\"example\">\n\
1445
+ <p>Examples:</p>\n\
1446
+ <p>The two following selectors represent an HTML document that is in\n\
1447
+ Belgian, French, or German. The two next selectors represent\n\
1448
+ <code>q</code> quotations in an arbitrary element in Belgian, French,\n\
1449
+ or German.</p>\n\
1450
+ <pre>html:lang(fr-be)\n\
1451
+ html:lang(de)\n\
1452
+ :lang(fr-be) &gt; q\n\
1453
+ :lang(de) &gt; q</pre>\n\
1454
+ </div>\n\
1455
+ \n\
1456
+ <h4><a name=UIstates>6.6.4. The UI element states pseudo-classes</a></h4>\n\
1457
+ \n\
1458
+ <h5><a name=enableddisabled>The :enabled and :disabled pseudo-classes</a></h5>\n\
1459
+ \n\
1460
+ <p>The <code>:enabled</code> pseudo-class allows authors to customize\n\
1461
+ the look of user interface elements that are enabled &mdash; which the\n\
1462
+ user can select or activate in some fashion (e.g. clicking on a button\n\
1463
+ with a mouse). There is a need for such a pseudo-class because there\n\
1464
+ is no way to programmatically specify the default appearance of say,\n\
1465
+ an enabled <code>input</code> element without also specifying what it\n\
1466
+ would look like when it was disabled.</p>\n\
1467
+ \n\
1468
+ <p>Similar to <code>:enabled</code>, <code>:disabled</code> allows the\n\
1469
+ author to specify precisely how a disabled or inactive user interface\n\
1470
+ element should look.</p>\n\
1471
+ \n\
1472
+ <p>Most elements will be neither enabled nor disabled. An element is\n\
1473
+ enabled if the user can either activate it or transfer the focus to\n\
1474
+ it. An element is disabled if it could be enabled, but the user cannot\n\
1475
+ presently activate it or transfer focus to it.</p>\n\
1476
+ \n\
1477
+ \n\
1478
+ <h5><a name=checked>The :checked pseudo-class</a></h5>\n\
1479
+ \n\
1480
+ <p>Radio and checkbox elements can be toggled by the user. Some menu\n\
1481
+ items are \"checked\" when the user selects them. When such elements are\n\
1482
+ toggled \"on\" the <code>:checked</code> pseudo-class applies. The\n\
1483
+ <code>:checked</code> pseudo-class initially applies to such elements\n\
1484
+ that have the HTML4 <code>selected</code> and <code>checked</code>\n\
1485
+ attributes as described in <a\n\
1486
+ href=\"http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.2.1\">Section\n\
1487
+ 17.2.1 of HTML4</a>, but of course the user can toggle \"off\" such\n\
1488
+ elements in which case the <code>:checked</code> pseudo-class would no\n\
1489
+ longer apply. While the <code>:checked</code> pseudo-class is dynamic\n\
1490
+ in nature, and is altered by user action, since it can also be based\n\
1491
+ on the presence of the semantic HTML4 <code>selected</code> and\n\
1492
+ <code>checked</code> attributes, it applies to all media.\n\
1493
+ \n\
1494
+ \n\
1495
+ <h5><a name=indeterminate>The :indeterminate pseudo-class</a></h5>\n\
1496
+ \n\
1497
+ <div class=\"note\">\n\
1498
+ \n\
1499
+ <p>Radio and checkbox elements can be toggled by the user, but are\n\
1500
+ sometimes in an indeterminate state, neither checked nor unchecked.\n\
1501
+ This can be due to an element attribute, or DOM manipulation.</p>\n\
1502
+ \n\
1503
+ <p>A future version of this specification may introduce an \n\
1504
+ <code>:indeterminate</code> pseudo-class that applies to such elements.\n\
1505
+ <!--While the <code>:indeterminate</code> pseudo-class is dynamic in\n\
1506
+ nature, and is altered by user action, since it can also be based on\n\
1507
+ the presence of an element attribute, it applies to all media.</p>\n\
1508
+ \n\
1509
+ <p>Components of a radio-group initialized with no pre-selected choice\n\
1510
+ are an example of :indeterminate state.--></p>\n\
1511
+ \n\
1512
+ </div>\n\
1513
+ \n\
1514
+ \n\
1515
+ <h4><a name=structural-pseudos>6.6.5. Structural pseudo-classes</a></h4>\n\
1516
+ \n\
1517
+ <p>Selectors introduces the concept of <dfn>structural\n\
1518
+ pseudo-classes</dfn> to permit selection based on extra information that lies in\n\
1519
+ the document tree but cannot be represented by other simple selectors or\n\
1520
+ combinators. \n\
1521
+ \n\
1522
+ <p>Note that standalone pieces of PCDATA (text nodes in the DOM) are\n\
1523
+ not counted when calculating the position of an element in the list of\n\
1524
+ children of its parent. When calculating the position of an element in\n\
1525
+ the list of children of its parent, the index numbering starts at 1.\n\
1526
+ \n\
1527
+ \n\
1528
+ <h5><a name=root-pseudo>:root pseudo-class</a></h5>\n\
1529
+ \n\
1530
+ <p>The <code>:root</code> pseudo-class represents an element that is\n\
1531
+ the root of the document. In HTML 4, this is always the\n\
1532
+ <code>HTML</code> element.\n\
1533
+ \n\
1534
+ \n\
1535
+ <h5><a name=nth-child-pseudo>:nth-child() pseudo-class</a></h5>\n\
1536
+ \n\
1537
+ <p>The\n\
1538
+ <code>:nth-child(<var>a</var><code>n</code>+<var>b</var>)</code>\n\
1539
+ pseudo-class notation represents an element that has\n\
1540
+ <var>a</var><code>n</code>+<var>b</var>-1 siblings\n\
1541
+ <strong>before</strong> it in the document tree, for a given positive\n\
1542
+ integer or zero value of <code>n</code>, and has a parent element. In\n\
1543
+ other words, this matches the <var>b</var>th child of an element after\n\
1544
+ all the children have been split into groups of <var>a</var> elements\n\
1545
+ each. For example, this allows the selectors to address every other\n\
1546
+ row in a table, and could be used to alternate the color\n\
1547
+ of paragraph text in a cycle of four. The <var>a</var> and\n\
1548
+ <var>b</var> values must be zero, negative integers or positive\n\
1549
+ integers. The index of the first child of an element is 1.\n\
1550
+ \n\
1551
+ <p>In addition to this, <code>:nth-child()</code> can take\n\
1552
+ '<code>odd</code>' and '<code>even</code>' as arguments instead.\n\
1553
+ '<code>odd</code>' has the same signification as <code>2n+1</code>,\n\
1554
+ and '<code>even</code>' has the same signification as <code>2n</code>.\n\
1555
+ \n\
1556
+ \n\
1557
+ <div class=\"example\">\n\
1558
+ <p>Examples:</p>\n\
1559
+ <pre>tr:nth-child(2n+1) /* represents every odd row of an HTML table */\n\
1560
+ tr:nth-child(odd) /* same */\n\
1561
+ tr:nth-child(2n) /* represents every even row of an HTML table */\n\
1562
+ tr:nth-child(even) /* same */\n\
1563
+ \n\
1564
+ /* Alternate paragraph colours in CSS */\n\
1565
+ p:nth-child(4n+1) { color: navy; }\n\
1566
+ p:nth-child(4n+2) { color: green; }\n\
1567
+ p:nth-child(4n+3) { color: maroon; }\n\
1568
+ p:nth-child(4n+4) { color: purple; }</pre>\n\
1569
+ </div>\n\
1570
+ \n\
1571
+ <p>When <var>a</var>=0, no repeating is used, so for example\n\
1572
+ <code>:nth-child(0n+5)</code> matches only the fifth child. When\n\
1573
+ <var>a</var>=0, the <var>a</var><code>n</code> part need not be\n\
1574
+ included, so the syntax simplifies to\n\
1575
+ <code>:nth-child(<var>b</var>)</code> and the last example simplifies\n\
1576
+ to <code>:nth-child(5)</code>.\n\
1577
+ \n\
1578
+ <div class=\"example\">\n\
1579
+ <p>Examples:</p>\n\
1580
+ <pre>foo:nth-child(0n+1) /* represents an element foo, first child of its parent element */\n\
1581
+ foo:nth-child(1) /* same */</pre>\n\
1582
+ </div>\n\
1583
+ \n\
1584
+ <p>When <var>a</var>=1, the number may be omitted from the rule.\n\
1585
+ \n\
1586
+ <div class=\"example\">\n\
1587
+ <p>Examples:</p>\n\
1588
+ <p>The following selectors are therefore equivalent:</p>\n\
1589
+ <pre>bar:nth-child(1n+0) /* represents all bar elements, specificity (0,1,1) */\n\
1590
+ bar:nth-child(n+0) /* same */\n\
1591
+ bar:nth-child(n) /* same */\n\
1592
+ bar /* same but lower specificity (0,0,1) */</pre>\n\
1593
+ </div>\n\
1594
+ \n\
1595
+ <p>If <var>b</var>=0, then every <var>a</var>th element is picked. In\n\
1596
+ such a case, the <var>b</var> part may be omitted.\n\
1597
+ \n\
1598
+ <div class=\"example\">\n\
1599
+ <p>Examples:</p>\n\
1600
+ <pre>tr:nth-child(2n+0) /* represents every even row of an HTML table */\n\
1601
+ tr:nth-child(2n) /* same */</pre>\n\
1602
+ </div>\n\
1603
+ \n\
1604
+ <p>If both <var>a</var> and <var>b</var> are equal to zero, the\n\
1605
+ pseudo-class represents no element in the document tree.</p>\n\
1606
+ \n\
1607
+ <p>The value <var>a</var> can be negative, but only the positive\n\
1608
+ values of <var>a</var><code>n</code>+<var>b</var>, for\n\
1609
+ <code>n</code>&ge;0, may represent an element in the document\n\
1610
+ tree.</p>\n\
1611
+ \n\
1612
+ <div class=\"example\">\n\
1613
+ <p>Example:</p>\n\
1614
+ <pre>html|tr:nth-child(-n+6) /* represents the 6 first rows of XHTML tables */</pre>\n\
1615
+ </div>\n\
1616
+ \n\
1617
+ <p>When the value <var>b</var> is negative, the \"+\" character in the\n\
1618
+ expression must be removed (it is effectively replaced by the \"-\"\n\
1619
+ character indicating the negative value of <var>b</var>).</p>\n\
1620
+ \n\
1621
+ <div class=\"example\">\n\
1622
+ <p>Examples:</p>\n\
1623
+ <pre>:nth-child(10n-1) /* represents the 9th, 19th, 29th, etc, element */\n\
1624
+ :nth-child(10n+9) /* Same */\n\
1625
+ :nth-child(10n+-1) /* Syntactically invalid, and would be ignored */</pre>\n\
1626
+ </div>\n\
1627
+ \n\
1628
+ \n\
1629
+ <h5><a name=nth-last-child-pseudo>:nth-last-child() pseudo-class</a></h5>\n\
1630
+ \n\
1631
+ <p>The <code>:nth-last-child(<var>a</var>n+<var>b</var>)</code>\n\
1632
+ pseudo-class notation represents an element that has\n\
1633
+ <var>a</var><code>n</code>+<var>b</var>-1 siblings\n\
1634
+ <strong>after</strong> it in the document tree, for a given positive\n\
1635
+ integer or zero value of <code>n</code>, and has a parent element. See\n\
1636
+ <code>:nth-child()</code> pseudo-class for the syntax of its argument.\n\
1637
+ It also accepts the '<code>even</code>' and '<code>odd</code>' values\n\
1638
+ as arguments.\n\
1639
+ \n\
1640
+ \n\
1641
+ <div class=\"example\">\n\
1642
+ <p>Examples:</p>\n\
1643
+ <pre>tr:nth-last-child(-n+2) /* represents the two last rows of an HTML table */\n\
1644
+ \n\
1645
+ foo:nth-last-child(odd) /* represents all odd foo elements in their parent element,\n\
1646
+ counting from the last one */</pre>\n\
1647
+ </div>\n\
1648
+ \n\
1649
+ \n\
1650
+ <h5><a name=nth-of-type-pseudo>:nth-of-type() pseudo-class</a></h5>\n\
1651
+ \n\
1652
+ <p>The <code>:nth-of-type(<var>a</var>n+<var>b</var>)</code>\n\
1653
+ pseudo-class notation represents an element that has\n\
1654
+ <var>a</var><code>n</code>+<var>b</var>-1 siblings with the same\n\
1655
+ element name <strong>before</strong> it in the document tree, for a\n\
1656
+ given zero or positive integer value of <code>n</code>, and has a\n\
1657
+ parent element. In other words, this matches the <var>b</var>th child\n\
1658
+ of that type after all the children of that type have been split into\n\
1659
+ groups of a elements each. See <code>:nth-child()</code> pseudo-class\n\
1660
+ for the syntax of its argument. It also accepts the\n\
1661
+ '<code>even</code>' and '<code>odd</code>' values.\n\
1662
+ \n\
1663
+ \n\
1664
+ <div class=\"example\">\n\
1665
+ <p>CSS example:</p>\n\
1666
+ <p>This allows an author to alternate the position of floated images:</p>\n\
1667
+ <pre>img:nth-of-type(2n+1) { float: right; }\n\
1668
+ img:nth-of-type(2n) { float: left; }</pre>\n\
1669
+ </div>\n\
1670
+ \n\
1671
+ \n\
1672
+ <h5><a name=nth-last-of-type-pseudo>:nth-last-of-type() pseudo-class</a></h5>\n\
1673
+ \n\
1674
+ <p>The <code>:nth-last-of-type(<var>a</var>n+<var>b</var>)</code>\n\
1675
+ pseudo-class notation represents an element that has\n\
1676
+ <var>a</var><code>n</code>+<var>b</var>-1 siblings with the same\n\
1677
+ element name <strong>after</strong> it in the document tree, for a\n\
1678
+ given zero or positive integer value of <code>n</code>, and has a\n\
1679
+ parent element. See <code>:nth-child()</code> pseudo-class for the\n\
1680
+ syntax of its argument. It also accepts the '<code>even</code>' and '<code>odd</code>' values.\n\
1681
+ \n\
1682
+ \n\
1683
+ <div class=\"example\">\n\
1684
+ <p>Example:</p>\n\
1685
+ <p>To represent all <code>h2</code> children of an XHTML\n\
1686
+ <code>body</code> except the first and last, one could use the\n\
1687
+ following selector:</p>\n\
1688
+ <pre>body &gt; h2:nth-of-type(n+2):nth-last-of-type(n+2)</pre>\n\
1689
+ <p>In this case, one could also use <code>:not()</code>, although the\n\
1690
+ selector ends up being just as long:</p>\n\
1691
+ <pre>body &gt; h2:not(:first-of-type):not(:last-of-type)</pre>\n\
1692
+ </div>\n\
1693
+ \n\
1694
+ \n\
1695
+ <h5><a name=first-child-pseudo>:first-child pseudo-class</a></h5>\n\
1696
+ \n\
1697
+ <p>Same as <code>:nth-child(1)</code>. The <code>:first-child</code> pseudo-class\n\
1698
+ represents an element that is the first child of some other element.\n\
1699
+ \n\
1700
+ \n\
1701
+ <div class=\"example\">\n\
1702
+ <p>Examples:</p>\n\
1703
+ <p>The following selector represents a <code>p</code> element that is\n\
1704
+ the first child of a <code>div</code> element:</p>\n\
1705
+ <pre>div &gt; p:first-child</pre>\n\
1706
+ <p>This selector can represent the <code>p</code> inside the\n\
1707
+ <code>div</code> of the following fragment:</p>\n\
1708
+ <pre>&lt;p&gt; The last P before the note.&lt;/p&gt;\n\
1709
+ &lt;div class=\"note\"&gt;\n\
1710
+ &lt;p&gt; The first P inside the note.&lt;/p&gt;\n\
1711
+ &lt;/div&gt;</pre>but cannot represent the second <code>p</code> in the following\n\
1712
+ fragment: \n\
1713
+ <pre>&lt;p&gt; The last P before the note.&lt;/p&gt;\n\
1714
+ &lt;div class=\"note\"&gt;\n\
1715
+ &lt;h2&gt; Note &lt;/h2&gt;\n\
1716
+ &lt;p&gt; The first P inside the note.&lt;/p&gt;\n\
1717
+ &lt;/div&gt;</pre>\n\
1718
+ <p>The following two selectors are usually equivalent:</p>\n\
1719
+ <pre>* &gt; a:first-child /* a is first child of any element */\n\
1720
+ a:first-child /* Same (assuming a is not the root element) */</pre>\n\
1721
+ </div>\n\
1722
+ \n\
1723
+ <h5><a name=last-child-pseudo>:last-child pseudo-class</a></h5>\n\
1724
+ \n\
1725
+ <p>Same as <code>:nth-last-child(1)</code>. The <code>:last-child</code> pseudo-class\n\
1726
+ represents an element that is the last child of some other element. \n\
1727
+ \n\
1728
+ <div class=\"example\">\n\
1729
+ <p>Example:</p>\n\
1730
+ <p>The following selector represents a list item <code>li</code> that\n\
1731
+ is the last child of an ordered list <code>ol</code>.\n\
1732
+ <pre>ol &gt; li:last-child</pre>\n\
1733
+ </div>\n\
1734
+ \n\
1735
+ <h5><a name=first-of-type-pseudo>:first-of-type pseudo-class</a></h5>\n\
1736
+ \n\
1737
+ <p>Same as <code>:nth-of-type(1)</code>. The <code>:first-of-type</code> pseudo-class\n\
1738
+ represents an element that is the first sibling of its type in the list of\n\
1739
+ children of its parent element. \n\
1740
+ \n\
1741
+ <div class=\"example\">\n\
1742
+ <p>Example:</p>\n\
1743
+ <p>The following selector represents a definition title\n\
1744
+ <code>dt</code> inside a definition list <code>dl</code>, this\n\
1745
+ <code>dt</code> being the first of its type in the list of children of\n\
1746
+ its parent element.</p>\n\
1747
+ <pre>dl dt:first-of-type</pre>\n\
1748
+ <p>It is a valid description for the first two <code>dt</code>\n\
1749
+ elements in the following example but not for the third one:</p>\n\
1750
+ <pre>&lt;dl&gt;\n\
1751
+ &lt;dt&gt;gigogne&lt;/dt&gt;\n\
1752
+ &lt;dd&gt;\n\
1753
+ &lt;dl&gt;\n\
1754
+ &lt;dt&gt;fus&eacute;e&lt;/dt&gt;\n\
1755
+ &lt;dd&gt;multistage rocket&lt;/dd&gt;\n\
1756
+ &lt;dt&gt;table&lt;/dt&gt;\n\
1757
+ &lt;dd&gt;nest of tables&lt;/dd&gt;\n\
1758
+ &lt;/dl&gt;\n\
1759
+ &lt;/dd&gt;\n\
1760
+ &lt;/dl&gt;</pre>\n\
1761
+ </div>\n\
1762
+ \n\
1763
+ <h5><a name=last-of-type-pseudo>:last-of-type pseudo-class</a></h5>\n\
1764
+ \n\
1765
+ <p>Same as <code>:nth-last-of-type(1)</code>. The\n\
1766
+ <code>:last-of-type</code> pseudo-class represents an element that is\n\
1767
+ the last sibling of its type in the list of children of its parent\n\
1768
+ element.</p>\n\
1769
+ \n\
1770
+ <div class=\"example\">\n\
1771
+ <p>Example:</p>\n\
1772
+ <p>The following selector represents the last data cell\n\
1773
+ <code>td</code> of a table row.</p>\n\
1774
+ <pre>tr &gt; td:last-of-type</pre>\n\
1775
+ </div>\n\
1776
+ \n\
1777
+ <h5><a name=only-child-pseudo>:only-child pseudo-class</a></h5>\n\
1778
+ \n\
1779
+ <p>Represents an element that has a parent element and whose parent\n\
1780
+ element has no other element children. Same as\n\
1781
+ <code>:first-child:last-child</code> or\n\
1782
+ <code>:nth-child(1):nth-last-child(1)</code>, but with a lower\n\
1783
+ specificity.</p>\n\
1784
+ \n\
1785
+ <h5><a name=only-of-type-pseudo>:only-of-type pseudo-class</a></h5>\n\
1786
+ \n\
1787
+ <p>Represents an element that has a parent element and whose parent\n\
1788
+ element has no other element children with the same element name. Same\n\
1789
+ as <code>:first-of-type:last-of-type</code> or\n\
1790
+ <code>:nth-of-type(1):nth-last-of-type(1)</code>, but with a lower\n\
1791
+ specificity.</p>\n\
1792
+ \n\
1793
+ \n\
1794
+ <h5><a name=empty-pseudo></a>:empty pseudo-class</h5>\n\
1795
+ \n\
1796
+ <p>The <code>:empty</code> pseudo-class represents an element that has\n\
1797
+ no children at all. In terms of the DOM, only element nodes and text\n\
1798
+ nodes (including CDATA nodes and entity references) whose data has a\n\
1799
+ non-zero length must be considered as affecting emptiness; comments,\n\
1800
+ PIs, and other nodes must not affect whether an element is considered\n\
1801
+ empty or not.</p>\n\
1802
+ \n\
1803
+ <div class=\"example\">\n\
1804
+ <p>Examples:</p>\n\
1805
+ <p><code>p:empty</code> is a valid representation of the following fragment:</p>\n\
1806
+ <pre>&lt;p&gt;&lt;/p&gt;</pre>\n\
1807
+ <p><code>foo:empty</code> is not a valid representation for the\n\
1808
+ following fragments:</p>\n\
1809
+ <pre>&lt;foo&gt;bar&lt;/foo&gt;</pre>\n\
1810
+ <pre>&lt;foo&gt;&lt;bar&gt;bla&lt;/bar&gt;&lt;/foo&gt;</pre>\n\
1811
+ <pre>&lt;foo&gt;this is not &lt;bar&gt;:empty&lt;/bar&gt;&lt;/foo&gt;</pre>\n\
1812
+ </div>\n\
1813
+ \n\
1814
+ <h4><a name=content-selectors>6.6.6. Blank</a></h4> <!-- It's the Return of Appendix H!!! Run away! -->\n\
1815
+ \n\
1816
+ <p>This section intentionally left blank.</p>\n\
1817
+ <!-- (used to be :contains()) -->\n\
1818
+ \n\
1819
+ <h4><a name=negation></a>6.6.7. The negation pseudo-class</h4>\n\
1820
+ \n\
1821
+ <p>The negation pseudo-class, <code>:not(<var>X</var>)</code>, is a\n\
1822
+ functional notation taking a <a href=\"#simple-selectors-dfn\">simple\n\
1823
+ selector</a> (excluding the negation pseudo-class itself and\n\
1824
+ pseudo-elements) as an argument. It represents an element that is not\n\
1825
+ represented by the argument.\n\
1826
+ \n\
1827
+ <!-- pseudo-elements are not simple selectors, so the above paragraph\n\
1828
+ may be a bit confusing -->\n\
1829
+ \n\
1830
+ <div class=\"example\">\n\
1831
+ <p>Examples:</p>\n\
1832
+ <p>The following CSS selector matches all <code>button</code>\n\
1833
+ elements in an HTML document that are not disabled.</p>\n\
1834
+ <pre>button:not([DISABLED])</pre>\n\
1835
+ <p>The following selector represents all but <code>FOO</code>\n\
1836
+ elements.</p>\n\
1837
+ <pre>*:not(FOO)</pre>\n\
1838
+ <p>The following group of selectors represents all HTML elements\n\
1839
+ except links.</p>\n\
1840
+ <pre>html|*:not(:link):not(:visited)</pre>\n\
1841
+ </div>\n\
1842
+ \n\
1843
+ <p>Default namespace declarations do not affect the argument of the\n\
1844
+ negation pseudo-class unless the argument is a universal selector or a\n\
1845
+ type selector.</p>\n\
1846
+ \n\
1847
+ <div class=\"example\">\n\
1848
+ <p>Examples:</p>\n\
1849
+ <p>Assuming that the default namespace is bound to\n\
1850
+ \"http://example.com/\", the following selector represents all\n\
1851
+ elements that are not in that namespace:</p>\n\
1852
+ <pre>*|*:not(*)</pre>\n\
1853
+ <p>The following CSS selector matches any element being hovered,\n\
1854
+ regardless of its namespace. In particular, it is not limited to\n\
1855
+ only matching elements in the default namespace that are not being\n\
1856
+ hovered, and elements not in the default namespace don't match the\n\
1857
+ rule when they <em>are</em> being hovered.</p>\n\
1858
+ <pre>*|*:not(:hover)</pre>\n\
1859
+ </div>\n\
1860
+ \n\
1861
+ <p class=\"note\"><strong>Note</strong>: the :not() pseudo allows\n\
1862
+ useless selectors to be written. For instance <code>:not(*|*)</code>,\n\
1863
+ which represents no element at all, or <code>foo:not(bar)</code>,\n\
1864
+ which is equivalent to <code>foo</code> but with a higher\n\
1865
+ specificity.</p>\n\
1866
+ \n\
1867
+ <h3><a name=pseudo-elements>7. Pseudo-elements</a></h3>\n\
1868
+ \n\
1869
+ <p>Pseudo-elements create abstractions about the document tree beyond\n\
1870
+ those specified by the document language. For instance, document\n\
1871
+ languages do not offer mechanisms to access the first letter or first\n\
1872
+ line of an element's content. Pseudo-elements allow designers to refer\n\
1873
+ to this otherwise inaccessible information. Pseudo-elements may also\n\
1874
+ provide designers a way to refer to content that does not exist in the\n\
1875
+ source document (e.g., the <code>::before</code> and\n\
1876
+ <code>::after</code> pseudo-elements give access to generated\n\
1877
+ content).</p>\n\
1878
+ \n\
1879
+ <p>A pseudo-element is made of two colons (<code>::</code>) followed\n\
1880
+ by the name of the pseudo-element.</p>\n\
1881
+ \n\
1882
+ <p>This <code>::</code> notation is introduced by the current document\n\
1883
+ in order to establish a discrimination between pseudo-classes and\n\
1884
+ pseudo-elements. For compatibility with existing style sheets, user\n\
1885
+ agents must also accept the previous one-colon notation for\n\
1886
+ pseudo-elements introduced in CSS levels 1 and 2 (namely,\n\
1887
+ <code>:first-line</code>, <code>:first-letter</code>,\n\
1888
+ <code>:before</code> and <code>:after</code>). This compatibility is\n\
1889
+ not allowed for the new pseudo-elements introduced in CSS level 3.</p>\n\
1890
+ \n\
1891
+ <p>Only one pseudo-element may appear per selector, and if present it\n\
1892
+ must appear after the sequence of simple selectors that represents the\n\
1893
+ <a href=\"#subject\">subjects</a> of the selector. <span class=\"note\">A\n\
1894
+ future version of this specification may allow multiple\n\
1895
+ pesudo-elements per selector.</span></p>\n\
1896
+ \n\
1897
+ <h4><a name=first-line>7.1. The ::first-line pseudo-element</a></h4>\n\
1898
+ \n\
1899
+ <p>The <code>::first-line</code> pseudo-element describes the contents\n\
1900
+ of the first formatted line of an element.\n\
1901
+ \n\
1902
+ <div class=\"example\">\n\
1903
+ <p>CSS example:</p>\n\
1904
+ <pre>p::first-line { text-transform: uppercase }</pre>\n\
1905
+ <p>The above rule means \"change the letters of the first line of every\n\
1906
+ paragraph to uppercase\".</p>\n\
1907
+ </div>\n\
1908
+ \n\
1909
+ <p>The selector <code>p::first-line</code> does not match any real\n\
1910
+ HTML element. It does match a pseudo-element that conforming user\n\
1911
+ agents will insert at the beginning of every paragraph.</p>\n\
1912
+ \n\
1913
+ <p>Note that the length of the first line depends on a number of\n\
1914
+ factors, including the width of the page, the font size, etc. Thus,\n\
1915
+ an ordinary HTML paragraph such as:</p>\n\
1916
+ \n\
1917
+ <pre>\n\
1918
+ &lt;P&gt;This is a somewhat long HTML \n\
1919
+ paragraph that will be broken into several \n\
1920
+ lines. The first line will be identified\n\
1921
+ by a fictional tag sequence. The other lines \n\
1922
+ will be treated as ordinary lines in the \n\
1923
+ paragraph.&lt;/P&gt;\n\
1924
+ </pre>\n\
1925
+ \n\
1926
+ <p>the lines of which happen to be broken as follows:\n\
1927
+ \n\
1928
+ <pre>\n\
1929
+ THIS IS A SOMEWHAT LONG HTML PARAGRAPH THAT\n\
1930
+ will be broken into several lines. The first\n\
1931
+ line will be identified by a fictional tag \n\
1932
+ sequence. The other lines will be treated as \n\
1933
+ ordinary lines in the paragraph.\n\
1934
+ </pre>\n\
1935
+ \n\
1936
+ <p>This paragraph might be \"rewritten\" by user agents to include the\n\
1937
+ <em>fictional tag sequence</em> for <code>::first-line</code>. This\n\
1938
+ fictional tag sequence helps to show how properties are inherited.</p>\n\
1939
+ \n\
1940
+ <pre>\n\
1941
+ &lt;P&gt;<b>&lt;P::first-line&gt;</b> This is a somewhat long HTML \n\
1942
+ paragraph that <b>&lt;/P::first-line&gt;</b> will be broken into several\n\
1943
+ lines. The first line will be identified \n\
1944
+ by a fictional tag sequence. The other lines \n\
1945
+ will be treated as ordinary lines in the \n\
1946
+ paragraph.&lt;/P&gt;\n\
1947
+ </pre>\n\
1948
+ \n\
1949
+ <p>If a pseudo-element breaks up a real element, the desired effect\n\
1950
+ can often be described by a fictional tag sequence that closes and\n\
1951
+ then re-opens the element. Thus, if we mark up the previous paragraph\n\
1952
+ with a <code>span</code> element:</p>\n\
1953
+ \n\
1954
+ <pre>\n\
1955
+ &lt;P&gt;<b>&lt;SPAN class=\"test\"&gt;</b> This is a somewhat long HTML\n\
1956
+ paragraph that will be broken into several\n\
1957
+ lines.<b>&lt;/SPAN&gt;</b> The first line will be identified\n\
1958
+ by a fictional tag sequence. The other lines \n\
1959
+ will be treated as ordinary lines in the \n\
1960
+ paragraph.&lt;/P&gt;\n\
1961
+ </pre>\n\
1962
+ \n\
1963
+ <p>the user agent could simulate start and end tags for\n\
1964
+ <code>span</code> when inserting the fictional tag sequence for\n\
1965
+ <code>::first-line</code>.\n\
1966
+ \n\
1967
+ <pre>\n\
1968
+ &lt;P&gt;&lt;P::first-line&gt;<b>&lt;SPAN class=\"test\"&gt;</b> This is a\n\
1969
+ somewhat long HTML\n\
1970
+ paragraph that will <b>&lt;/SPAN&gt;</b>&lt;/P::first-line&gt;<b>&lt;SPAN class=\"test\"&gt;</b> be\n\
1971
+ broken into several\n\
1972
+ lines.<b>&lt;/SPAN&gt;</b> The first line will be identified\n\
1973
+ by a fictional tag sequence. The other lines\n\
1974
+ will be treated as ordinary lines in the \n\
1975
+ paragraph.&lt;/P&gt;\n\
1976
+ </pre>\n\
1977
+ \n\
1978
+ <p>In CSS, the <code>::first-line</code> pseudo-element can only be\n\
1979
+ attached to a block-level element, an inline-block, a table-caption,\n\
1980
+ or a table-cell.</p>\n\
1981
+ \n\
1982
+ <p><a name=\"first-formatted-line\"></a>The \"first formatted line\" of an\n\
1983
+ element may occur inside a\n\
1984
+ block-level descendant in the same flow (i.e., a block-level\n\
1985
+ descendant that is not positioned and not a float). E.g., the first\n\
1986
+ line of the <code>div</code> in <code>&lt;DIV>&lt;P>This\n\
1987
+ line...&lt;/P>&lt/DIV></code> is the first line of the <code>p</code> (assuming\n\
1988
+ that both <code>p</code> and <code>div</code> are block-level).\n\
1989
+ \n\
1990
+ <p>The first line of a table-cell or inline-block cannot be the first\n\
1991
+ formatted line of an ancestor element. Thus, in <code>&lt;DIV&gt;&lt;P\n\
1992
+ STYLE=\"display: inline-block\">Hello&lt;BR&gt;Goodbye&lt;/P&gt;\n\
1993
+ etcetera&lt;/DIV&gt;</code> the first formatted line of the\n\
1994
+ <code>div</code> is not the line \"Hello\".\n\
1995
+ \n\
1996
+ <p class=\"note\">Note that the first line of the <code>p</code> in this\n\
1997
+ fragment: <code>&lt;p&gt&lt;br&gt;First...</code> doesn't contain any\n\
1998
+ letters (assuming the default style for <code>br</code> in HTML\n\
1999
+ 4). The word \"First\" is not on the first formatted line.\n\
2000
+ \n\
2001
+ <p>A UA should act as if the fictional start tags of the\n\
2002
+ <code>::first-line</code> pseudo-elements were nested just inside the\n\
2003
+ innermost enclosing block-level element. (Since CSS1 and CSS2 were\n\
2004
+ silent on this case, authors should not rely on this behavior.) Here\n\
2005
+ is an example. The fictional tag sequence for</p>\n\
2006
+ \n\
2007
+ <pre>\n\
2008
+ &lt;DIV>\n\
2009
+ &lt;P>First paragraph&lt;/P>\n\
2010
+ &lt;P>Second paragraph&lt;/P>\n\
2011
+ &lt;/DIV>\n\
2012
+ </pre>\n\
2013
+ \n\
2014
+ <p>is</p>\n\
2015
+ \n\
2016
+ <pre>\n\
2017
+ &lt;DIV>\n\
2018
+ &lt;P>&lt;DIV::first-line>&lt;P::first-line>First paragraph&lt;/P::first-line>&lt;/DIV::first-line>&lt;/P>\n\
2019
+ &lt;P>&lt;P::first-line>Second paragraph&lt;/P::first-line>&lt;/P>\n\
2020
+ &lt;/DIV>\n\
2021
+ </pre>\n\
2022
+ \n\
2023
+ <p>The <code>::first-line</code> pseudo-element is similar to an\n\
2024
+ inline-level element, but with certain restrictions. In CSS, the\n\
2025
+ following properties apply to a <code>::first-line</code>\n\
2026
+ pseudo-element: font properties, color property, background\n\
2027
+ properties, 'word-spacing', 'letter-spacing', 'text-decoration',\n\
2028
+ 'vertical-align', 'text-transform', 'line-height'. UAs may apply other\n\
2029
+ properties as well.</p>\n\
2030
+ \n\
2031
+ \n\
2032
+ <h4><a name=first-letter>7.2. The ::first-letter pseudo-element</a></h4>\n\
2033
+ \n\
2034
+ <p>The <code>::first-letter</code> pseudo-element represents the first\n\
2035
+ letter of the first line of a block, if it is not preceded by any\n\
2036
+ other content (such as images or inline tables) on its line. The\n\
2037
+ ::first-letter pseudo-element may be used for \"initial caps\" and \"drop\n\
2038
+ caps\", which are common typographical effects. This type of initial\n\
2039
+ letter is similar to an inline-level element if its 'float' property\n\
2040
+ is 'none'; otherwise, it is similar to a floated element.</p>\n\
2041
+ \n\
2042
+ <p>In CSS, these are the properties that apply to <code>::first-letter</code>\n\
2043
+ pseudo-elements: font properties, 'text-decoration', 'text-transform',\n\
2044
+ 'letter-spacing', 'word-spacing' (when appropriate), 'line-height',\n\
2045
+ 'float', 'vertical-align' (only if 'float' is 'none'), margin\n\
2046
+ properties, padding properties, border properties, color property,\n\
2047
+ background properties. UAs may apply other properties as well. To\n\
2048
+ allow UAs to render a typographically correct drop cap or initial cap,\n\
2049
+ the UA may choose a line-height, width and height based on the shape\n\
2050
+ of the letter, unlike for normal elements.</p>\n\
2051
+ \n\
2052
+ <div class=\"example\">\n\
2053
+ <p>Example:</p>\n\
2054
+ <p>This example shows a possible rendering of an initial cap. Note\n\
2055
+ that the 'line-height' that is inherited by the <code>::first-letter</code>\n\
2056
+ pseudo-element is 1.1, but the UA in this example has computed the\n\
2057
+ height of the first letter differently, so that it doesn't cause any\n\
2058
+ unnecessary space between the first two lines. Also note that the\n\
2059
+ fictional start tag of the first letter is inside the <span>span</span>, and thus\n\
2060
+ the font weight of the first letter is normal, not bold as the <span>span</span>:\n\
2061
+ <pre>\n\
2062
+ p { line-height: 1.1 }\n\
2063
+ p::first-letter { font-size: 3em; font-weight: normal }\n\
2064
+ span { font-weight: bold }\n\
2065
+ ...\n\
2066
+ &lt;p>&lt;span>Het hemelsche&lt;/span> gerecht heeft zich ten lange lesten&lt;br>\n\
2067
+ Erbarremt over my en mijn benaeuwde vesten&lt;br>\n\
2068
+ En arme burgery, en op mijn volcx gebed&lt;br>\n\
2069
+ En dagelix geschrey de bange stad ontzet.\n\
2070
+ </pre>\n\
2071
+ <div class=\"figure\">\n\
2072
+ <p><img src=\"initial-cap.png\" alt=\"Image illustrating the ::first-letter pseudo-element\">\n\
2073
+ </div>\n\
2074
+ </div>\n\
2075
+ \n\
2076
+ <div class=\"example\">\n\
2077
+ <p>The following CSS will make a drop cap initial letter span about two lines:</p>\n\
2078
+ \n\
2079
+ <pre>\n\
2080
+ &lt;!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"&gt;\n\
2081
+ &lt;HTML&gt;\n\
2082
+ &lt;HEAD&gt;\n\
2083
+ &lt;TITLE&gt;Drop cap initial letter&lt;/TITLE&gt;\n\
2084
+ &lt;STYLE type=\"text/css\"&gt;\n\
2085
+ P { font-size: 12pt; line-height: 1.2 }\n\
2086
+ P::first-letter { font-size: 200%; font-weight: bold; float: left }\n\
2087
+ SPAN { text-transform: uppercase }\n\
2088
+ &lt;/STYLE&gt;\n\
2089
+ &lt;/HEAD&gt;\n\
2090
+ &lt;BODY&gt;\n\
2091
+ &lt;P&gt;&lt;SPAN&gt;The first&lt;/SPAN&gt; few words of an article\n\
2092
+ in The Economist.&lt;/P&gt;\n\
2093
+ &lt;/BODY&gt;\n\
2094
+ &lt;/HTML&gt;\n\
2095
+ </pre>\n\
2096
+ \n\
2097
+ <p>This example might be formatted as follows:</p>\n\
2098
+ \n\
2099
+ <div class=\"figure\">\n\
2100
+ <P><img src=\"first-letter.gif\" alt=\"Image illustrating the combined effect of the ::first-letter and ::first-line pseudo-elements\"></p>\n\
2101
+ </div>\n\
2102
+ \n\
2103
+ <p>The <span class=\"index-inst\" title=\"fictional tag\n\
2104
+ sequence\">fictional tag sequence</span> is:</p>\n\
2105
+ \n\
2106
+ <pre>\n\
2107
+ &lt;P&gt;\n\
2108
+ &lt;SPAN&gt;\n\
2109
+ &lt;P::first-letter&gt;\n\
2110
+ T\n\
2111
+ &lt;/P::first-letter&gt;he first\n\
2112
+ &lt;/SPAN&gt; \n\
2113
+ few words of an article in the Economist.\n\
2114
+ &lt;/P&gt;\n\
2115
+ </pre>\n\
2116
+ \n\
2117
+ <p>Note that the <code>::first-letter</code> pseudo-element tags abut\n\
2118
+ the content (i.e., the initial character), while the ::first-line\n\
2119
+ pseudo-element start tag is inserted right after the start tag of the\n\
2120
+ block element.</p> </div>\n\
2121
+ \n\
2122
+ <p>In order to achieve traditional drop caps formatting, user agents\n\
2123
+ may approximate font sizes, for example to align baselines. Also, the\n\
2124
+ glyph outline may be taken into account when formatting.</p>\n\
2125
+ \n\
2126
+ <p>Punctuation (i.e, characters defined in Unicode in the \"open\" (Ps),\n\
2127
+ \"close\" (Pe), \"initial\" (Pi). \"final\" (Pf) and \"other\" (Po)\n\
2128
+ punctuation classes), that precedes or follows the first letter should\n\
2129
+ be included. <a href=\"#refsUNICODE\">[UNICODE]</a></p>\n\
2130
+ \n\
2131
+ <div class=\"figure\">\n\
2132
+ <P><img src=\"first-letter2.gif\" alt=\"Quotes that precede the\n\
2133
+ first letter should be included.\"></p>\n\
2134
+ </div>\n\
2135
+ \n\
2136
+ <p>The <code>::first-letter</code> also applies if the first letter is\n\
2137
+ in fact a digit, e.g., the \"6\" in \"67 million dollars is a lot of\n\
2138
+ money.\"</p>\n\
2139
+ \n\
2140
+ <p>In CSS, the <code>::first-letter</code> pseudo-element applies to\n\
2141
+ block, list-item, table-cell, table-caption, and inline-block\n\
2142
+ elements. <span class=\"note\">A future version of this specification\n\
2143
+ may allow this pesudo-element to apply to more element\n\
2144
+ types.</span></p>\n\
2145
+ \n\
2146
+ <p>The <code>::first-letter</code> pseudo-element can be used with all\n\
2147
+ such elements that contain text, or that have a descendant in the same\n\
2148
+ flow that contains text. A UA should act as if the fictional start tag\n\
2149
+ of the ::first-letter pseudo-element is just before the first text of\n\
2150
+ the element, even if that first text is in a descendant.</p>\n\
2151
+ \n\
2152
+ <div class=\"example\">\n\
2153
+ <p>Example:</p>\n\
2154
+ <p>The fictional tag sequence for this HTMLfragment:\n\
2155
+ <pre>&lt;div>\n\
2156
+ &lt;p>The first text.</pre>\n\
2157
+ <p>is:\n\
2158
+ <pre>&lt;div>\n\
2159
+ &lt;p>&lt;div::first-letter>&lt;p::first-letter>T&lt;/...>&lt;/...>he first text.</pre>\n\
2160
+ </div>\n\
2161
+ \n\
2162
+ <p>The first letter of a table-cell or inline-block cannot be the\n\
2163
+ first letter of an ancestor element. Thus, in <code>&lt;DIV&gt;&lt;P\n\
2164
+ STYLE=\"display: inline-block\">Hello&lt;BR&gt;Goodbye&lt;/P&gt;\n\
2165
+ etcetera&lt;/DIV&gt;</code> the first letter of the <code>div</code> is not the\n\
2166
+ letter \"H\". In fact, the <code>div</code> doesn't have a first letter.\n\
2167
+ \n\
2168
+ <p>The first letter must occur on the <a\n\
2169
+ href=\"#first-formatted-line\">first formatted line.</a> For example, in\n\
2170
+ this fragment: <code>&lt;p&gt&lt;br&gt;First...</code> the first line\n\
2171
+ doesn't contain any letters and <code>::first-letter</code> doesn't\n\
2172
+ match anything (assuming the default style for <code>br</code> in HTML\n\
2173
+ 4). In particular, it does not match the \"F\" of \"First.\"\n\
2174
+ \n\
2175
+ <p>In CSS, if an element is a list item ('display: list-item'), the\n\
2176
+ <code>::first-letter</code> applies to the first letter in the\n\
2177
+ principal box after the marker. UAs may ignore\n\
2178
+ <code>::first-letter</code> on list items with 'list-style-position:\n\
2179
+ inside'. If an element has <code>::before</code> or\n\
2180
+ <code>::after</code> content, the <code>::first-letter</code> applies\n\
2181
+ to the first letter of the element <em>including</em> that content.\n\
2182
+ \n\
2183
+ <div class=\"example\">\n\
2184
+ <p>Example:</p>\n\
2185
+ <p>After the rule 'p::before {content: \"Note: \"}', the selector\n\
2186
+ 'p::first-letter' matches the \"N\" of \"Note\".</p>\n\
2187
+ </div>\n\
2188
+ \n\
2189
+ <p>Some languages may have specific rules about how to treat certain\n\
2190
+ letter combinations. In Dutch, for example, if the letter combination\n\
2191
+ \"ij\" appears at the beginning of a word, both letters should be\n\
2192
+ considered within the <code>::first-letter</code> pseudo-element.\n\
2193
+ \n\
2194
+ <p>If the letters that would form the ::first-letter are not in the\n\
2195
+ same element, such as \"'T\" in <code>&lt;p>'&lt;em>T...</code>, the UA\n\
2196
+ may create a ::first-letter pseudo-element from one of the elements,\n\
2197
+ both elements, or simply not create a pseudo-element.</p>\n\
2198
+ \n\
2199
+ <p>Similarly, if the first letter(s) of the block are not at the start\n\
2200
+ of the line (for example due to bidirectional reordering), then the UA\n\
2201
+ need not create the pseudo-element(s).\n\
2202
+ \n\
2203
+ <div class=\"example\">\n\
2204
+ <p>Example:</p>\n\
2205
+ <p><a name=\"overlapping-example\">The following example</a> illustrates\n\
2206
+ how overlapping pseudo-elements may interact. The first letter of\n\
2207
+ each P element will be green with a font size of '24pt'. The rest of\n\
2208
+ the first formatted line will be 'blue' while the rest of the\n\
2209
+ paragraph will be 'red'.</p>\n\
2210
+ \n\
2211
+ <pre>p { color: red; font-size: 12pt }\n\
2212
+ p::first-letter { color: green; font-size: 200% }\n\
2213
+ p::first-line { color: blue }\n\
2214
+ \n\
2215
+ &lt;P&gt;Some text that ends up on two lines&lt;/P&gt;</pre>\n\
2216
+ \n\
2217
+ <p>Assuming that a line break will occur before the word \"ends\", the\n\
2218
+ <span class=\"index-inst\" title=\"fictional tag sequence\">fictional tag\n\
2219
+ sequence</span> for this fragment might be:</p>\n\
2220
+ \n\
2221
+ <pre>&lt;P&gt;\n\
2222
+ &lt;P::first-line&gt;\n\
2223
+ &lt;P::first-letter&gt; \n\
2224
+ S \n\
2225
+ &lt;/P::first-letter&gt;ome text that \n\
2226
+ &lt;/P::first-line&gt; \n\
2227
+ ends up on two lines \n\
2228
+ &lt;/P&gt;</pre>\n\
2229
+ \n\
2230
+ <p>Note that the <code>::first-letter</code> element is inside the <code>::first-line</code>\n\
2231
+ element. Properties set on <code>::first-line</code> are inherited by\n\
2232
+ <code>::first-letter</code>, but are overridden if the same property is set on\n\
2233
+ <code>::first-letter</code>.</p>\n\
2234
+ </div>\n\
2235
+ \n\
2236
+ \n\
2237
+ <h4><a name=UIfragments>7.3.</a> <a name=selection>The ::selection pseudo-element</a></h4>\n\
2238
+ \n\
2239
+ <p>The <code>::selection</code> pseudo-element applies to the portion\n\
2240
+ of a document that has been highlighted by the user. This also\n\
2241
+ applies, for example, to selected text within an editable text\n\
2242
+ field. This pseudo-element should not be confused with the <code><a\n\
2243
+ href=\"#checked\">:checked</a></code> pseudo-class (which used to be\n\
2244
+ named <code>:selected</code>)\n\
2245
+ \n\
2246
+ <p>Although the <code>::selection</code> pseudo-element is dynamic in\n\
2247
+ nature, and is altered by user action, it is reasonable to expect that\n\
2248
+ when a UA re-renders to a static medium (such as a printed page, see\n\
2249
+ <a href=\"#refsCSS21\">[CSS21]</a>) which was originally rendered to a\n\
2250
+ dynamic medium (like screen), the UA may wish to transfer the current\n\
2251
+ <code>::selection</code> state to that other medium, and have all the\n\
2252
+ appropriate formatting and rendering take effect as well. This is not\n\
2253
+ required &mdash; UAs may omit the <code>::selection</code>\n\
2254
+ pseudo-element for static media.\n\
2255
+ \n\
2256
+ <p>These are the CSS properties that apply to <code>::selection</code>\n\
2257
+ pseudo-elements: color, background, cursor (optional), outline\n\
2258
+ (optional). The computed value of the 'background-image' property on\n\
2259
+ <code>::selection</code> may be ignored.\n\
2260
+ \n\
2261
+ \n\
2262
+ <h4><a name=gen-content>7.4. The ::before and ::after pseudo-elements</a></h4>\n\
2263
+ \n\
2264
+ <p>The <code>::before</code> and <code>::after</code> pseudo-elements\n\
2265
+ can be used to describe generated content before or after an element's\n\
2266
+ content. They are explained in CSS 2.1 <a\n\
2267
+ href=\"#refsCSS21\">[CSS21]</a>.</p>\n\
2268
+ \n\
2269
+ <p>When the <code>::first-letter</code> and <code>::first-line</code>\n\
2270
+ pseudo-elements are combined with <code>::before</code> and\n\
2271
+ <code>::after</code>, they apply to the first letter or line of the\n\
2272
+ element including the inserted text.</p>\n\
2273
+ \n\
2274
+ <h2><a name=combinators>8. Combinators</a></h2>\n\
2275
+ \n\
2276
+ <h3><a name=descendant-combinators>8.1. Descendant combinator</a></h3>\n\
2277
+ \n\
2278
+ <p>At times, authors may want selectors to describe an element that is\n\
2279
+ the descendant of another element in the document tree (e.g., \"an\n\
2280
+ <code>EM</code> element that is contained within an <code>H1</code>\n\
2281
+ element\"). Descendant combinators express such a relationship. A\n\
2282
+ descendant combinator is <a href=\"#whitespace\">white space</a> that\n\
2283
+ separates two sequences of simple selectors. A selector of the form\n\
2284
+ \"<code>A B</code>\" represents an element <code>B</code> that is an\n\
2285
+ arbitrary descendant of some ancestor element <code>A</code>.\n\
2286
+ \n\
2287
+ <div class=\"example\">\n\
2288
+ <p>Examples:</p>\n\
2289
+ <p>For example, consider the following selector:</p>\n\
2290
+ <pre>h1 em</pre>\n\
2291
+ <p>It represents an <code>em</code> element being the descendant of\n\
2292
+ an <code>h1</code> element. It is a correct and valid, but partial,\n\
2293
+ description of the following fragment:</p>\n\
2294
+ <pre>&lt;h1&gt;This &lt;span class=\"myclass\"&gt;headline\n\
2295
+ is &lt;em&gt;very&lt;/em&gt; important&lt;/span&gt;&lt;/h1&gt;</pre>\n\
2296
+ <p>The following selector:</p>\n\
2297
+ <pre>div * p</pre>\n\
2298
+ <p>represents a <code>p</code> element that is a grandchild or later\n\
2299
+ descendant of a <code>div</code> element. Note the whitespace on\n\
2300
+ either side of the \"*\" is not part of the universal selector; the\n\
2301
+ whitespace is a combinator indicating that the DIV must be the\n\
2302
+ ancestor of some element, and that that element must be an ancestor\n\
2303
+ of the P.</p>\n\
2304
+ <p>The following selector, which combines descendant combinators and\n\
2305
+ <a href=\"#attribute-selectors\">attribute selectors</a>, represents an\n\
2306
+ element that (1) has the <code>href</code> attribute set and (2) is\n\
2307
+ inside a <code>p</code> that is itself inside a <code>div</code>:</p>\n\
2308
+ <pre>div p *[href]</pre>\n\
2309
+ </div>\n\
2310
+ \n\
2311
+ <h3><a name=child-combinators>8.2. Child combinators</a></h3>\n\
2312
+ \n\
2313
+ <p>A <dfn>child combinator</dfn> describes a childhood relationship\n\
2314
+ between two elements. A child combinator is made of the\n\
2315
+ &quot;greater-than sign&quot; (<code>&gt;</code>) character and\n\
2316
+ separates two sequences of simple selectors.\n\
2317
+ \n\
2318
+ \n\
2319
+ <div class=\"example\">\n\
2320
+ <p>Examples:</p>\n\
2321
+ <p>The following selector represents a <code>p</code> element that is\n\
2322
+ child of <code>body</code>:</p>\n\
2323
+ <pre>body &gt; p</pre>\n\
2324
+ <p>The following example combines descendant combinators and child\n\
2325
+ combinators.</p>\n\
2326
+ <pre>div ol&gt;li p</pre><!-- LEAVE THOSE SPACES OUT! see below -->\n\
2327
+ <p>It represents a <code>p</code> element that is a descendant of an\n\
2328
+ <code>li</code> element; the <code>li</code> element must be the\n\
2329
+ child of an <code>ol</code> element; the <code>ol</code> element must\n\
2330
+ be a descendant of a <code>div</code>. Notice that the optional white\n\
2331
+ space around the \"&gt;\" combinator has been left out.</p>\n\
2332
+ </div>\n\
2333
+ \n\
2334
+ <p>For information on selecting the first child of an element, please\n\
2335
+ see the section on the <code><a\n\
2336
+ href=\"#structural-pseudos\">:first-child</a></code> pseudo-class\n\
2337
+ above.</p>\n\
2338
+ \n\
2339
+ <h3><a name=sibling-combinators>8.3. Sibling combinators</a></h3>\n\
2340
+ \n\
2341
+ <p>There are two different sibling combinators: the adjacent sibling\n\
2342
+ combinator and the general sibling combinator. In both cases,\n\
2343
+ non-element nodes (e.g. text between elements) are ignored when\n\
2344
+ considering adjacency of elements.</p>\n\
2345
+ \n\
2346
+ <h4><a name=adjacent-sibling-combinators>8.3.1. Adjacent sibling combinator</a></h4>\n\
2347
+ \n\
2348
+ <p>The adjacent sibling combinator is made of the &quot;plus\n\
2349
+ sign&quot; (U+002B, <code>+</code>) character that separates two\n\
2350
+ sequences of simple selectors. The elements represented by the two\n\
2351
+ sequences share the same parent in the document tree and the element\n\
2352
+ represented by the first sequence immediately precedes the element\n\
2353
+ represented by the second one.</p>\n\
2354
+ \n\
2355
+ <div class=\"example\">\n\
2356
+ <p>Examples:</p>\n\
2357
+ <p>The following selector represents a <code>p</code> element\n\
2358
+ immediately following a <code>math</code> element:</p>\n\
2359
+ <pre>math + p</pre>\n\
2360
+ <p>The following selector is conceptually similar to the one in the\n\
2361
+ previous example, except that it adds an attribute selector &mdash; it\n\
2362
+ adds a constraint to the <code>h1</code> element, that it must have\n\
2363
+ <code>class=\"opener\"</code>:</p>\n\
2364
+ <pre>h1.opener + h2</pre>\n\
2365
+ </div>\n\
2366
+ \n\
2367
+ \n\
2368
+ <h4><a name=general-sibling-combinators>8.3.2. General sibling combinator</a></h4>\n\
2369
+ \n\
2370
+ <p>The general sibling combinator is made of the &quot;tilde&quot;\n\
2371
+ (U+007E, <code>~</code>) character that separates two sequences of\n\
2372
+ simple selectors. The elements represented by the two sequences share\n\
2373
+ the same parent in the document tree and the element represented by\n\
2374
+ the first sequence precedes (not necessarily immediately) the element\n\
2375
+ represented by the second one.</p>\n\
2376
+ \n\
2377
+ <div class=\"example\">\n\
2378
+ <p>Example:</p>\n\
2379
+ <pre>h1 ~ pre</pre>\n\
2380
+ <p>represents a <code>pre</code> element following an <code>h1</code>. It\n\
2381
+ is a correct and valid, but partial, description of:</p>\n\
2382
+ <pre>&lt;h1&gt;Definition of the function a&lt;/h1&gt;\n\
2383
+ &lt;p&gt;Function a(x) has to be applied to all figures in the table.&lt;/p&gt;\n\
2384
+ &lt;pre&gt;function a(x) = 12x/13.5&lt;/pre&gt;</pre>\n\
2385
+ </div>\n\
2386
+ \n\
2387
+ <h2><a name=specificity>9. Calculating a selector's specificity</a></h2>\n\
2388
+ \n\
2389
+ <p>A selector's specificity is calculated as follows:</p>\n\
2390
+ \n\
2391
+ <ul>\n\
2392
+ <li>count the number of ID selectors in the selector (= a)</li>\n\
2393
+ <li>count the number of class selectors, attributes selectors, and pseudo-classes in the selector (= b)</li>\n\
2394
+ <li>count the number of element names in the selector (= c)</li>\n\
2395
+ <li>ignore pseudo-elements</li>\n\
2396
+ </ul>\n\
2397
+ \n\
2398
+ <p>Selectors inside <a href=\"#negation\">the negation pseudo-class</a>\n\
2399
+ are counted like any other, but the negation itself does not count as\n\
2400
+ a pseudo-class.</p>\n\
2401
+ \n\
2402
+ <p>Concatenating the three numbers a-b-c (in a number system with a\n\
2403
+ large base) gives the specificity.</p>\n\
2404
+ \n\
2405
+ <div class=\"example\">\n\
2406
+ <p>Examples:</p>\n\
2407
+ <pre>* /* a=0 b=0 c=0 -&gt; specificity = 0 */\n\
2408
+ LI /* a=0 b=0 c=1 -&gt; specificity = 1 */\n\
2409
+ UL LI /* a=0 b=0 c=2 -&gt; specificity = 2 */\n\
2410
+ UL OL+LI /* a=0 b=0 c=3 -&gt; specificity = 3 */\n\
2411
+ H1 + *[REL=up] /* a=0 b=1 c=1 -&gt; specificity = 11 */\n\
2412
+ UL OL LI.red /* a=0 b=1 c=3 -&gt; specificity = 13 */\n\
2413
+ LI.red.level /* a=0 b=2 c=1 -&gt; specificity = 21 */\n\
2414
+ #x34y /* a=1 b=0 c=0 -&gt; specificity = 100 */\n\
2415
+ #s12:not(FOO) /* a=1 b=0 c=1 -&gt; specificity = 101 */\n\
2416
+ </pre>\n\
2417
+ </div>\n\
2418
+ \n\
2419
+ <p class=\"note\"><strong>Note:</strong> the specificity of the styles\n\
2420
+ specified in an HTML <code>style</code> attribute is described in CSS\n\
2421
+ 2.1. <a href=\"#refsCSS21\">[CSS21]</a>.</p>\n\
2422
+ \n\
2423
+ <h2><a name=w3cselgrammar>10. The grammar of Selectors</a></h2>\n\
2424
+ \n\
2425
+ <h3><a name=grammar>10.1. Grammar</a></h3>\n\
2426
+ \n\
2427
+ <p>The grammar below defines the syntax of Selectors. It is globally\n\
2428
+ LL(1) and can be locally LL(2) (but note that most UA's should not use\n\
2429
+ it directly, since it doesn't express the parsing conventions). The\n\
2430
+ format of the productions is optimized for human consumption and some\n\
2431
+ shorthand notations beyond Yacc (see <a href=\"#refsYACC\">[YACC]</a>)\n\
2432
+ are used:</p>\n\
2433
+ \n\
2434
+ <ul>\n\
2435
+ <li><b>*</b>: 0 or more\n\
2436
+ <li><b>+</b>: 1 or more\n\
2437
+ <li><b>?</b>: 0 or 1\n\
2438
+ <li><b>|</b>: separates alternatives\n\
2439
+ <li><b>[ ]</b>: grouping </li>\n\
2440
+ </ul>\n\
2441
+ \n\
2442
+ <p>The productions are:</p>\n\
2443
+ \n\
2444
+ <pre>selectors_group\n\
2445
+ : selector [ COMMA S* selector ]*\n\
2446
+ ;\n\
2447
+ \n\
2448
+ selector\n\
2449
+ : simple_selector_sequence [ combinator simple_selector_sequence ]*\n\
2450
+ ;\n\
2451
+ \n\
2452
+ combinator\n\
2453
+ /* combinators can be surrounded by white space */\n\
2454
+ : PLUS S* | GREATER S* | TILDE S* | S+\n\
2455
+ ;\n\
2456
+ \n\
2457
+ simple_selector_sequence\n\
2458
+ : [ type_selector | universal ]\n\
2459
+ [ HASH | class | attrib | pseudo | negation ]*\n\
2460
+ | [ HASH | class | attrib | pseudo | negation ]+\n\
2461
+ ;\n\
2462
+ \n\
2463
+ type_selector\n\
2464
+ : [ namespace_prefix ]? element_name\n\
2465
+ ;\n\
2466
+ \n\
2467
+ namespace_prefix\n\
2468
+ : [ IDENT | '*' ]? '|'\n\
2469
+ ;\n\
2470
+ \n\
2471
+ element_name\n\
2472
+ : IDENT\n\
2473
+ ;\n\
2474
+ \n\
2475
+ universal\n\
2476
+ : [ namespace_prefix ]? '*'\n\
2477
+ ;\n\
2478
+ \n\
2479
+ class\n\
2480
+ : '.' IDENT\n\
2481
+ ;\n\
2482
+ \n\
2483
+ attrib\n\
2484
+ : '[' S* [ namespace_prefix ]? IDENT S*\n\
2485
+ [ [ PREFIXMATCH |\n\
2486
+ SUFFIXMATCH |\n\
2487
+ SUBSTRINGMATCH |\n\
2488
+ '=' |\n\
2489
+ INCLUDES |\n\
2490
+ DASHMATCH ] S* [ IDENT | STRING ] S*\n\
2491
+ ]? ']'\n\
2492
+ ;\n\
2493
+ \n\
2494
+ pseudo\n\
2495
+ /* '::' starts a pseudo-element, ':' a pseudo-class */\n\
2496
+ /* Exceptions: :first-line, :first-letter, :before and :after. */\n\
2497
+ /* Note that pseudo-elements are restricted to one per selector and */\n\
2498
+ /* occur only in the last simple_selector_sequence. */\n\
2499
+ : ':' ':'? [ IDENT | functional_pseudo ]\n\
2500
+ ;\n\
2501
+ \n\
2502
+ functional_pseudo\n\
2503
+ : FUNCTION S* expression ')'\n\
2504
+ ;\n\
2505
+ \n\
2506
+ expression\n\
2507
+ /* In CSS3, the expressions are identifiers, strings, */\n\
2508
+ /* or of the form \"an+b\" */\n\
2509
+ : [ [ PLUS | '-' | DIMENSION | NUMBER | STRING | IDENT ] S* ]+\n\
2510
+ ;\n\
2511
+ \n\
2512
+ negation\n\
2513
+ : NOT S* negation_arg S* ')'\n\
2514
+ ;\n\
2515
+ \n\
2516
+ negation_arg\n\
2517
+ : type_selector | universal | HASH | class | attrib | pseudo\n\
2518
+ ;</pre>\n\
2519
+ \n\
2520
+ \n\
2521
+ <h3><a name=lex>10.2. Lexical scanner</a></h3>\n\
2522
+ \n\
2523
+ <p>The following is the <a name=x3>tokenizer</a>, written in Flex (see\n\
2524
+ <a href=\"#refsFLEX\">[FLEX]</a>) notation. The tokenizer is\n\
2525
+ case-insensitive.</p>\n\
2526
+ \n\
2527
+ <p>The two occurrences of \"\\377\" represent the highest character\n\
2528
+ number that current versions of Flex can deal with (decimal 255). They\n\
2529
+ should be read as \"\\4177777\" (decimal 1114111), which is the highest\n\
2530
+ possible code point in Unicode/ISO-10646. <a\n\
2531
+ href=\"#refsUNICODE\">[UNICODE]</a></p>\n\
2532
+ \n\
2533
+ <pre>%option case-insensitive\n\
2534
+ \n\
2535
+ ident [-]?{nmstart}{nmchar}*\n\
2536
+ name {nmchar}+\n\
2537
+ nmstart [_a-z]|{nonascii}|{escape}\n\
2538
+ nonascii [^\\0-\\177]\n\
2539
+ unicode \\\\[0-9a-f]{1,6}(\\r\\n|[ \\n\\r\\t\\f])?\n\
2540
+ escape {unicode}|\\\\[^\\n\\r\\f0-9a-f]\n\
2541
+ nmchar [_a-z0-9-]|{nonascii}|{escape}\n\
2542
+ num [0-9]+|[0-9]*\\.[0-9]+\n\
2543
+ string {string1}|{string2}\n\
2544
+ string1 \\\"([^\\n\\r\\f\\\\\"]|\\\\{nl}|{nonascii}|{escape})*\\\"\n\
2545
+ string2 \\'([^\\n\\r\\f\\\\']|\\\\{nl}|{nonascii}|{escape})*\\'\n\
2546
+ invalid {invalid1}|{invalid2}\n\
2547
+ invalid1 \\\"([^\\n\\r\\f\\\\\"]|\\\\{nl}|{nonascii}|{escape})*\n\
2548
+ invalid2 \\'([^\\n\\r\\f\\\\']|\\\\{nl}|{nonascii}|{escape})*\n\
2549
+ nl \\n|\\r\\n|\\r|\\f\n\
2550
+ w [ \\t\\r\\n\\f]*\n\
2551
+ \n\
2552
+ %%\n\
2553
+ \n\
2554
+ [ \\t\\r\\n\\f]+ return S;\n\
2555
+ \n\
2556
+ \"~=\" return INCLUDES;\n\
2557
+ \"|=\" return DASHMATCH;\n\
2558
+ \"^=\" return PREFIXMATCH;\n\
2559
+ \"$=\" return SUFFIXMATCH;\n\
2560
+ \"*=\" return SUBSTRINGMATCH;\n\
2561
+ {ident} return IDENT;\n\
2562
+ {string} return STRING;\n\
2563
+ {ident}\"(\" return FUNCTION;\n\
2564
+ {num} return NUMBER;\n\
2565
+ \"#\"{name} return HASH;\n\
2566
+ {w}\"+\" return PLUS;\n\
2567
+ {w}\"&gt;\" return GREATER;\n\
2568
+ {w}\",\" return COMMA;\n\
2569
+ {w}\"~\" return TILDE;\n\
2570
+ \":not(\" return NOT;\n\
2571
+ @{ident} return ATKEYWORD;\n\
2572
+ {invalid} return INVALID;\n\
2573
+ {num}% return PERCENTAGE;\n\
2574
+ {num}{ident} return DIMENSION;\n\
2575
+ \"&lt;!--\" return CDO;\n\
2576
+ \"--&gt;\" return CDC;\n\
2577
+ \n\
2578
+ \"url(\"{w}{string}{w}\")\" return URI;\n\
2579
+ \"url(\"{w}([!#$%&*-~]|{nonascii}|{escape})*{w}\")\" return URI;\n\
2580
+ U\\+[0-9a-f?]{1,6}(-[0-9a-f]{1,6})? return UNICODE_RANGE;\n\
2581
+ \n\
2582
+ \\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\/ /* ignore comments */\n\
2583
+ \n\
2584
+ . return *yytext;</pre>\n\
2585
+ \n\
2586
+ \n\
2587
+ \n\
2588
+ <h2><a name=downlevel>11. Namespaces and down-level clients</a></h2>\n\
2589
+ \n\
2590
+ <p>An important issue is the interaction of CSS selectors with XML\n\
2591
+ documents in web clients that were produced prior to this\n\
2592
+ document. Unfortunately, due to the fact that namespaces must be\n\
2593
+ matched based on the URI which identifies the namespace, not the\n\
2594
+ namespace prefix, some mechanism is required to identify namespaces in\n\
2595
+ CSS by their URI as well. Without such a mechanism, it is impossible\n\
2596
+ to construct a CSS style sheet which will properly match selectors in\n\
2597
+ all cases against a random set of XML documents. However, given\n\
2598
+ complete knowledge of the XML document to which a style sheet is to be\n\
2599
+ applied, and a limited use of namespaces within the XML document, it\n\
2600
+ is possible to construct a style sheet in which selectors would match\n\
2601
+ elements and attributes correctly.</p>\n\
2602
+ \n\
2603
+ <p>It should be noted that a down-level CSS client will (if it\n\
2604
+ properly conforms to CSS forward compatible parsing rules) ignore all\n\
2605
+ <code>@namespace</code> at-rules, as well as all style rules that make\n\
2606
+ use of namespace qualified element type or attribute selectors. The\n\
2607
+ syntax of delimiting namespace prefixes in CSS was deliberately chosen\n\
2608
+ so that down-level CSS clients would ignore the style rules rather\n\
2609
+ than possibly match them incorrectly.</p>\n\
2610
+ \n\
2611
+ <p>The use of default namespaces in CSS makes it possible to write\n\
2612
+ element type selectors that will function in both namespace aware CSS\n\
2613
+ clients as well as down-level clients. It should be noted that\n\
2614
+ down-level clients may incorrectly match selectors against XML\n\
2615
+ elements in other namespaces.</p>\n\
2616
+ \n\
2617
+ <p>The following are scenarios and examples in which it is possible to\n\
2618
+ construct style sheets which would function properly in web clients\n\
2619
+ that do not implement this proposal.</p>\n\
2620
+ \n\
2621
+ <ol>\n\
2622
+ <li>\n\
2623
+ \n\
2624
+ <p>The XML document does not use namespaces.</p>\n\
2625
+ \n\
2626
+ <ul>\n\
2627
+ \n\
2628
+ <li>In this case, it is obviously not necessary to declare or use\n\
2629
+ namespaces in the style sheet. Standard CSS element type and\n\
2630
+ attribute selectors will function adequately in a down-level\n\
2631
+ client.</li>\n\
2632
+ \n\
2633
+ <li>In a CSS namespace aware client, the default behavior of\n\
2634
+ element selectors matching without regard to namespace will\n\
2635
+ function properly against all elements, since no namespaces are\n\
2636
+ present. However, the use of specific element type selectors that\n\
2637
+ match only elements that have no namespace (\"<code>|name</code>\")\n\
2638
+ will guarantee that selectors will match only XML elements that do\n\
2639
+ not have a declared namespace. </li>\n\
2640
+ \n\
2641
+ </ul>\n\
2642
+ \n\
2643
+ </li>\n\
2644
+ \n\
2645
+ <li>\n\
2646
+ \n\
2647
+ <p>The XML document defines a single, default namespace used\n\
2648
+ throughout the document. No namespace prefixes are used in element\n\
2649
+ names.</p>\n\
2650
+ \n\
2651
+ <ul>\n\
2652
+ \n\
2653
+ <li>In this case, a down-level client will function as if\n\
2654
+ namespaces were not used in the XML document at all. Standard CSS\n\
2655
+ element type and attribute selectors will match against all\n\
2656
+ elements. </li>\n\
2657
+ \n\
2658
+ </ul>\n\
2659
+ \n\
2660
+ </li>\n\
2661
+ \n\
2662
+ <li>\n\
2663
+ \n\
2664
+ <p>The XML document does <b>not</b> use a default namespace, all\n\
2665
+ namespace prefixes used are known to the style sheet author, and\n\
2666
+ there is a direct mapping between namespace prefixes and namespace\n\
2667
+ URIs. (A given prefix may only be mapped to one namespace URI\n\
2668
+ throughout the XML document; there may be multiple prefixes mapped\n\
2669
+ to the same URI).</p>\n\
2670
+ \n\
2671
+ <ul>\n\
2672
+ \n\
2673
+ <li>In this case, the down-level client will view and match\n\
2674
+ element type and attribute selectors based on their fully\n\
2675
+ qualified name, not the local part as outlined in the <a\n\
2676
+ href=\"#typenmsp\">Type selectors and Namespaces</a> section. CSS\n\
2677
+ selectors may be declared using an escaped colon \"<code>\\:</code>\"\n\
2678
+ to describe the fully qualified names, e.g.\n\
2679
+ \"<code>html\\:h1</code>\" will match\n\
2680
+ <code>&lt;html:h1&gt;</code>. Selectors using the qualified name\n\
2681
+ will only match XML elements that use the same prefix. Other\n\
2682
+ namespace prefixes used in the XML that are mapped to the same URI\n\
2683
+ will not match as expected unless additional CSS style rules are\n\
2684
+ declared for them.</li>\n\
2685
+ \n\
2686
+ <li>Note that selectors declared in this fashion will\n\
2687
+ <em>only</em> match in down-level clients. A CSS namespace aware\n\
2688
+ client will match element type and attribute selectors based on\n\
2689
+ the name's local part. Selectors declared with the fully\n\
2690
+ qualified name will not match (unless there is no namespace prefix\n\
2691
+ in the fully qualified name).</li>\n\
2692
+ \n\
2693
+ </ul>\n\
2694
+ \n\
2695
+ </li>\n\
2696
+ \n\
2697
+ </ol>\n\
2698
+ \n\
2699
+ <p>In other scenarios: when the namespace prefixes used in the XML are\n\
2700
+ not known in advance by the style sheet author; or a combination of\n\
2701
+ elements with no namespace are used in conjunction with elements using\n\
2702
+ a default namespace; or the same namespace prefix is mapped to\n\
2703
+ <em>different</em> namespace URIs within the same document, or in\n\
2704
+ different documents; it is impossible to construct a CSS style sheet\n\
2705
+ that will function properly against all elements in those documents,\n\
2706
+ unless, the style sheet is written using a namespace URI syntax (as\n\
2707
+ outlined in this document or similar) and the document is processed by\n\
2708
+ a CSS and XML namespace aware client.</p>\n\
2709
+ \n\
2710
+ <h2><a name=profiling>12. Profiles</a></h2>\n\
2711
+ \n\
2712
+ <p>Each specification using Selectors must define the subset of W3C\n\
2713
+ Selectors it allows and excludes, and describe the local meaning of\n\
2714
+ all the components of that subset.</p>\n\
2715
+ \n\
2716
+ <p>Non normative examples:\n\
2717
+ \n\
2718
+ <div class=\"profile\">\n\
2719
+ <table class=\"tprofile\">\n\
2720
+ <tbody>\n\
2721
+ <tr>\n\
2722
+ <th class=\"title\" colspan=2>Selectors profile</th></tr>\n\
2723
+ <tr>\n\
2724
+ <th>Specification</th>\n\
2725
+ <td>CSS level 1</td></tr>\n\
2726
+ <tr>\n\
2727
+ <th>Accepts</th>\n\
2728
+ <td>type selectors<br>class selectors<br>ID selectors<br>:link,\n\
2729
+ :visited and :active pseudo-classes<br>descendant combinator\n\
2730
+ <br>::first-line and ::first-letter pseudo-elements</td></tr>\n\
2731
+ <tr>\n\
2732
+ <th>Excludes</th>\n\
2733
+ <td>\n\
2734
+ \n\
2735
+ <p>universal selector<br>attribute selectors<br>:hover and :focus\n\
2736
+ pseudo-classes<br>:target pseudo-class<br>:lang() pseudo-class<br>all UI\n\
2737
+ element states pseudo-classes<br>all structural\n\
2738
+ pseudo-classes<br>negation pseudo-class<br>all\n\
2739
+ UI element fragments pseudo-elements<br>::before and ::after\n\
2740
+ pseudo-elements<br>child combinators<br>sibling combinators\n\
2741
+ \n\
2742
+ <p>namespaces</td></tr>\n\
2743
+ <tr>\n\
2744
+ <th>Extra constraints</th>\n\
2745
+ <td>only one class selector allowed per sequence of simple\n\
2746
+ selectors</td></tr></tbody></table><br><br>\n\
2747
+ <table class=\"tprofile\">\n\
2748
+ <tbody>\n\
2749
+ <tr>\n\
2750
+ <th class=\"title\" colspan=2>Selectors profile</th></tr>\n\
2751
+ <tr>\n\
2752
+ <th>Specification</th>\n\
2753
+ <td>CSS level 2</td></tr>\n\
2754
+ <tr>\n\
2755
+ <th>Accepts</th>\n\
2756
+ <td>type selectors<br>universal selector<br>attribute presence and\n\
2757
+ values selectors<br>class selectors<br>ID selectors<br>:link, :visited,\n\
2758
+ :active, :hover, :focus, :lang() and :first-child pseudo-classes\n\
2759
+ <br>descendant combinator<br>child combinator<br>adjacent sibling\n\
2760
+ combinator<br>::first-line and ::first-letter pseudo-elements<br>::before\n\
2761
+ and ::after pseudo-elements</td></tr>\n\
2762
+ <tr>\n\
2763
+ <th>Excludes</th>\n\
2764
+ <td>\n\
2765
+ \n\
2766
+ <p>content selectors<br>substring matching attribute\n\
2767
+ selectors<br>:target pseudo-classes<br>all UI element\n\
2768
+ states pseudo-classes<br>all structural pseudo-classes other\n\
2769
+ than :first-child<br>negation pseudo-class<br>all UI element\n\
2770
+ fragments pseudo-elements<br>general sibling combinators\n\
2771
+ \n\
2772
+ <p>namespaces</td></tr>\n\
2773
+ <tr>\n\
2774
+ <th>Extra constraints</th>\n\
2775
+ <td>more than one class selector per sequence of simple selectors (CSS1\n\
2776
+ constraint) allowed</td></tr></tbody></table>\n\
2777
+ \n\
2778
+ <p>In CSS, selectors express pattern matching rules that determine which style\n\
2779
+ rules apply to elements in the document tree. \n\
2780
+ \n\
2781
+ <p>The following selector (CSS level 2) will <b>match</b> all anchors <code>a</code>\n\
2782
+ with attribute <code>name</code> set inside a section 1 header <code>h1</code>: \n\
2783
+ <pre>h1 a[name]</pre>\n\
2784
+ \n\
2785
+ <p>All CSS declarations attached to such a selector are applied to elements\n\
2786
+ matching it. </div>\n\
2787
+ \n\
2788
+ <div class=\"profile\">\n\
2789
+ <table class=\"tprofile\">\n\
2790
+ <tbody>\n\
2791
+ <tr>\n\
2792
+ <th class=\"title\" colspan=2>Selectors profile</th></tr>\n\
2793
+ <tr>\n\
2794
+ <th>Specification</th>\n\
2795
+ <td>STTS 3</td>\n\
2796
+ </tr>\n\
2797
+ <tr>\n\
2798
+ <th>Accepts</th>\n\
2799
+ <td>\n\
2800
+ \n\
2801
+ <p>type selectors<br>universal selectors<br>attribute selectors<br>class\n\
2802
+ selectors<br>ID selectors<br>all structural pseudo-classes<br>\n\
2803
+ all combinators\n\
2804
+ \n\
2805
+ <p>namespaces</td></tr>\n\
2806
+ <tr>\n\
2807
+ <th>Excludes</th>\n\
2808
+ <td>non-accepted pseudo-classes<br>pseudo-elements<br></td></tr>\n\
2809
+ <tr>\n\
2810
+ <th>Extra constraints</th>\n\
2811
+ <td>some selectors and combinators are not allowed in fragment\n\
2812
+ descriptions on the right side of STTS declarations.</td></tr></tbody></table>\n\
2813
+ \n\
2814
+ <p>Selectors can be used in STTS 3 in two different\n\
2815
+ manners: \n\
2816
+ <ol>\n\
2817
+ <li>a selection mechanism equivalent to CSS selection mechanism: declarations\n\
2818
+ attached to a given selector are applied to elements matching that selector,\n\
2819
+ <li>fragment descriptions that appear on the right side of declarations.\n\
2820
+ </li></ol></div>\n\
2821
+ \n\
2822
+ <h2><a name=Conformance></a>13. Conformance and requirements</h2>\n\
2823
+ \n\
2824
+ <p>This section defines conformance with the present specification only.\n\
2825
+ \n\
2826
+ <p>The inability of a user agent to implement part of this specification due to\n\
2827
+ the limitations of a particular device (e.g., non interactive user agents will\n\
2828
+ probably not implement dynamic pseudo-classes because they make no sense without\n\
2829
+ interactivity) does not imply non-conformance.\n\
2830
+ \n\
2831
+ <p>All specifications reusing Selectors must contain a <a\n\
2832
+ href=\"#profiling\">Profile</a> listing the\n\
2833
+ subset of Selectors it accepts or excludes, and describing the constraints\n\
2834
+ it adds to the current specification. \n\
2835
+ \n\
2836
+ <p>Invalidity is caused by a parsing error, e.g. an unrecognized token or a token\n\
2837
+ which is not allowed at the current parsing point.\n\
2838
+ \n\
2839
+ <p>User agents must observe the rules for handling parsing errors:\n\
2840
+ <ul>\n\
2841
+ <li>a simple selector containing an undeclared namespace prefix is invalid</li>\n\
2842
+ <li>a selector containing an invalid simple selector, an invalid combinator\n\
2843
+ or an invalid token is invalid. </li>\n\
2844
+ <li>a group of selectors containing an invalid selector is invalid.</li>\n\
2845
+ </ul>\n\
2846
+ \n\
2847
+ <p>Specifications reusing Selectors must define how to handle parsing\n\
2848
+ errors. (In the case of CSS, the entire rule in which the selector is\n\
2849
+ used is dropped.)</p>\n\
2850
+ \n\
2851
+ <!-- Apparently all these references are out of date:\n\
2852
+ <p>Implementations of this specification must behave as\n\
2853
+ \"recipients of text data\" as defined by <a href=\"#refsCWWW\">[CWWW]</a>\n\
2854
+ when parsing selectors and attempting matches. (In particular,\n\
2855
+ implementations must assume the data is normalized and must not\n\
2856
+ normalize it.) Normative rules for matching strings are defined in\n\
2857
+ <a href=\"#refsCWWW\">[CWWW]</a> and <a\n\
2858
+ href=\"#refsUNICODE\">[UNICODE]</a> and apply to implementations of this\n\
2859
+ specification.</p>-->\n\
2860
+ \n\
2861
+ <h2><a name=Tests></a>14. Tests</h2>\n\
2862
+ \n\
2863
+ <p>This specification has <a\n\
2864
+ href=\"http://www.w3.org/Style/CSS/Test/CSS3/Selectors/current/\">a test\n\
2865
+ suite</a> allowing user agents to verify their basic conformance to\n\
2866
+ the specification. This test suite does not pretend to be exhaustive\n\
2867
+ and does not cover all possible combined cases of Selectors.</p>\n\
2868
+ \n\
2869
+ <h2><a name=ACKS></a>15. Acknowledgements</h2>\n\
2870
+ \n\
2871
+ <p>The CSS working group would like to thank everyone who has sent\n\
2872
+ comments on this specification over the years.</p>\n\
2873
+ \n\
2874
+ <p>The working group would like to extend special thanks to Donna\n\
2875
+ McManus, Justin Baker, Joel Sklar, and Molly Ives Brower who perfermed\n\
2876
+ the final editorial review.</p>\n\
2877
+ \n\
2878
+ <h2><a name=references>16. References</a></h2>\n\
2879
+ \n\
2880
+ <dl class=\"refs\">\n\
2881
+ \n\
2882
+ <dt>[CSS1]\n\
2883
+ <dd><a name=refsCSS1></a> Bert Bos, H&aring;kon Wium Lie; \"<cite>Cascading Style Sheets, level 1</cite>\", W3C Recommendation, 17 Dec 1996, revised 11 Jan 1999\n\
2884
+ <dd>(<code><a href=\"http://www.w3.org/TR/REC-CSS1\">http://www.w3.org/TR/REC-CSS1</a></code>)\n\
2885
+ \n\
2886
+ <dt>[CSS21]\n\
2887
+ <dd><a name=refsCSS21></a> Bert Bos, Tantek &Ccedil;elik, Ian Hickson, H&aring;kon Wium Lie, editors; \"<cite>Cascading Style Sheets, level 2 revision 1</cite>\", W3C Working Draft, 13 June 2005 \n\
2888
+ <dd>(<code><a href=\"http://www.w3.org/TR/CSS21\">http://www.w3.org/TR/CSS21</a></code>)\n\
2889
+ \n\
2890
+ <dt>[CWWW]\n\
2891
+ <dd><a name=refsCWWW></a> Martin J. D&uuml;rst, Fran&ccedil;ois Yergeau, Misha Wolf, Asmus Freytag, Tex Texin, editors; \"<cite>Character Model for the World Wide Web</cite>\", W3C Recommendation, 15 February 2005\n\
2892
+ <dd>(<code><a href=\"http://www.w3.org/TR/charmod/\">http://www.w3.org/TR/charmod/</a></code>)\n\
2893
+ \n\
2894
+ <dt>[FLEX]\n\
2895
+ <dd><a name=\"refsFLEX\"></a> \"<cite>Flex: The Lexical Scanner Generator</cite>\", Version 2.3.7, ISBN 1882114213\n\
2896
+ \n\
2897
+ <dt>[HTML4]\n\
2898
+ <dd><a name=\"refsHTML4\"></a> Dave Ragget, Arnaud Le Hors, Ian Jacobs, editors; \"<cite>HTML 4.01 Specification</cite>\", W3C Recommendation, 24 December 1999\n\
2899
+ <dd>(<a href=\"http://www.w3.org/TR/html4/\"><code>http://www.w3.org/TR/html4/</code></a>)\n\
2900
+ \n\
2901
+ <dt>[MATH]\n\
2902
+ <dd><a name=\"refsMATH\"></a> Patrick Ion, Robert Miner, editors; \"<cite>Mathematical Markup Language (MathML) 1.01</cite>\", W3C Recommendation, revision of 7 July 1999\n\
2903
+ <dd>(<code><a href=\"http://www.w3.org/TR/REC-MathML/\">http://www.w3.org/TR/REC-MathML/</a></code>)\n\
2904
+ \n\
2905
+ <dt>[RFC3066]\n\
2906
+ <dd><a name=\"refsRFC3066\"></a> H. Alvestrand; \"<cite>Tags for the Identification of Languages</cite>\", Request for Comments 3066, January 2001\n\
2907
+ <dd>(<a href=\"http://www.ietf.org/rfc/rfc3066.txt\"><code>http://www.ietf.org/rfc/rfc3066.txt</code></a>)\n\
2908
+ \n\
2909
+ <dt>[STTS]\n\
2910
+ <dd><a name=refsSTTS></a> Daniel Glazman; \"<cite>Simple Tree Transformation Sheets 3</cite>\", Electricit&eacute; de France, submission to the W3C, 11 November 1998 \n\
2911
+ <dd>(<code><a href=\"http://www.w3.org/TR/NOTE-STTS3\">http://www.w3.org/TR/NOTE-STTS3</a></code>)\n\
2912
+ \n\
2913
+ <dt>[SVG]\n\
2914
+ <dd><a name=\"refsSVG\"></a> Jon Ferraiolo, &#34276;&#27810; &#28147;, Dean Jackson, editors; \"<cite>Scalable Vector Graphics (SVG) 1.1 Specification</cite>\", W3C Recommendation, 14 January 2003\n\
2915
+ <dd>(<code><a href=\"http://www.w3.org/TR/SVG/\">http://www.w3.org/TR/SVG/</a></code>)\n\
2916
+ \n\
2917
+ <dt>[UNICODE]</dt>\n\
2918
+ <dd><a name=\"refsUNICODE\"></a> <cite><a\n\
2919
+ href=\"http://www.unicode.org/versions/Unicode4.1.0/\">The Unicode Standard, Version 4.1</a></cite>, The Unicode Consortium. Boston, MA, Addison-Wesley, March 2005. ISBN 0-321-18578-1, as amended by <a href=\"http://www.unicode.org/versions/Unicode4.0.1/\">Unicode 4.0.1</a> and <a href=\"http://www.unicode.org/versions/Unicode4.1.0/\">Unicode 4.1.0</a>.\n\
2920
+ <dd>(<code><a href=\"http://www.unicode.org/versions/\">http://www.unicode.org/versions/</a></code>)</dd>\n\
2921
+ \n\
2922
+ <dt>[XML10]\n\
2923
+ <dd><a name=\"refsXML10\"></a> Tim Bray, Jean Paoli, C. M. Sperberg-McQueen, Eve Maler, Fran&ccedil;ois Yergeau, editors; \"<cite>Extensible Markup Language (XML) 1.0 (Third Edition)</cite>\", W3C Recommendation, 4 February 2004\n\
2924
+ <dd>(<a href=\"http://www.w3.org/TR/REC-xml/\"><code>http://www.w3.org/TR/REC-xml/</code></a>)\n\
2925
+ \n\
2926
+ <dt>[XMLNAMES]\n\
2927
+ <dd><a name=\"refsXMLNAMES\"></a> Tim Bray, Dave Hollander, Andrew Layman, editors; \"<cite>Namespaces in XML</cite>\", W3C Recommendation, 14 January 1999\n\
2928
+ <dd>(<a href=\"http://www.w3.org/TR/REC-xml-names/\"><code>http://www.w3.org/TR/REC-xml-names/</code></a>)\n\
2929
+ \n\
2930
+ <dt>[YACC]\n\
2931
+ <dd><a name=\"refsYACC\"></a> S. C. Johnson; \"<cite>YACC &mdash; Yet another compiler compiler</cite>\", Technical Report, Murray Hill, 1975\n\
2932
+ \n\
2933
+ </dl>\n\
2934
+ \n\
2935
+ <div class=\"wrapper\">\n\
2936
+ <a href=\"#\" class=\"inner\">test</a>\n\
2937
+ </div>\n\
2938
+ <div>\n\
2939
+ <div class=\"wrapper\">\n\
2940
+ <a href=\"#\" class=\"inner\">test</a>\n\
2941
+ <div class=\"wrapper\">\n\
2942
+ <a href=\"#\" class=\"inner\">test</a>\n\
2943
+ </div>\n\
2944
+ <div>\n\
2945
+ <div class=\"wrapper\">\n\
2946
+ <a href=\"#\" class=\"inner\">test</a>\n\
2947
+ </div>\n\
2948
+ </div>\n\
2949
+ </div>\n\
2950
+ </div>\n\
2951
+ \n\
2952
+ <code>\n\
2953
+ <div>\n\
2954
+ <i class=\"nest a1\">d1<b class=\"flatInNest a1\">d1</b>\n\
2955
+ <b class=\"nest a2\">d2<i class=\"flatInNest a2\">d2</i>\n\
2956
+ <i class=\"nest a3\">d3<b class=\"flatInNest a3\">d3</b>\n\
2957
+ <b class=\"nest a4\">d4<i class=\"flatInNest a4\">d4</i>\n\
2958
+ <i class=\"nest a5\">d5<b class=\"flatInNest a5\">d5</b>\n\
2959
+ <b class=\"nest a6\">d6<i class=\"flatInNest a6\">d6</i>\n\
2960
+ </b>\n\
2961
+ </i>\n\
2962
+ </b>\n\
2963
+ </i>\n\
2964
+ </b>\n\
2965
+ </i>\n\
2966
+ </div>\n\
2967
+ <div>\n\
2968
+ <b class=\"flatOut a1\">d1\n\
2969
+ <b class=\"flatInOut a1\">d1</b>\n\
2970
+ </b>\n\
2971
+ <i class=\"flatOut a2\">d2\n\
2972
+ <i class=\"flatInOut a2\">d2</i>\n\
2973
+ </i>\n\
2974
+ <b class=\"flatOut a3\">d3\n\
2975
+ <b class=\"flatInOut a3\">d3</b>\n\
2976
+ </b>\n\
2977
+ <i class=\"flatOut a4\">d4\n\
2978
+ <i class=\"flatInOut a4\">d4</i>\n\
2979
+ </i>\n\
2980
+ <b class=\"flatOut a5\">d5\n\
2981
+ <b class=\"flatInOut a5\">d5</b>\n\
2982
+ </b>\n\
2983
+ <i class=\"flatOut a6\">d6\n\
2984
+ <i class=\"flatInOut a6\">d6</i>\n\
2985
+ </i>\n\
2986
+ </div>\n\
2987
+ </code>\n\
2988
+ ";
2989
+ </script>
2990
+ </head>
2991
+ <body>
2992
+
2993
+ <input type="button" value="Run" onclick="runner.run();" />
2994
+ <div id="report">
2995
+ </div>
2996
+
2997
+ </body>
2998
+ </html>