@tkeron/html-parser 0.1.7 → 1.1.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 (90) 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 +41 -17
  7. package/src/encoding.ts +39 -0
  8. package/src/index.ts +9 -0
  9. package/src/parser.ts +509 -143
  10. package/src/serializer.ts +450 -0
  11. package/src/tokenizer.ts +190 -118
  12. package/tests/advanced.test.ts +121 -108
  13. package/tests/custom-elements-head.test.ts +105 -0
  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 +60 -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 +173 -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 +25 -32
  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 +32 -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/custom-elements.test.ts +0 -745
  80. package/tests/official/README.md +0 -87
  81. package/tests/official/acid/acid-tests.test.ts +0 -309
  82. package/tests/official/final-output/final-output.test.ts +0 -361
  83. package/tests/official/html5lib/tokenizer-utils.ts +0 -192
  84. package/tests/official/html5lib/tokenizer.test.ts +0 -171
  85. package/tests/official/html5lib/tree-construction-utils.ts +0 -194
  86. package/tests/official/html5lib/tree-construction.test.ts +0 -250
  87. package/tests/official/validator/validator-tests.test.ts +0 -237
  88. package/tests/official/validator-nu/validator-nu.test.ts +0 -335
  89. package/tests/official/whatwg/whatwg-tests.test.ts +0 -205
  90. package/tests/official/wpt/wpt-tests.test.ts +0 -409
@@ -0,0 +1,9 @@
1
+ {"tests": [
2
+
3
+ {"description":"<!---- >",
4
+ "input":"<!---- >",
5
+ "output":[["Comment","-- >"]],
6
+ "errors":[
7
+ { "code": "eof-in-comment", "line": 1, "col": 9 }
8
+ ]}
9
+ ]}
@@ -0,0 +1,354 @@
1
+ #data
2
+ <a><p></a></p>
3
+ #errors
4
+ (1,3): expected-doctype-but-got-start-tag
5
+ (1,10): adoption-agency-1.3
6
+ #document
7
+ | <html>
8
+ | <head>
9
+ | <body>
10
+ | <a>
11
+ | <p>
12
+ | <a>
13
+
14
+ #data
15
+ <a>1<p>2</a>3</p>
16
+ #errors
17
+ (1,3): expected-doctype-but-got-start-tag
18
+ (1,12): adoption-agency-1.3
19
+ #document
20
+ | <html>
21
+ | <head>
22
+ | <body>
23
+ | <a>
24
+ | "1"
25
+ | <p>
26
+ | <a>
27
+ | "2"
28
+ | "3"
29
+
30
+ #data
31
+ <a>1<button>2</a>3</button>
32
+ #errors
33
+ (1,3): expected-doctype-but-got-start-tag
34
+ (1,17): adoption-agency-1.3
35
+ #document
36
+ | <html>
37
+ | <head>
38
+ | <body>
39
+ | <a>
40
+ | "1"
41
+ | <button>
42
+ | <a>
43
+ | "2"
44
+ | "3"
45
+
46
+ #data
47
+ <a>1<b>2</a>3</b>
48
+ #errors
49
+ (1,3): expected-doctype-but-got-start-tag
50
+ (1,12): adoption-agency-1.3
51
+ #document
52
+ | <html>
53
+ | <head>
54
+ | <body>
55
+ | <a>
56
+ | "1"
57
+ | <b>
58
+ | "2"
59
+ | <b>
60
+ | "3"
61
+
62
+ #data
63
+ <a>1<div>2<div>3</a>4</div>5</div>
64
+ #errors
65
+ (1,3): expected-doctype-but-got-start-tag
66
+ (1,20): adoption-agency-1.3
67
+ (1,20): adoption-agency-1.3
68
+ #document
69
+ | <html>
70
+ | <head>
71
+ | <body>
72
+ | <a>
73
+ | "1"
74
+ | <div>
75
+ | <a>
76
+ | "2"
77
+ | <div>
78
+ | <a>
79
+ | "3"
80
+ | "4"
81
+ | "5"
82
+
83
+ #data
84
+ <table><a>1<p>2</a>3</p>
85
+ #errors
86
+ (1,7): expected-doctype-but-got-start-tag
87
+ (1,10): unexpected-start-tag-implies-table-voodoo
88
+ (1,11): unexpected-character-implies-table-voodoo
89
+ (1,14): unexpected-start-tag-implies-table-voodoo
90
+ (1,15): unexpected-character-implies-table-voodoo
91
+ (1,19): unexpected-end-tag-implies-table-voodoo
92
+ (1,19): adoption-agency-1.3
93
+ (1,20): unexpected-character-implies-table-voodoo
94
+ (1,24): unexpected-end-tag-implies-table-voodoo
95
+ (1,24): eof-in-table
96
+ #document
97
+ | <html>
98
+ | <head>
99
+ | <body>
100
+ | <a>
101
+ | "1"
102
+ | <p>
103
+ | <a>
104
+ | "2"
105
+ | "3"
106
+ | <table>
107
+
108
+ #data
109
+ <b><b><a><p></a>
110
+ #errors
111
+ (1,3): expected-doctype-but-got-start-tag
112
+ (1,16): adoption-agency-1.3
113
+ (1,16): expected-closing-tag-but-got-eof
114
+ #document
115
+ | <html>
116
+ | <head>
117
+ | <body>
118
+ | <b>
119
+ | <b>
120
+ | <a>
121
+ | <p>
122
+ | <a>
123
+
124
+ #data
125
+ <b><a><b><p></a>
126
+ #errors
127
+ (1,3): expected-doctype-but-got-start-tag
128
+ (1,16): adoption-agency-1.3
129
+ (1,16): expected-closing-tag-but-got-eof
130
+ #document
131
+ | <html>
132
+ | <head>
133
+ | <body>
134
+ | <b>
135
+ | <a>
136
+ | <b>
137
+ | <b>
138
+ | <p>
139
+ | <a>
140
+
141
+ #data
142
+ <a><b><b><p></a>
143
+ #errors
144
+ (1,3): expected-doctype-but-got-start-tag
145
+ (1,16): adoption-agency-1.3
146
+ (1,16): expected-closing-tag-but-got-eof
147
+ #document
148
+ | <html>
149
+ | <head>
150
+ | <body>
151
+ | <a>
152
+ | <b>
153
+ | <b>
154
+ | <b>
155
+ | <b>
156
+ | <p>
157
+ | <a>
158
+
159
+ #data
160
+ <p>1<s id="A">2<b id="B">3</p>4</s>5</b>
161
+ #errors
162
+ (1,3): expected-doctype-but-got-start-tag
163
+ (1,30): unexpected-end-tag
164
+ (1,35): adoption-agency-1.3
165
+ #document
166
+ | <html>
167
+ | <head>
168
+ | <body>
169
+ | <p>
170
+ | "1"
171
+ | <s>
172
+ | id="A"
173
+ | "2"
174
+ | <b>
175
+ | id="B"
176
+ | "3"
177
+ | <s>
178
+ | id="A"
179
+ | <b>
180
+ | id="B"
181
+ | "4"
182
+ | <b>
183
+ | id="B"
184
+ | "5"
185
+
186
+ #data
187
+ <table><a>1<td>2</td>3</table>
188
+ #errors
189
+ (1,7): expected-doctype-but-got-start-tag
190
+ (1,10): unexpected-start-tag-implies-table-voodoo
191
+ (1,11): unexpected-character-implies-table-voodoo
192
+ (1,15): unexpected-cell-in-table-body
193
+ (1,30): unexpected-implied-end-tag-in-table-view
194
+ #document
195
+ | <html>
196
+ | <head>
197
+ | <body>
198
+ | <a>
199
+ | "1"
200
+ | <a>
201
+ | "3"
202
+ | <table>
203
+ | <tbody>
204
+ | <tr>
205
+ | <td>
206
+ | "2"
207
+
208
+ #data
209
+ <table>A<td>B</td>C</table>
210
+ #errors
211
+ (1,7): expected-doctype-but-got-start-tag
212
+ (1,8): unexpected-character-implies-table-voodoo
213
+ (1,12): unexpected-cell-in-table-body
214
+ (1,22): unexpected-character-implies-table-voodoo
215
+ #document
216
+ | <html>
217
+ | <head>
218
+ | <body>
219
+ | "AC"
220
+ | <table>
221
+ | <tbody>
222
+ | <tr>
223
+ | <td>
224
+ | "B"
225
+
226
+ #data
227
+ <a><svg><tr><input></a>
228
+ #errors
229
+ (1,3): expected-doctype-but-got-start-tag
230
+ (1,23): unexpected-end-tag
231
+ (1,23): adoption-agency-1.3
232
+ #document
233
+ | <html>
234
+ | <head>
235
+ | <body>
236
+ | <a>
237
+ | <svg svg>
238
+ | <svg tr>
239
+ | <svg input>
240
+
241
+ #data
242
+ <div><a><b><div><div><div><div><div><div><div><div><div><div></a>
243
+ #errors
244
+ (1,5): expected-doctype-but-got-start-tag
245
+ (1,65): adoption-agency-1.3
246
+ (1,65): adoption-agency-1.3
247
+ (1,65): adoption-agency-1.3
248
+ (1,65): adoption-agency-1.3
249
+ (1,65): adoption-agency-1.3
250
+ (1,65): adoption-agency-1.3
251
+ (1,65): adoption-agency-1.3
252
+ (1,65): adoption-agency-1.3
253
+ (1,65): expected-closing-tag-but-got-eof
254
+ #document
255
+ | <html>
256
+ | <head>
257
+ | <body>
258
+ | <div>
259
+ | <a>
260
+ | <b>
261
+ | <b>
262
+ | <div>
263
+ | <a>
264
+ | <div>
265
+ | <a>
266
+ | <div>
267
+ | <a>
268
+ | <div>
269
+ | <a>
270
+ | <div>
271
+ | <a>
272
+ | <div>
273
+ | <a>
274
+ | <div>
275
+ | <a>
276
+ | <div>
277
+ | <a>
278
+ | <div>
279
+ | <div>
280
+
281
+ #data
282
+ <div><a><b><u><i><code><div></a>
283
+ #errors
284
+ (1,5): expected-doctype-but-got-start-tag
285
+ (1,32): adoption-agency-1.3
286
+ (1,32): expected-closing-tag-but-got-eof
287
+ #document
288
+ | <html>
289
+ | <head>
290
+ | <body>
291
+ | <div>
292
+ | <a>
293
+ | <b>
294
+ | <u>
295
+ | <i>
296
+ | <code>
297
+ | <u>
298
+ | <i>
299
+ | <code>
300
+ | <div>
301
+ | <a>
302
+
303
+ #data
304
+ <b><b><b><b>x</b></b></b></b>y
305
+ #errors
306
+ (1,3): expected-doctype-but-got-start-tag
307
+ #document
308
+ | <html>
309
+ | <head>
310
+ | <body>
311
+ | <b>
312
+ | <b>
313
+ | <b>
314
+ | <b>
315
+ | "x"
316
+ | "y"
317
+
318
+ #data
319
+ <p><b><b><b><b><p>x
320
+ #errors
321
+ (1,3): expected-doctype-but-got-start-tag
322
+ (1,18): unexpected-end-tag
323
+ (1,19): expected-closing-tag-but-got-eof
324
+ #document
325
+ | <html>
326
+ | <head>
327
+ | <body>
328
+ | <p>
329
+ | <b>
330
+ | <b>
331
+ | <b>
332
+ | <b>
333
+ | <p>
334
+ | <b>
335
+ | <b>
336
+ | <b>
337
+ | "x"
338
+
339
+ #data
340
+ <b><em><foo><foob><fooc><aside></b></em>
341
+ #errors
342
+ (1,35): adoption-agency-1.3
343
+ (1,40): adoption-agency-1.3
344
+ (1,40): expected-closing-tag-but-got-eof
345
+ #document-fragment
346
+ div
347
+ #document
348
+ | <b>
349
+ | <em>
350
+ | <foo>
351
+ | <foob>
352
+ | <fooc>
353
+ | <aside>
354
+ | <b>
@@ -0,0 +1,39 @@
1
+ #data
2
+ <b>1<i>2<p>3</b>4
3
+ #errors
4
+ (1,3): expected-doctype-but-got-start-tag
5
+ (1,16): adoption-agency-1.3
6
+ (1,17): expected-closing-tag-but-got-eof
7
+ #document
8
+ | <html>
9
+ | <head>
10
+ | <body>
11
+ | <b>
12
+ | "1"
13
+ | <i>
14
+ | "2"
15
+ | <i>
16
+ | <p>
17
+ | <b>
18
+ | "3"
19
+ | "4"
20
+
21
+ #data
22
+ <a><div><style></style><address><a>
23
+ #errors
24
+ (1,3): expected-doctype-but-got-start-tag
25
+ (1,35): unexpected-start-tag-implies-end-tag
26
+ (1,35): adoption-agency-1.3
27
+ (1,35): adoption-agency-1.3
28
+ (1,35): expected-closing-tag-but-got-eof
29
+ #document
30
+ | <html>
31
+ | <head>
32
+ | <body>
33
+ | <a>
34
+ | <div>
35
+ | <a>
36
+ | <style>
37
+ | <address>
38
+ | <a>
39
+ | <a>
@@ -0,0 +1,309 @@
1
+ #data
2
+ <div bar="ZZ&gt;YY"></div>
3
+ #errors
4
+ (1,20): expected-doctype-but-got-start-tag
5
+ #document
6
+ | <html>
7
+ | <head>
8
+ | <body>
9
+ | <div>
10
+ | bar="ZZ>YY"
11
+
12
+ #data
13
+ <div bar="ZZ&"></div>
14
+ #errors
15
+ (1,15): expected-doctype-but-got-start-tag
16
+ #document
17
+ | <html>
18
+ | <head>
19
+ | <body>
20
+ | <div>
21
+ | bar="ZZ&"
22
+
23
+ #data
24
+ <div bar='ZZ&'></div>
25
+ #errors
26
+ (1,15): expected-doctype-but-got-start-tag
27
+ #document
28
+ | <html>
29
+ | <head>
30
+ | <body>
31
+ | <div>
32
+ | bar="ZZ&"
33
+
34
+ #data
35
+ <div bar=ZZ&></div>
36
+ #errors
37
+ (1,13): expected-doctype-but-got-start-tag
38
+ #document
39
+ | <html>
40
+ | <head>
41
+ | <body>
42
+ | <div>
43
+ | bar="ZZ&"
44
+
45
+ #data
46
+ <div bar="ZZ&gt=YY"></div>
47
+ #errors
48
+ (1,20): expected-doctype-but-got-start-tag
49
+ #document
50
+ | <html>
51
+ | <head>
52
+ | <body>
53
+ | <div>
54
+ | bar="ZZ&gt=YY"
55
+
56
+ #data
57
+ <div bar="ZZ&gt0YY"></div>
58
+ #errors
59
+ (1,20): expected-doctype-but-got-start-tag
60
+ #document
61
+ | <html>
62
+ | <head>
63
+ | <body>
64
+ | <div>
65
+ | bar="ZZ&gt0YY"
66
+
67
+ #data
68
+ <div bar="ZZ&gt9YY"></div>
69
+ #errors
70
+ (1,20): expected-doctype-but-got-start-tag
71
+ #document
72
+ | <html>
73
+ | <head>
74
+ | <body>
75
+ | <div>
76
+ | bar="ZZ&gt9YY"
77
+
78
+ #data
79
+ <div bar="ZZ&gtaYY"></div>
80
+ #errors
81
+ (1,20): expected-doctype-but-got-start-tag
82
+ #document
83
+ | <html>
84
+ | <head>
85
+ | <body>
86
+ | <div>
87
+ | bar="ZZ&gtaYY"
88
+
89
+ #data
90
+ <div bar="ZZ&gtZYY"></div>
91
+ #errors
92
+ (1,20): expected-doctype-but-got-start-tag
93
+ #document
94
+ | <html>
95
+ | <head>
96
+ | <body>
97
+ | <div>
98
+ | bar="ZZ&gtZYY"
99
+
100
+ #data
101
+ <div bar="ZZ&gt YY"></div>
102
+ #errors
103
+ (1,15): named-entity-without-semicolon
104
+ (1,20): expected-doctype-but-got-start-tag
105
+ #new-errors
106
+ (1:16) missing-semicolon-after-character-reference
107
+ #document
108
+ | <html>
109
+ | <head>
110
+ | <body>
111
+ | <div>
112
+ | bar="ZZ> YY"
113
+
114
+ #data
115
+ <div bar="ZZ&gt"></div>
116
+ #errors
117
+ (1,15): named-entity-without-semicolon
118
+ (1,17): expected-doctype-but-got-start-tag
119
+ #new-errors
120
+ (1:16) missing-semicolon-after-character-reference
121
+ #document
122
+ | <html>
123
+ | <head>
124
+ | <body>
125
+ | <div>
126
+ | bar="ZZ>"
127
+
128
+ #data
129
+ <div bar='ZZ&gt'></div>
130
+ #errors
131
+ (1,15): named-entity-without-semicolon
132
+ (1,17): expected-doctype-but-got-start-tag
133
+ #new-errors
134
+ (1:16) missing-semicolon-after-character-reference
135
+ #document
136
+ | <html>
137
+ | <head>
138
+ | <body>
139
+ | <div>
140
+ | bar="ZZ>"
141
+
142
+ #data
143
+ <div bar=ZZ&gt></div>
144
+ #errors
145
+ (1,14): named-entity-without-semicolon
146
+ (1,15): expected-doctype-but-got-start-tag
147
+ #new-errors
148
+ (1:15) missing-semicolon-after-character-reference
149
+ #document
150
+ | <html>
151
+ | <head>
152
+ | <body>
153
+ | <div>
154
+ | bar="ZZ>"
155
+
156
+ #data
157
+ <div bar="ZZ&pound_id=23"></div>
158
+ #errors
159
+ (1,18): named-entity-without-semicolon
160
+ (1,26): expected-doctype-but-got-start-tag
161
+ #new-errors
162
+ (1:19) missing-semicolon-after-character-reference
163
+ #document
164
+ | <html>
165
+ | <head>
166
+ | <body>
167
+ | <div>
168
+ | bar="ZZ£_id=23"
169
+
170
+ #data
171
+ <div bar="ZZ&prod_id=23"></div>
172
+ #errors
173
+ (1,25): expected-doctype-but-got-start-tag
174
+ #document
175
+ | <html>
176
+ | <head>
177
+ | <body>
178
+ | <div>
179
+ | bar="ZZ&prod_id=23"
180
+
181
+ #data
182
+ <div bar="ZZ&pound;_id=23"></div>
183
+ #errors
184
+ (1,27): expected-doctype-but-got-start-tag
185
+ #document
186
+ | <html>
187
+ | <head>
188
+ | <body>
189
+ | <div>
190
+ | bar="ZZ£_id=23"
191
+
192
+ #data
193
+ <div bar="ZZ&prod;_id=23"></div>
194
+ #errors
195
+ (1,26): expected-doctype-but-got-start-tag
196
+ #document
197
+ | <html>
198
+ | <head>
199
+ | <body>
200
+ | <div>
201
+ | bar="ZZ∏_id=23"
202
+
203
+ #data
204
+ <div bar="ZZ&pound=23"></div>
205
+ #errors
206
+ (1,23): expected-doctype-but-got-start-tag
207
+ #document
208
+ | <html>
209
+ | <head>
210
+ | <body>
211
+ | <div>
212
+ | bar="ZZ&pound=23"
213
+
214
+ #data
215
+ <div bar="ZZ&prod=23"></div>
216
+ #errors
217
+ (1,22): expected-doctype-but-got-start-tag
218
+ #document
219
+ | <html>
220
+ | <head>
221
+ | <body>
222
+ | <div>
223
+ | bar="ZZ&prod=23"
224
+
225
+ #data
226
+ <div>ZZ&pound_id=23</div>
227
+ #errors
228
+ (1,5): expected-doctype-but-got-start-tag
229
+ (1,13): named-entity-without-semicolon
230
+ #new-errors
231
+ (1:14) missing-semicolon-after-character-reference
232
+ #document
233
+ | <html>
234
+ | <head>
235
+ | <body>
236
+ | <div>
237
+ | "ZZ£_id=23"
238
+
239
+ #data
240
+ <div>ZZ&prod_id=23</div>
241
+ #errors
242
+ (1,5): expected-doctype-but-got-start-tag
243
+ #document
244
+ | <html>
245
+ | <head>
246
+ | <body>
247
+ | <div>
248
+ | "ZZ&prod_id=23"
249
+
250
+ #data
251
+ <div>ZZ&pound;_id=23</div>
252
+ #errors
253
+ (1,5): expected-doctype-but-got-start-tag
254
+ #document
255
+ | <html>
256
+ | <head>
257
+ | <body>
258
+ | <div>
259
+ | "ZZ£_id=23"
260
+
261
+ #data
262
+ <div>ZZ&prod;_id=23</div>
263
+ #errors
264
+ (1,5): expected-doctype-but-got-start-tag
265
+ #document
266
+ | <html>
267
+ | <head>
268
+ | <body>
269
+ | <div>
270
+ | "ZZ∏_id=23"
271
+
272
+ #data
273
+ <div>ZZ&pound=23</div>
274
+ #errors
275
+ (1,5): expected-doctype-but-got-start-tag
276
+ (1,13): named-entity-without-semicolon
277
+ #new-errors
278
+ (1:14) missing-semicolon-after-character-reference
279
+ #document
280
+ | <html>
281
+ | <head>
282
+ | <body>
283
+ | <div>
284
+ | "ZZ£=23"
285
+
286
+ #data
287
+ <div>ZZ&prod=23</div>
288
+ #errors
289
+ (1,5): expected-doctype-but-got-start-tag
290
+ #document
291
+ | <html>
292
+ | <head>
293
+ | <body>
294
+ | <div>
295
+ | "ZZ&prod=23"
296
+
297
+ #data
298
+ <div>ZZ&AElig=</div>
299
+ #errors
300
+ (1,5): expected-doctype-but-got-start-tag
301
+ (1:14) missing-semicolon-after-character-reference
302
+ #new-errors
303
+ (1:14) missing-semicolon-after-character-reference
304
+ #document
305
+ | <html>
306
+ | <head>
307
+ | <body>
308
+ | <div>
309
+ | "ZZÆ="