216 lines
5.1 KiB
HTML
216 lines
5.1 KiB
HTML
<!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>
|
|
]
|
|
}
|
|
}
|
|
]
|
|
-->
|