@tkeron/html-parser 0.1.7 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (89) hide show
  1. package/README.md +1 -7
  2. package/bun.lock +5 -0
  3. package/index.ts +4 -0
  4. package/package.json +7 -1
  5. package/src/css-selector.ts +1 -1
  6. package/src/dom-simulator.ts +38 -16
  7. package/src/encoding.ts +39 -0
  8. package/src/index.ts +9 -0
  9. package/src/parser.ts +478 -144
  10. package/src/serializer.ts +450 -0
  11. package/src/tokenizer.ts +59 -43
  12. package/tests/advanced.test.ts +119 -106
  13. package/tests/custom-elements.test.ts +172 -162
  14. package/tests/dom-extended.test.ts +12 -12
  15. package/tests/dom-manipulation.test.ts +9 -10
  16. package/tests/dom.test.ts +32 -27
  17. package/tests/helpers/tokenizer-adapter.test.ts +70 -0
  18. package/tests/helpers/tokenizer-adapter.ts +65 -0
  19. package/tests/helpers/tree-adapter.test.ts +39 -0
  20. package/tests/helpers/tree-adapter.ts +43 -0
  21. package/tests/html5lib-data/tokenizer/namedEntities.test +42422 -0
  22. package/tests/html5lib-data/tokenizer/pendingSpecChanges.test +9 -0
  23. package/tests/html5lib-data/tree-construction/adoption01.dat +354 -0
  24. package/tests/html5lib-data/tree-construction/adoption02.dat +39 -0
  25. package/tests/html5lib-data/tree-construction/domjs-unsafe.dat +0 -0
  26. package/tests/html5lib-data/tree-construction/entities02.dat +309 -0
  27. package/tests/html5lib-data/tree-construction/html5test-com.dat +301 -0
  28. package/tests/html5lib-data/tree-construction/math.dat +104 -0
  29. package/tests/html5lib-data/tree-construction/namespace-sensitivity.dat +22 -0
  30. package/tests/html5lib-data/tree-construction/noscript01.dat +237 -0
  31. package/tests/html5lib-data/tree-construction/ruby.dat +302 -0
  32. package/tests/html5lib-data/tree-construction/scriptdata01.dat +372 -0
  33. package/tests/html5lib-data/tree-construction/svg.dat +104 -0
  34. package/tests/html5lib-data/tree-construction/template.dat +1673 -0
  35. package/tests/html5lib-data/tree-construction/tests10.dat +853 -0
  36. package/tests/html5lib-data/tree-construction/tests11.dat +523 -0
  37. package/tests/html5lib-data/tree-construction/tests20.dat +842 -0
  38. package/tests/html5lib-data/tree-construction/tests21.dat +306 -0
  39. package/tests/html5lib-data/tree-construction/tests23.dat +168 -0
  40. package/tests/html5lib-data/tree-construction/tests24.dat +79 -0
  41. package/tests/html5lib-data/tree-construction/tests5.dat +210 -0
  42. package/tests/html5lib-data/tree-construction/tests6.dat +663 -0
  43. package/tests/html5lib-data/tree-construction/tests_innerHTML_1.dat +844 -0
  44. package/tests/parser.test.ts +172 -193
  45. package/tests/serializer-core.test.ts +16 -0
  46. package/tests/serializer-data/core.test +125 -0
  47. package/tests/serializer-data/injectmeta.test +66 -0
  48. package/tests/serializer-data/optionaltags.test +965 -0
  49. package/tests/serializer-data/options.test +60 -0
  50. package/tests/serializer-data/whitespace.test +51 -0
  51. package/tests/serializer-injectmeta.test.ts +16 -0
  52. package/tests/serializer-optionaltags.test.ts +16 -0
  53. package/tests/serializer-options.test.ts +16 -0
  54. package/tests/serializer-whitespace.test.ts +16 -0
  55. package/tests/tokenizer-namedEntities.test.ts +20 -0
  56. package/tests/tokenizer-pendingSpecChanges.test.ts +20 -0
  57. package/tests/tokenizer.test.ts +3 -6
  58. package/tests/tree-construction-adoption01.test.ts +37 -0
  59. package/tests/tree-construction-adoption02.test.ts +34 -0
  60. package/tests/tree-construction-domjs-unsafe.test.ts +24 -0
  61. package/tests/tree-construction-entities02.test.ts +33 -0
  62. package/tests/tree-construction-html5test-com.test.ts +24 -0
  63. package/tests/tree-construction-math.test.ts +18 -0
  64. package/tests/tree-construction-namespace-sensitivity.test.ts +18 -0
  65. package/tests/tree-construction-noscript01.test.ts +18 -0
  66. package/tests/tree-construction-ruby.test.ts +21 -0
  67. package/tests/tree-construction-scriptdata01.test.ts +21 -0
  68. package/tests/tree-construction-svg.test.ts +21 -0
  69. package/tests/tree-construction-template.test.ts +21 -0
  70. package/tests/tree-construction-tests10.test.ts +21 -0
  71. package/tests/tree-construction-tests11.test.ts +21 -0
  72. package/tests/tree-construction-tests20.test.ts +18 -0
  73. package/tests/tree-construction-tests21.test.ts +18 -0
  74. package/tests/tree-construction-tests23.test.ts +18 -0
  75. package/tests/tree-construction-tests24.test.ts +18 -0
  76. package/tests/tree-construction-tests5.test.ts +21 -0
  77. package/tests/tree-construction-tests6.test.ts +21 -0
  78. package/tests/tree-construction-tests_innerHTML_1.test.ts +21 -0
  79. package/tests/official/README.md +0 -87
  80. package/tests/official/acid/acid-tests.test.ts +0 -309
  81. package/tests/official/final-output/final-output.test.ts +0 -361
  82. package/tests/official/html5lib/tokenizer-utils.ts +0 -192
  83. package/tests/official/html5lib/tokenizer.test.ts +0 -171
  84. package/tests/official/html5lib/tree-construction-utils.ts +0 -194
  85. package/tests/official/html5lib/tree-construction.test.ts +0 -250
  86. package/tests/official/validator/validator-tests.test.ts +0 -237
  87. package/tests/official/validator-nu/validator-nu.test.ts +0 -335
  88. package/tests/official/whatwg/whatwg-tests.test.ts +0 -205
  89. package/tests/official/wpt/wpt-tests.test.ts +0 -409
@@ -0,0 +1,301 @@
1
+ #data
2
+ <div<div>
3
+ #errors
4
+ (1,9): expected-doctype-but-got-start-tag
5
+ (1,9): expected-closing-tag-but-got-eof
6
+ #document
7
+ | <html>
8
+ | <head>
9
+ | <body>
10
+ | <div<div>
11
+
12
+ #data
13
+ <div foo<bar=''>
14
+ #errors
15
+ (1,9): invalid-character-in-attribute-name
16
+ (1,16): expected-doctype-but-got-start-tag
17
+ (1,16): expected-closing-tag-but-got-eof
18
+ #new-errors
19
+ (1:9) unexpected-character-in-attribute-name
20
+ #document
21
+ | <html>
22
+ | <head>
23
+ | <body>
24
+ | <div>
25
+ | foo<bar=""
26
+
27
+ #data
28
+ <div foo=`bar`>
29
+ #errors
30
+ (1,10): equals-in-unquoted-attribute-value
31
+ (1,14): unexpected-character-in-unquoted-attribute-value
32
+ (1,15): expected-doctype-but-got-start-tag
33
+ (1,15): expected-closing-tag-but-got-eof
34
+ #new-errors
35
+ (1:10) unexpected-character-in-unquoted-attribute-value
36
+ (1:14) unexpected-character-in-unquoted-attribute-value
37
+ #document
38
+ | <html>
39
+ | <head>
40
+ | <body>
41
+ | <div>
42
+ | foo="`bar`"
43
+
44
+ #data
45
+ <div \"foo=''>
46
+ #errors
47
+ (1,7): invalid-character-in-attribute-name
48
+ (1,14): expected-doctype-but-got-start-tag
49
+ (1,14): expected-closing-tag-but-got-eof
50
+ #new-errors
51
+ (1:7) unexpected-character-in-attribute-name
52
+ #document
53
+ | <html>
54
+ | <head>
55
+ | <body>
56
+ | <div>
57
+ | \"foo=""
58
+
59
+ #data
60
+ <a href='\nbar'></a>
61
+ #errors
62
+ (1,16): expected-doctype-but-got-start-tag
63
+ #document
64
+ | <html>
65
+ | <head>
66
+ | <body>
67
+ | <a>
68
+ | href="\nbar"
69
+
70
+ #data
71
+ <!DOCTYPE html>
72
+ #errors
73
+ #document
74
+ | <!DOCTYPE html>
75
+ | <html>
76
+ | <head>
77
+ | <body>
78
+
79
+ #data
80
+ &lang;&rang;
81
+ #errors
82
+ (1,6): expected-doctype-but-got-chars
83
+ #document
84
+ | <html>
85
+ | <head>
86
+ | <body>
87
+ | "⟨⟩"
88
+
89
+ #data
90
+ &apos;
91
+ #errors
92
+ (1,6): expected-doctype-but-got-chars
93
+ #document
94
+ | <html>
95
+ | <head>
96
+ | <body>
97
+ | "'"
98
+
99
+ #data
100
+ &ImaginaryI;
101
+ #errors
102
+ (1,12): expected-doctype-but-got-chars
103
+ #document
104
+ | <html>
105
+ | <head>
106
+ | <body>
107
+ | "ⅈ"
108
+
109
+ #data
110
+ &Kopf;
111
+ #errors
112
+ (1,6): expected-doctype-but-got-chars
113
+ #document
114
+ | <html>
115
+ | <head>
116
+ | <body>
117
+ | "𝕂"
118
+
119
+ #data
120
+ &notinva;
121
+ #errors
122
+ (1,9): expected-doctype-but-got-chars
123
+ #document
124
+ | <html>
125
+ | <head>
126
+ | <body>
127
+ | "∉"
128
+
129
+ #data
130
+ <?import namespace="foo" implementation="#bar">
131
+ #errors
132
+ (1,1): expected-tag-name-but-got-question-mark
133
+ (1,47): expected-doctype-but-got-eof
134
+ #new-errors
135
+ (1:2) unexpected-question-mark-instead-of-tag-name
136
+ #document
137
+ | <!-- ?import namespace="foo" implementation="#bar" -->
138
+ | <html>
139
+ | <head>
140
+ | <body>
141
+
142
+ #data
143
+ <!--foo--bar-->
144
+ #errors
145
+ (1,15): expected-doctype-but-got-eof
146
+ #document
147
+ | <!-- foo--bar -->
148
+ | <html>
149
+ | <head>
150
+ | <body>
151
+
152
+ #data
153
+ <![CDATA[x]]>
154
+ #errors
155
+ (1,2): expected-dashes-or-doctype
156
+ (1,13): expected-doctype-but-got-eof
157
+ #new-errors
158
+ (1:9) cdata-in-html-content
159
+ #document
160
+ | <!-- [CDATA[x]] -->
161
+ | <html>
162
+ | <head>
163
+ | <body>
164
+
165
+ #data
166
+ <textarea><!--</textarea>--></textarea>
167
+ #errors
168
+ (1,10): expected-doctype-but-got-start-tag
169
+ (1,39): unexpected-end-tag
170
+ #document
171
+ | <html>
172
+ | <head>
173
+ | <body>
174
+ | <textarea>
175
+ | "<!--"
176
+ | "-->"
177
+
178
+ #data
179
+ <textarea><!--</textarea>-->
180
+ #errors
181
+ (1,10): expected-doctype-but-got-start-tag
182
+ #document
183
+ | <html>
184
+ | <head>
185
+ | <body>
186
+ | <textarea>
187
+ | "<!--"
188
+ | "-->"
189
+
190
+ #data
191
+ <style><!--</style>--></style>
192
+ #errors
193
+ (1,7): expected-doctype-but-got-start-tag
194
+ (1,30): unexpected-end-tag
195
+ #document
196
+ | <html>
197
+ | <head>
198
+ | <style>
199
+ | "<!--"
200
+ | <body>
201
+ | "-->"
202
+
203
+ #data
204
+ <style><!--</style>-->
205
+ #errors
206
+ (1,7): expected-doctype-but-got-start-tag
207
+ #document
208
+ | <html>
209
+ | <head>
210
+ | <style>
211
+ | "<!--"
212
+ | <body>
213
+ | "-->"
214
+
215
+ #data
216
+ <ul><li>A </li> <li>B</li></ul>
217
+ #errors
218
+ (1,4): expected-doctype-but-got-start-tag
219
+ #document
220
+ | <html>
221
+ | <head>
222
+ | <body>
223
+ | <ul>
224
+ | <li>
225
+ | "A "
226
+ | " "
227
+ | <li>
228
+ | "B"
229
+
230
+ #data
231
+ <table><form><input type=hidden><input></form><div></div></table>
232
+ #errors
233
+ (1,7): expected-doctype-but-got-start-tag
234
+ (1,13): unexpected-form-in-table
235
+ (1,32): unexpected-hidden-input-in-table
236
+ (1,39): unexpected-start-tag-implies-table-voodoo
237
+ (1,46): unexpected-end-tag-implies-table-voodoo
238
+ (1,46): unexpected-end-tag
239
+ (1,51): unexpected-start-tag-implies-table-voodoo
240
+ (1,57): unexpected-end-tag-implies-table-voodoo
241
+ #document
242
+ | <html>
243
+ | <head>
244
+ | <body>
245
+ | <input>
246
+ | <div>
247
+ | <table>
248
+ | <form>
249
+ | <input>
250
+ | type="hidden"
251
+
252
+ #data
253
+ <i>A<b>B<p></i>C</b>D
254
+ #errors
255
+ (1,3): expected-doctype-but-got-start-tag
256
+ (1,15): adoption-agency-1.3
257
+ (1,20): adoption-agency-1.3
258
+ #document
259
+ | <html>
260
+ | <head>
261
+ | <body>
262
+ | <i>
263
+ | "A"
264
+ | <b>
265
+ | "B"
266
+ | <b>
267
+ | <p>
268
+ | <b>
269
+ | <i>
270
+ | "C"
271
+ | "D"
272
+
273
+ #data
274
+ <div></div>
275
+ #errors
276
+ (1,5): expected-doctype-but-got-start-tag
277
+ #document
278
+ | <html>
279
+ | <head>
280
+ | <body>
281
+ | <div>
282
+
283
+ #data
284
+ <svg></svg>
285
+ #errors
286
+ (1,5): expected-doctype-but-got-start-tag
287
+ #document
288
+ | <html>
289
+ | <head>
290
+ | <body>
291
+ | <svg svg>
292
+
293
+ #data
294
+ <math></math>
295
+ #errors
296
+ (1,6): expected-doctype-but-got-start-tag
297
+ #document
298
+ | <html>
299
+ | <head>
300
+ | <body>
301
+ | <math math>
@@ -0,0 +1,104 @@
1
+ #data
2
+ <math><tr><td><mo><tr>
3
+ #errors
4
+ (1,22): unexpected-start-tag
5
+ (1,23): expected-closing-tag-but-got-eof
6
+ #document-fragment
7
+ td
8
+ #document
9
+ | <math math>
10
+ | <math tr>
11
+ | <math td>
12
+ | <math mo>
13
+
14
+ #data
15
+ <math><tr><td><mo><tr>
16
+ #errors
17
+ (1,6): foster-parenting-start-tag
18
+ (1,22): expected-tr-in-table-scope
19
+ (1,23): expected-closing-tag-but-got-eof
20
+ #document-fragment
21
+ tr
22
+ #document
23
+ | <math math>
24
+ | <math tr>
25
+ | <math td>
26
+ | <math mo>
27
+
28
+ #data
29
+ <math><thead><mo><tbody>
30
+ #errors
31
+ (1,6): foster-parenting-start-tag
32
+ (1,24): expected-table-part-in-table-scope
33
+ (1,25): expected-closing-tag-but-got-eof
34
+ #document-fragment
35
+ thead
36
+ #document
37
+ | <math math>
38
+ | <math thead>
39
+ | <math mo>
40
+
41
+ #data
42
+ <math><tfoot><mo><tbody>
43
+ #errors
44
+ (1,6): foster-parenting-start-tag
45
+ (1,24): expected-table-part-in-table-scope
46
+ (1,25): expected-closing-tag-but-got-eof
47
+ #document-fragment
48
+ tfoot
49
+ #document
50
+ | <math math>
51
+ | <math tfoot>
52
+ | <math mo>
53
+
54
+ #data
55
+ <math><tbody><mo><tfoot>
56
+ #errors
57
+ (1,6): foster-parenting-start-tag
58
+ (1,24): expected-table-part-in-table-scope
59
+ (1,25): expected-closing-tag-but-got-eof
60
+ #document-fragment
61
+ tbody
62
+ #document
63
+ | <math math>
64
+ | <math tbody>
65
+ | <math mo>
66
+
67
+ #data
68
+ <math><tbody><mo></table>
69
+ #errors
70
+ (1,6): foster-parenting-start-tag
71
+ (1,25): unexpected-end-tag-in-math
72
+ (1,26): expected-closing-tag-but-got-eof
73
+ #document-fragment
74
+ tbody
75
+ #document
76
+ | <math math>
77
+ | <math tbody>
78
+ | <math mo>
79
+
80
+ #data
81
+ <math><thead><mo></table>
82
+ #errors
83
+ (1,6): foster-parenting-start-tag
84
+ (1,25): unexpected-end-tag-in-math
85
+ (1,26): expected-closing-tag-but-got-eof
86
+ #document-fragment
87
+ tbody
88
+ #document
89
+ | <math math>
90
+ | <math thead>
91
+ | <math mo>
92
+
93
+ #data
94
+ <math><tfoot><mo></table>
95
+ #errors
96
+ (1,6): foster-parenting-start-tag
97
+ (1,25): unexpected-end-tag-in-math
98
+ (1,26): expected-closing-tag-but-got-eof
99
+ #document-fragment
100
+ tbody
101
+ #document
102
+ | <math math>
103
+ | <math tfoot>
104
+ | <math mo>
@@ -0,0 +1,22 @@
1
+ #data
2
+ <body><table><tr><td><svg><td><foreignObject><span></td>Foo
3
+ #errors
4
+ (1,6): expected-doctype-but-got-start-tag
5
+ (1,56): unexpected-end-tag
6
+ (1,60): foster-parenting-character
7
+ (1,60): foster-parenting-character
8
+ (1,60): foster-parenting-character
9
+ (1,60): expected-closing-tag-but-got-eof
10
+ #document
11
+ | <html>
12
+ | <head>
13
+ | <body>
14
+ | "Foo"
15
+ | <table>
16
+ | <tbody>
17
+ | <tr>
18
+ | <td>
19
+ | <svg svg>
20
+ | <svg td>
21
+ | <svg foreignObject>
22
+ | <span>
@@ -0,0 +1,237 @@
1
+ #data
2
+ <head><noscript><!doctype html><!--foo--></noscript>
3
+ #errors
4
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
5
+ Line: 1 Col: 31 Unexpected DOCTYPE. Ignored.
6
+ #script-off
7
+ #document
8
+ | <html>
9
+ | <head>
10
+ | <noscript>
11
+ | <!-- foo -->
12
+ | <body>
13
+
14
+ #data
15
+ <head><noscript><html class="foo"><!--foo--></noscript>
16
+ #errors
17
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
18
+ Line: 1 Col: 34 html needs to be the first start tag.
19
+ #script-off
20
+ #document
21
+ | <html>
22
+ | class="foo"
23
+ | <head>
24
+ | <noscript>
25
+ | <!-- foo -->
26
+ | <body>
27
+
28
+ #data
29
+ <head><noscript></noscript>
30
+ #errors
31
+ (1,6): expected-doctype-but-got-tag
32
+ #script-off
33
+ #document
34
+ | <html>
35
+ | <head>
36
+ | <noscript>
37
+ | <body>
38
+
39
+ #data
40
+ <head><noscript> </noscript>
41
+ #errors
42
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
43
+ #script-off
44
+ #document
45
+ | <html>
46
+ | <head>
47
+ | <noscript>
48
+ | " "
49
+ | <body>
50
+
51
+ #data
52
+ <head><noscript><!--foo--></noscript>
53
+ #errors
54
+ (1,6): expected-doctype-but-got-tag
55
+ #script-off
56
+ #document
57
+ | <html>
58
+ | <head>
59
+ | <noscript>
60
+ | <!-- foo -->
61
+ | <body>
62
+
63
+ #data
64
+ <head><noscript><basefont><!--foo--></noscript>
65
+ #errors
66
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
67
+ #script-off
68
+ #document
69
+ | <html>
70
+ | <head>
71
+ | <noscript>
72
+ | <basefont>
73
+ | <!-- foo -->
74
+ | <body>
75
+
76
+ #data
77
+ <head><noscript><bgsound><!--foo--></noscript>
78
+ #errors
79
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
80
+ #script-off
81
+ #document
82
+ | <html>
83
+ | <head>
84
+ | <noscript>
85
+ | <bgsound>
86
+ | <!-- foo -->
87
+ | <body>
88
+
89
+ #data
90
+ <head><noscript><link><!--foo--></noscript>
91
+ #errors
92
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
93
+ #script-off
94
+ #document
95
+ | <html>
96
+ | <head>
97
+ | <noscript>
98
+ | <link>
99
+ | <!-- foo -->
100
+ | <body>
101
+
102
+ #data
103
+ <head><noscript><meta><!--foo--></noscript>
104
+ #errors
105
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
106
+ #script-off
107
+ #document
108
+ | <html>
109
+ | <head>
110
+ | <noscript>
111
+ | <meta>
112
+ | <!-- foo -->
113
+ | <body>
114
+
115
+ #data
116
+ <head><noscript><noframes>XXX</noscript></noframes></noscript>
117
+ #errors
118
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
119
+ #script-off
120
+ #document
121
+ | <html>
122
+ | <head>
123
+ | <noscript>
124
+ | <noframes>
125
+ | "XXX</noscript>"
126
+ | <body>
127
+
128
+ #data
129
+ <head><noscript><style>XXX</style></noscript>
130
+ #errors
131
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
132
+ #script-off
133
+ #document
134
+ | <html>
135
+ | <head>
136
+ | <noscript>
137
+ | <style>
138
+ | "XXX"
139
+ | <body>
140
+
141
+ #data
142
+ <head><noscript></br><!--foo--></noscript>
143
+ #errors
144
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
145
+ Line: 1 Col: 21 Element br not allowed in a inhead-noscript context
146
+ Line: 1 Col: 21 Unexpected end tag (br). Treated as br element.
147
+ Line: 1 Col: 42 Unexpected end tag (noscript). Ignored.
148
+ #script-off
149
+ #document
150
+ | <html>
151
+ | <head>
152
+ | <noscript>
153
+ | <body>
154
+ | <br>
155
+ | <!-- foo -->
156
+
157
+ #data
158
+ <head><noscript><head class="foo"><!--foo--></noscript>
159
+ #errors
160
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
161
+ Line: 1 Col: 34 Unexpected start tag (head).
162
+ #script-off
163
+ #document
164
+ | <html>
165
+ | <head>
166
+ | <noscript>
167
+ | <!-- foo -->
168
+ | <body>
169
+
170
+ #data
171
+ <head><noscript><noscript class="foo"><!--foo--></noscript>
172
+ #errors
173
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
174
+ Line: 1 Col: 34 Unexpected start tag (noscript).
175
+ #script-off
176
+ #document
177
+ | <html>
178
+ | <head>
179
+ | <noscript>
180
+ | <!-- foo -->
181
+ | <body>
182
+
183
+ #data
184
+ <head><noscript></p><!--foo--></noscript>
185
+ #errors
186
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
187
+ Line: 1 Col: 20 Unexpected end tag (p). Ignored.
188
+ #script-off
189
+ #document
190
+ | <html>
191
+ | <head>
192
+ | <noscript>
193
+ | <!-- foo -->
194
+ | <body>
195
+
196
+ #data
197
+ <head><noscript><p><!--foo--></noscript>
198
+ #errors
199
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
200
+ Line: 1 Col: 19 Element p not allowed in a inhead-noscript context
201
+ Line: 1 Col: 40 Unexpected end tag (noscript). Ignored.
202
+ #script-off
203
+ #document
204
+ | <html>
205
+ | <head>
206
+ | <noscript>
207
+ | <body>
208
+ | <p>
209
+ | <!-- foo -->
210
+
211
+ #data
212
+ <head><noscript>XXX<!--foo--></noscript></head>
213
+ #errors
214
+ Line: 1 Col: 6 Unexpected start tag (head). Expected DOCTYPE.
215
+ Line: 1 Col: 19 Unexpected non-space character. Expected inhead-noscript content
216
+ Line: 1 Col: 30 Unexpected end tag (noscript). Ignored.
217
+ Line: 1 Col: 37 Unexpected end tag (head). Ignored.
218
+ #script-off
219
+ #document
220
+ | <html>
221
+ | <head>
222
+ | <noscript>
223
+ | <body>
224
+ | "XXX"
225
+ | <!-- foo -->
226
+
227
+ #data
228
+ <head><noscript>
229
+ #errors
230
+ (1,6): expected-doctype-but-got-tag
231
+ (1,6): eof-in-head-noscript
232
+ #script-off
233
+ #document
234
+ | <html>
235
+ | <head>
236
+ | <noscript>
237
+ | <body>