11
11
12
12
< meta content ="CSS Syntax Module Level 3 (CSS3 Syntax) " name =dcterms.title >
13
13
< meta content =text name =dcterms.type >
14
- < meta content =2013-05-31 name =dcterms.date >
14
+ < meta content =2013-06-03 name =dcterms.date >
15
15
< meta content ="Tab Atkins Jr. " name =dcterms.creator >
16
16
< meta content =W3C name =dcterms.publisher >
17
17
< meta content ="http://dev.w3.org/csswg/css3-syntax/ "
32
32
< h1 class =p-name > CSS Syntax Module Level 3</ h1 >
33
33
34
34
< h2 class ="no-num no-toc " id =longstatus-date > Editor's Draft < time
35
- class =dt-updated datetime =20130531 > 31 May 2013</ time > </ h2 >
35
+ class =dt-updated datetime =20130603 > 3 June 2013</ time > </ h2 >
36
36
37
37
< dl >
38
38
< dt > This version:
@@ -234,9 +234,6 @@ <h2 class="no-num no-toc" id=contents> Table of contents</h2>
234
234
< li > < a href ="#set-the-unicode-ranges-range "> < span class =secno > 4.3.15.
235
235
</ span > Set the 〈unicode-range〉’s range</ a >
236
236
</ ul >
237
-
238
- < li > < a href ="#changes-from-css-2.1-tokenizer "> < span class =secno > 4.4.
239
- </ span > Changes from CSS 2.1 Tokenizer</ a >
240
237
</ ul >
241
238
242
239
< li > < a href ="#parsing "> < span class =secno > 5. </ span > Parsing</ a >
@@ -293,9 +290,6 @@ <h2 class="no-num no-toc" id=contents> Table of contents</h2>
293
290
< li > < a href ="#consume-a-function "> < span class =secno > 5.4.8. </ span >
294
291
Consume a function</ a >
295
292
</ ul >
296
-
297
- < li > < a href ="#changes-from-css-2.1-core-grammar "> < span class =secno > 5.5.
298
- </ span > Changes from CSS 2.1 Core Grammar</ a >
299
293
</ ul >
300
294
301
295
< li > < a href ="#anb "> < span class =secno > 6. </ span > The < var > An+B</ var >
@@ -324,12 +318,15 @@ <h2 class="no-num no-toc" id=contents> Table of contents</h2>
324
318
Serializing < var > <an+b> </ var > </ a >
325
319
</ ul >
326
320
327
- < li > < a href ="#conformance "> < span class =secno > 9. </ span > Conformance</ a >
321
+ < li > < a href ="#changes "> < span class =secno > 9. </ span > Changes from CSS 2.1
322
+ and Selectors Level 3</ a >
323
+
324
+ < li > < a href ="#conformance "> < span class =secno > 10. </ span > Conformance</ a >
328
325
< ul class =toc >
329
- < li > < a href ="#conventions "> < span class =secno > 9 .1. </ span > Document
326
+ < li > < a href ="#conventions "> < span class =secno > 10 .1. </ span > Document
330
327
conventions</ a >
331
328
332
- < li > < a href ="#conformance-classes "> < span class =secno > 9 .2. </ span >
329
+ < li > < a href ="#conformance-classes "> < span class =secno > 10 .2. </ span >
333
330
Conformance classes</ a >
334
331
</ ul >
335
332
@@ -2375,47 +2372,7 @@ <h4 id=set-the-unicode-ranges-range><span class=secno>4.3.15. </span>
2375
2372
between the character whose codepoint is the < a
2376
2373
href ="#start-of-the-range "> < i > start of the range</ i > </ a > and the
2377
2374
character whose codepoint is the < a href ="#end-of-the-range "> < i > end of
2378
- the range</ i > </ a > .
2379
-
2380
- < h3 id =changes-from-css-2.1-tokenizer > < span class =secno > 4.4. </ span >
2381
- Changes from CSS 2.1 Tokenizer</ h3 >
2382
-
2383
- < p > < em > This section is non-normative.</ em >
2384
-
2385
- < p class =note > Note that the point of this spec is to match reality;
2386
- changes from CSS2.1’s tokenizer are nearly always because the
2387
- tokenizer specified something that doesn't match actual browser
2388
- behavior, or left something unspecified. If some detail doesn't match
2389
- browsers, please let me know as it's almost certainly unintentional.
2390
-
2391
- < ol >
2392
- < li > The 〈prefix-match〉, 〈suffix-match〉, and
2393
- 〈substring-match〉 tokens have been imported from Selectors 3.
2394
-
2395
- < li > The BAD-URI token (now 〈bad-url〉) is "self-contained". In
2396
- other words, once the tokenizer realizes it's in a 〈bad-url〉
2397
- rather than a 〈url〉, it just seeks forward to look for the
2398
- closing ), ignoring everything else. This behavior is simpler than
2399
- treating it like a 〈function〉 and paying attention to opened
2400
- blocks and such. Only WebKit exhibits this behavior, but it doesn't
2401
- appear that we've gotten any compat bugs from it.
2402
-
2403
- < li > The 〈comma〉 has been added.
2404
-
2405
- < li > The 〈number〉, 〈number〉, and 〈dimension〉 tokens have
2406
- been changed to include the preceding +/- sign as part of their value
2407
- (rather than as a separate 〈delim〉 that needs to be manually
2408
- handled every time the token is mentioned in other specs). The only
2409
- consequence of this is that comments can no longer be inserted
2410
- between the sign and the number.
2411
-
2412
- < li > Scientific notation is supported for
2413
- numbers/percentages/dimensions to match SVG, per WG resolution.
2414
-
2415
- < li > 〈column〉 has been added, to keep Selectors parsing in
2416
- single-token lookahead.
2417
- </ ol >
2418
- <!--
2375
+ the range</ i > </ a > . <!--
2419
2376
PPPPPPPPPPPPPPPPP AAA RRRRRRRRRRRRRRRRR SSSSSSSSSSSSSSS EEEEEEEEEEEEEEEEEEEEEERRRRRRRRRRRRRRRRR
2420
2377
P::::::::::::::::P A:::A R::::::::::::::::R SS:::::::::::::::SE::::::::::::::::::::ER::::::::::::::::R
2421
2378
P::::::PPPPPP:::::P A:::::A R::::::RRRRRR:::::R S:::::SSSSSS::::::SE::::::::::::::::::::ER::::::RRRRRR:::::R
@@ -3398,49 +3355,6 @@ <h4 id=consume-a-function><span class=secno>5.4.8. </span> <dfn
3398
3355
value</ i > </ a > and append the returned value to the function's value.
3399
3356
</ dl >
3400
3357
3401
- < h3 id =changes-from-css-2.1-core-grammar > < span class =secno > 5.5. </ span >
3402
- Changes from CSS 2.1 Core Grammar</ h3 >
3403
-
3404
- < p > < em > This section is non-normative.</ em >
3405
-
3406
- < p class =note > Note that the point of this spec is to match reality;
3407
- changes from CSS2.1’s Core Grammar are nearly always because the
3408
- Core Grammar specified something that doesn't match actual browser
3409
- behavior, or left something unspecified. If some detail doesn't match
3410
- browsers, please let me know as it's almost certainly unintentional.
3411
-
3412
- < ol >
3413
- < li > The handling of some miscellanous "special" tokens (like an
3414
- unmatched 〈}〉) showing up in various places in the grammar has
3415
- been specified with some reasonable behavior shown by at least one
3416
- browser. Previously, stylesheets with those tokens in those places
3417
- just didn't match the stylesheet grammar at all, so their handling
3418
- was totally undefined. Specifically:
3419
- < ul >
3420
- < li > [] blocks, () blocks and functions can now contain {} blocks,
3421
- 〈at-keyword〉s or 〈semicolon〉s
3422
-
3423
- < li > Selectors can now contain semicolons
3424
-
3425
- < li > Selectors and at-rule preludes can now contain
3426
- 〈at-keyword〉s
3427
- </ ul >
3428
-
3429
- < li > The < a href ="#anb0 "> < var > An+B</ var > </ a > microsyntax has now been
3430
- formally defined in terms of CSS tokens, rather than with a separate
3431
- tokenizer. This has resulted in minor differences:
3432
- < ul >
3433
- < li > In values starting with "+n", a space is now allowed between
3434
- the "+" and "n". (This is an accidental consequence of the "+" and
3435
- "n" parsing as separate CSS tokens, and CSS's value grammar
3436
- ignoring whitespace.)
3437
-
3438
- < li > In some cases, "-" characters or digits can be escaped (when
3439
- they appear as part of the unit of a 〈dimension〉 or
3440
- 〈ident〉).
3441
- </ ul >
3442
- </ ol >
3443
-
3444
3358
< h2 id =anb > < span class =secno > 6. </ span > The < a
3445
3359
href ="#anb0 "> < var > An+B</ var > </ a > microsyntax</ h2 >
3446
3360
@@ -3987,7 +3901,142 @@ <h3 id=serializing-anb><span class=secno>8.1. </span> Serializing <a
3987
3901
< var > s</ var > .
3988
3902
</ dl >
3989
3903
3990
- < p > Return < var > s</ var > . <!--
3904
+ < p > Return < var > s</ var > .
3905
+
3906
+ < h2 id =changes > < span class =secno > 9. </ span > Changes from CSS 2.1 and
3907
+ Selectors Level 3</ h2 >
3908
+
3909
+ < p > < em > This section is non-normative.</ em >
3910
+
3911
+ < p class =note > Note that the point of this spec is to match reality;
3912
+ changes from CSS2.1 are nearly always because CSS 2.1 specified
3913
+ something that doesn't match actual browser behavior, or left
3914
+ something unspecified. If some detail doesn't match browsers, please
3915
+ let me know as it's almost certainly unintentional.
3916
+
3917
+ < p > Changes in decoding from a byte stream:
3918
+
3919
+ < ul >
3920
+ < li > Only detect ‘< code class =css > @charset</ code > ’ rules in
3921
+ ASCII-compatible byte patterns.
3922
+
3923
+ < li > Ignore ‘< code class =css > @charset</ code > ’ rules that specify
3924
+ an ASCII-incompatible encoding, as that would cause the rule itself
3925
+ to not decode properly.
3926
+
3927
+ < li > Refer to the the < a
3928
+ href ="http://encoding.spec.whatwg.org/ "> Encoding Standard</ a > rather
3929
+ than the IANA registery for character encodings.
3930
+ </ ul >
3931
+
3932
+ < p > Tokenization changes:
3933
+
3934
+ < ul >
3935
+ < li > Any U+0000 NULL character in the CSS source is replaced with
3936
+ U+FFFD REPLACEMENT CHARACTER.
3937
+
3938
+ < li > Any hexadecimal escape sequence such as ‘< code
3939
+ class =css > \0</ code > ’ that evaluate to zero produce U+FFFD
3940
+ REPLACEMENT CHARACTER rather than U+0000 NULL. <!--
3941
+ This covers a security issue:
3942
+ https://bugzilla.mozilla.org/show_bug.cgi?id=228856
3943
+ -->
3944
+
3945
+ < li > The definition of < a href ="#non-ascii-character "> < i > non-ASCII
3946
+ character</ i > </ a > was changed to be consistent with every definition
3947
+ of ASCII. This affects characters U+0080 to U+009F, which are now < a
3948
+ href ="#name-character "> < i > name characters</ i > </ a > rather than
3949
+ 〈delim〉s, like the rest of < a
3950
+ href ="#non-ascii-character "> < i > non-ASCII characters</ i > </ a > .
3951
+
3952
+ < li > Tokenization does not emit COMMENT or BAD_COMMENT tokens anymore.
3953
+ BAD_COMMENT is now considered the same as normal token (not an
3954
+ error.) < a href ="#serialization "> Serialization</ a > is responsible for
3955
+ inserting comments as necessary between tokens that need to be
3956
+ separated, e.g. two consecutive 〈ident〉s.
3957
+
3958
+ < li > The 〈unicode-range〉 token is now more restrictive. < span
3959
+ class =issue > Should it? I can’t find a case where this change is
3960
+ even testable.</ span > < span class =issue > Align the definition with the
3961
+ Fonts spec.</ span >
3962
+
3963
+ < li > Apply the < a
3964
+ href ="http://www.w3.org/TR/CSS21/syndata.html#unexpected-eof "> EOF
3965
+ error handling rule</ a > in the tokenizer and emit normal 〈string〉
3966
+ and 〈url〉 tokens rather than BAD_STRING or BAD_URI on EOF.
3967
+
3968
+ < li > The 〈prefix-match〉, 〈suffix-match〉, and
3969
+ 〈substring-match〉 tokens have been imported from Selectors 3.
3970
+
3971
+ < li > The BAD_URI token (now 〈bad-url〉) is "self-contained". In
3972
+ other words, once the tokenizer realizes it's in a 〈bad-url〉
3973
+ rather than a 〈url〉, it just seeks forward to look for the
3974
+ closing ), ignoring everything else. This behavior is simpler than
3975
+ treating it like a 〈function〉 and paying attention to opened
3976
+ blocks and such. Only WebKit exhibits this behavior, but it doesn't
3977
+ appear that we've gotten any compat bugs from it.
3978
+
3979
+ < li > The 〈comma〉 has been added.
3980
+
3981
+ < li > The 〈number〉, 〈number〉, and 〈dimension〉 tokens have
3982
+ been changed to include the preceding +/- sign as part of their value
3983
+ (rather than as a separate 〈delim〉 that needs to be manually
3984
+ handled every time the token is mentioned in other specs). The only
3985
+ consequence of this is that comments can no longer be inserted
3986
+ between the sign and the number.
3987
+
3988
+ < li > Scientific notation is supported for
3989
+ numbers/percentages/dimensions to match SVG, per WG resolution.
3990
+
3991
+ < li > 〈column〉 has been added, to keep Selectors parsing in
3992
+ single-token lookahead.
3993
+ </ ul >
3994
+
3995
+ < p > Parsing changes:
3996
+
3997
+ < ul >
3998
+ < li > Any list of declaration now also accepts at-rules, like ‘< code
3999
+ class =css > @page</ code > ’, per WG resolution. This makes a difference
4000
+ in error handling even if no such at-rules are defined yet: an
4001
+ at-rule, valid or not, ends and lets the next declaration being at a
4002
+ {} block without a 〈semicolon〉.
4003
+
4004
+ < li > The handling of some miscellanous "special" tokens (like an
4005
+ unmatched 〈}〉) showing up in various places in the grammar has
4006
+ been specified with some reasonable behavior shown by at least one
4007
+ browser. Previously, stylesheets with those tokens in those places
4008
+ just didn't match the stylesheet grammar at all, so their handling
4009
+ was totally undefined. Specifically:
4010
+ < ul >
4011
+ < li > [] blocks, () blocks and functions can now contain {} blocks,
4012
+ 〈at-keyword〉s or 〈semicolon〉s
4013
+
4014
+ < li > Selectors can now contain semicolons
4015
+
4016
+ < li > Selectors and at-rule preludes can now contain
4017
+ 〈at-keyword〉s
4018
+ </ ul >
4019
+ </ ul >
4020
+
4021
+ < p > < a href ="#anb0 "> < var > An+B</ var > </ a > changes from Selectors Level 3
4022
+ < a href ="#SELECT " rel =biblioentry > [SELECT]<!--{{SELECT}}--> </ a > :
4023
+
4024
+ < ul >
4025
+ < li > The < a href ="#anb0 "> < var > An+B</ var > </ a > microsyntax has now been
4026
+ formally defined in terms of CSS tokens, rather than with a separate
4027
+ tokenizer. This has resulted in minor differences:
4028
+ < ul >
4029
+ < li > In values starting with "+n", a space is now allowed between
4030
+ the "+" and "n". (This is an accidental consequence of the "+" and
4031
+ "n" parsing as separate CSS tokens, and CSS's value grammar
4032
+ ignoring whitespace.)
4033
+
4034
+ < li > In some cases, "-" characters or digits can be escaped (when
4035
+ they appear as part of the unit of a 〈dimension〉 or
4036
+ 〈ident〉).
4037
+ </ ul >
4038
+ </ ul >
4039
+ <!--
3991
4040
3992
4041
TTTTTTTTTTTTTTTTTTTTTTTHHHHHHHHH HHHHHHHHHEEEEEEEEEEEEEEEEEEEEEE
3993
4042
T:::::::::::::::::::::TH:::::::H H:::::::HE::::::::::::::::::::E
@@ -4026,9 +4075,9 @@ <h3 id=serializing-anb><span class=secno>8.1. </span> Serializing <a
4026
4075
EEEEEEEEEEEEEEEEEEEEEENNNNNNNN NNNNNNNDDDDDDDDDDDDD
4027
4076
-->
4028
4077
4029
- < h2 id =conformance > < span class =secno > 9 . </ span > Conformance</ h2 >
4078
+ < h2 id =conformance > < span class =secno > 10 . </ span > Conformance</ h2 >
4030
4079
4031
- < h3 id =conventions > < span class =secno > 9 .1. </ span > Document conventions</ h3 >
4080
+ < h3 id =conventions > < span class =secno > 10 .1. </ span > Document conventions</ h3 >
4032
4081
4033
4082
< p > Conformance requirements are expressed with a combination of
4034
4083
descriptive assertions and RFC 2119 terminology. The key words
@@ -4055,7 +4104,7 @@ <h3 id=conventions><span class=secno>9.1. </span> Document conventions</h3>
4055
4104
4056
4105
< p class =note > Note, this is an informative note.
4057
4106
4058
- < h3 id =conformance-classes > < span class =secno > 9 .2. </ span > Conformance
4107
+ < h3 id =conformance-classes > < span class =secno > 10 .2. </ span > Conformance
4059
4108
classes</ h3 >
4060
4109
4061
4110
< p > Conformance to CSS Syntax Module Level 3 is defined for three
@@ -4157,7 +4206,7 @@ <h2 class=no-num id=index> Index</h2>
4157
4206
title ="section 2. "> < strong > 2.</ strong > </ a >
4158
4207
4159
4208
< li > authoring tool, < a href ="#authoring-tool "
4160
- title ="section 9 .2. "> < strong > 9 .2.</ strong > </ a >
4209
+ title ="section 10 .2. "> < strong > 10 .2.</ strong > </ a >
4161
4210
4162
4211
< li > B, < a href ="#b " title ="section 6. "> < strong > 6.</ strong > </ a >
4163
4212
@@ -4361,7 +4410,7 @@ <h2 class=no-num id=index> Index</h2>
4361
4410
title ="section 5.2. "> < strong > 5.2.</ strong > </ a >
4362
4411
4363
4412
< li > renderer, < a href ="#renderer "
4364
- title ="section 9 .2. "> < strong > 9 .2.</ strong > </ a >
4413
+ title ="section 10 .2. "> < strong > 10 .2.</ strong > </ a >
4365
4414
4366
4415
< li > < var > <rule-list> </ var > , < a href ="#ltrule-list "
4367
4416
title ="section 7.1. "> < strong > 7.1.</ strong > </ a >
@@ -4408,7 +4457,7 @@ <h2 class=no-num id=index> Index</h2>
4408
4457
< li > style sheet
4409
4458
< ul >
4410
4459
< li > as conformance class, < a href ="#style-sheet "
4411
- title ="section 9 .2. "> < strong > 9 .2.</ strong > </ a >
4460
+ title ="section 10 .2. "> < strong > 10 .2.</ strong > </ a >
4412
4461
</ ul >
4413
4462
4414
4463
< li > uppercase letter, < a href ="#uppercase-letter "
0 commit comments