| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <title>CSS Test: Parser recovery after invalid '['</title> |
| <link rel="author" title="Boris Zbarsky" href="mailto:bzbarsky@mit.edu"/> |
| <link rel="reviewer" title="Ms2ger" href="mailto:Ms2ger@gmail.com"/> |
| <link rel="help" href="http://www.w3.org/TR/CSS21/syndata.html#parsing-errors"/> |
| <link rel="help" href="https://drafts.csswg.org/css-syntax-3/#css-stylesheets"/> |
| <link rel="match" href="../reference/ref-this-text-should-be-green.xht"/> |
| <meta name="flags" content="invalid" /> |
| <meta name="assert" content="When an invalid '[' is encountered where a |
| selector is expected, the CSS parser skips to |
| the matching ']' and then ignores the following |
| ruleset."/> |
| <style type="text/css"><![CDATA[ |
| p { color: red; } |
| [ |
| p { color: red !important; } |
| p { color: red !important; } |
| ] p { color: red !important; } |
| p { color: green; } |
| ]]></style> |
| </head> |
| <body> |
| <p>This text should be green.</p> |
| </body> |
| </html> |
| <!-- |
| <https://drafts.csswg.org/css-syntax/#tokenization>: |
| line 1 |
| <whitespace-token> |
| <ident-token> p |
| <whitespace-token> |
| <{-token> |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> red |
| <semicolon-token> |
| <whitespace-token> |
| <}-token> |
| line 2 |
| <whitespace-token> |
| <[-token> |
| line 3 |
| <whitespace-token> |
| <ident-token> p |
| <whitespace-token> |
| <{-token> |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> red |
| <whitespace-token> |
| <delim-token> ! |
| <ident-token> important |
| <semicolon-token> |
| <whitespace-token> |
| <}-token> |
| line 4 |
| <whitespace-token> |
| <ident-token> p |
| <whitespace-token> |
| <{-token> |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> red |
| <whitespace-token> |
| <delim-token> ! |
| <ident-token> important |
| <semicolon-token> |
| <whitespace-token> |
| <}-token> |
| line 5 |
| <whitespace-token> |
| <]-token> |
| <ident-token> p |
| <whitespace-token> |
| <{-token> |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> red |
| <whitespace-token> |
| <delim-token> ! |
| <ident-token> important |
| <semicolon-token> |
| <whitespace-token> |
| <}-token> |
| line 6 |
| <whitespace-token> |
| <ident-token> p |
| <whitespace-token> |
| <{-token> |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> green |
| <semicolon-token> |
| <whitespace-token> |
| <}-token> |
| line 7 |
| <whitespace-token> |
| |
| <https://drafts.csswg.org/css-syntax/#consume-a-list-of-rules>: |
| [ |
| qualified rule { |
| prelude: [ |
| <ident-token> p |
| <whitespace-token> |
| ] |
| block: |
| simple block { |
| associated token: <{-token> |
| value: [ |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> red |
| <semicolon-token> |
| <whitespace-token> |
| ] |
| } |
| } |
| qualified rule { |
| prelude: [ |
| simple block { |
| associated token: <[-token> |
| value: [ |
| <whitespace-token> |
| <ident-token> p |
| <whitespace-token> |
| simple block { |
| associated token: <{-token> |
| value: [ |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> red |
| <whitespace-token> |
| <delim-token> ! |
| <ident-token> important |
| <semicolon-token> |
| <whitespace-token> |
| ] |
| } |
| <whitespace-token> |
| <ident-token> p |
| <whitespace-token> |
| simple block { |
| associated token: <{-token> |
| value: [ |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> red |
| <whitespace-token> |
| <delim-token> ! |
| <ident-token> important |
| <semicolon-token> |
| <whitespace-token> |
| ] |
| } |
| <whitespace-token> |
| ] |
| } |
| <ident-token> p |
| <whitespace-token> |
| ] |
| block: |
| simple block { |
| associated token: <{-token> |
| value: [ |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> red |
| <whitespace-token> |
| <delim-token> ! |
| <ident-token> important |
| <semicolon-token> |
| <whitespace-token> |
| ] |
| } |
| } |
| qualified rule { |
| prelude: [ |
| <ident-token> p |
| <whitespace-token> |
| ] |
| block: |
| simple block { |
| associated token: <{-token> |
| value: [ |
| <whitespace-token> |
| <ident-token> color |
| <colon-token> |
| <whitespace-token> |
| <ident-token> green |
| <semicolon-token> |
| <whitespace-token> |
| ] |
| } |
| } |
| ] |
| --> |