html-validate 6.7.0 → 6.9.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.
@@ -0,0 +1,1881 @@
1
+ /* eslint-disable sonarjs/no-duplicate-string */
2
+
3
+ module.exports = {
4
+ "*": {
5
+ attributes: {
6
+ contenteditable: {
7
+ omit: true,
8
+ enum: ["true", "false"],
9
+ },
10
+ contextmenu: {
11
+ deprecated: true,
12
+ },
13
+ dir: {
14
+ enum: ["ltr", "rtl", "auto"],
15
+ },
16
+ draggable: {
17
+ enum: ["true", "false"],
18
+ },
19
+ hidden: {
20
+ boolean: true,
21
+ },
22
+ id: {
23
+ enum: ["/\\S+/"],
24
+ },
25
+ tabindex: {
26
+ enum: ["/-?\\d+/"],
27
+ },
28
+ },
29
+ },
30
+
31
+ a: {
32
+ flow: true,
33
+ phrasing: true,
34
+ interactive: true,
35
+ transparent: true,
36
+ attributes: {
37
+ charset: {
38
+ deprecated: true,
39
+ },
40
+ coords: {
41
+ deprecated: true,
42
+ },
43
+ datafld: {
44
+ deprecated: true,
45
+ },
46
+ datasrc: {
47
+ deprecated: true,
48
+ },
49
+ download: {
50
+ omit: true,
51
+ enum: ["/.+/"],
52
+ },
53
+ href: {
54
+ enum: ["/.*/"],
55
+ },
56
+ methods: {
57
+ deprecated: true,
58
+ },
59
+ name: {
60
+ deprecated: true,
61
+ },
62
+ shape: {
63
+ deprecated: true,
64
+ },
65
+ urn: {
66
+ deprecated: true,
67
+ },
68
+ },
69
+ permittedDescendants: [{ exclude: "@interactive" }],
70
+ },
71
+
72
+ abbr: {
73
+ flow: true,
74
+ phrasing: true,
75
+ permittedContent: ["@phrasing"],
76
+ },
77
+
78
+ acronym: {
79
+ deprecated: {
80
+ message: "use <abbr> instead",
81
+ documentation: "`<abbr>` can be used as a replacement.",
82
+ source: "html5",
83
+ },
84
+ },
85
+
86
+ address: {
87
+ flow: true,
88
+ permittedContent: ["@flow"],
89
+ permittedDescendants: [{ exclude: ["address", "header", "footer", "@heading", "@sectioning"] }],
90
+ },
91
+
92
+ applet: {
93
+ deprecated: {
94
+ source: "html5",
95
+ },
96
+ attributes: {
97
+ datafld: {
98
+ deprecated: true,
99
+ },
100
+ datasrc: {
101
+ deprecated: true,
102
+ },
103
+ },
104
+ },
105
+
106
+ area: {
107
+ flow: ["isDescendant", "map"],
108
+ phrasing: ["isDescendant", "map"],
109
+ void: true,
110
+ attributes: {
111
+ nohref: {
112
+ deprecated: true,
113
+ },
114
+ shape: {
115
+ enum: ["rect", "circle", "poly", "default"],
116
+ },
117
+ },
118
+ requiredAncestors: ["map"],
119
+ },
120
+
121
+ article: {
122
+ flow: true,
123
+ sectioning: true,
124
+ permittedContent: ["@flow"],
125
+ permittedDescendants: [{ exclude: ["main"] }],
126
+ },
127
+
128
+ aside: {
129
+ flow: true,
130
+ sectioning: true,
131
+ permittedContent: ["@flow"],
132
+ permittedDescendants: [{ exclude: ["main"] }],
133
+ },
134
+
135
+ audio: {
136
+ flow: true,
137
+ phrasing: true,
138
+ embedded: true,
139
+ interactive: ["hasAttribute", "controls"],
140
+ transparent: ["@flow"],
141
+ attributes: {
142
+ preload: {
143
+ omit: true,
144
+ enum: ["none", "metadata", "auto"],
145
+ },
146
+ },
147
+ permittedContent: ["@flow", "track", "source"],
148
+ permittedDescendants: [{ exclude: ["audio", "video"] }],
149
+ permittedOrder: ["source", "track", "@flow"],
150
+ },
151
+
152
+ b: {
153
+ flow: true,
154
+ phrasing: true,
155
+ permittedContent: ["@phrasing"],
156
+ },
157
+
158
+ base: {
159
+ metadata: true,
160
+ void: true,
161
+ },
162
+
163
+ basefont: {
164
+ deprecated: {
165
+ message: "use CSS instead",
166
+ documentation: "Use CSS `font-size` property instead.",
167
+ source: "html4",
168
+ },
169
+ },
170
+
171
+ bdi: {
172
+ flow: true,
173
+ phrasing: true,
174
+ permittedContent: ["@phrasing"],
175
+ },
176
+
177
+ bdo: {
178
+ flow: true,
179
+ phrasing: true,
180
+ permittedContent: ["@phrasing"],
181
+ },
182
+
183
+ bgsound: {
184
+ deprecated: {
185
+ message: "use <audio> instead",
186
+ documentation:
187
+ "Use the `<audio>` element instead but consider accessibility concerns with autoplaying sounds.",
188
+ source: "non-standard",
189
+ },
190
+ },
191
+
192
+ big: {
193
+ deprecated: {
194
+ message: "use CSS instead",
195
+ documentation: "Use CSS `font-size` property instead.",
196
+ source: "html5",
197
+ },
198
+ },
199
+
200
+ blink: {
201
+ deprecated: {
202
+ documentation:
203
+ "`<blink>` has no direct replacement and blinking text is frowned upon by accessibility standards.",
204
+ source: "non-standard",
205
+ },
206
+ },
207
+
208
+ blockquote: {
209
+ flow: true,
210
+ sectioning: true,
211
+ permittedContent: ["@flow"],
212
+ },
213
+
214
+ body: {
215
+ attributes: {
216
+ alink: {
217
+ deprecated: true,
218
+ },
219
+ background: {
220
+ deprecated: true,
221
+ },
222
+ bgcolor: {
223
+ deprecated: true,
224
+ },
225
+ link: {
226
+ deprecated: true,
227
+ },
228
+ marginbottom: {
229
+ deprecated: true,
230
+ },
231
+ marginheight: {
232
+ deprecated: true,
233
+ },
234
+ marginleft: {
235
+ deprecated: true,
236
+ },
237
+ marginright: {
238
+ deprecated: true,
239
+ },
240
+ margintop: {
241
+ deprecated: true,
242
+ },
243
+ marginwidth: {
244
+ deprecated: true,
245
+ },
246
+ text: {
247
+ deprecated: true,
248
+ },
249
+ vlink: {
250
+ deprecated: true,
251
+ },
252
+ },
253
+ },
254
+
255
+ br: {
256
+ flow: true,
257
+ phrasing: true,
258
+ void: true,
259
+ attributes: {
260
+ clear: {
261
+ deprecated: true,
262
+ },
263
+ },
264
+ },
265
+
266
+ button: {
267
+ flow: true,
268
+ phrasing: true,
269
+ interactive: true,
270
+ labelable: true,
271
+ attributes: {
272
+ autofocus: {
273
+ boolean: true,
274
+ },
275
+ datafld: {
276
+ deprecated: true,
277
+ },
278
+ dataformatas: {
279
+ deprecated: true,
280
+ },
281
+ datasrc: {
282
+ deprecated: true,
283
+ },
284
+ disabled: {
285
+ boolean: true,
286
+ },
287
+ type: {
288
+ required: true,
289
+ enum: ["submit", "reset", "button"],
290
+ },
291
+ },
292
+ permittedContent: ["@phrasing"],
293
+ permittedDescendants: [{ exclude: ["@interactive"] }],
294
+ textContent: "accessible",
295
+ },
296
+
297
+ canvas: {
298
+ flow: true,
299
+ phrasing: true,
300
+ embedded: true,
301
+ transparent: true,
302
+ },
303
+
304
+ caption: {
305
+ permittedContent: ["@flow"],
306
+ permittedDescendants: [{ exclude: ["table"] }],
307
+ attributes: {
308
+ align: {
309
+ deprecated: true,
310
+ },
311
+ },
312
+ },
313
+
314
+ center: {
315
+ deprecated: {
316
+ message: "use CSS instead",
317
+ documentation: "Use the CSS `text-align` or `margin: auto` properties instead.",
318
+ source: "html4",
319
+ },
320
+ },
321
+
322
+ cite: {
323
+ flow: true,
324
+ phrasing: true,
325
+ permittedContent: ["@phrasing"],
326
+ },
327
+
328
+ code: {
329
+ flow: true,
330
+ phrasing: true,
331
+ permittedContent: ["@phrasing"],
332
+ },
333
+
334
+ col: {
335
+ attributes: {
336
+ align: {
337
+ deprecated: true,
338
+ },
339
+ char: {
340
+ deprecated: true,
341
+ },
342
+ charoff: {
343
+ deprecated: true,
344
+ },
345
+ span: {
346
+ enum: ["/\\d+/"],
347
+ },
348
+ valign: {
349
+ deprecated: true,
350
+ },
351
+ width: {
352
+ deprecated: true,
353
+ },
354
+ },
355
+ void: true,
356
+ },
357
+
358
+ colgroup: {
359
+ implicitClosed: ["colgroup"],
360
+ attributes: {
361
+ span: {
362
+ enum: ["/\\d+/"],
363
+ },
364
+ },
365
+ permittedContent: ["col", "template"],
366
+ },
367
+
368
+ data: {
369
+ flow: true,
370
+ phrasing: true,
371
+ permittedContent: ["@phrasing"],
372
+ },
373
+
374
+ datalist: {
375
+ flow: true,
376
+ phrasing: true,
377
+ permittedContent: ["@phrasing", "option"],
378
+ },
379
+
380
+ dd: {
381
+ implicitClosed: ["dd", "dt"],
382
+ permittedContent: ["@flow"],
383
+ requiredAncestors: ["dl > dd", "dl > div > dd"],
384
+ },
385
+
386
+ del: {
387
+ flow: true,
388
+ phrasing: true,
389
+ transparent: true,
390
+ },
391
+
392
+ details: {
393
+ flow: true,
394
+ sectioning: true,
395
+ interactive: true,
396
+ attributes: {
397
+ open: {
398
+ boolean: true,
399
+ },
400
+ },
401
+ permittedContent: ["summary", "@flow"],
402
+ permittedOrder: ["summary", "@flow"],
403
+ requiredContent: ["summary"],
404
+ },
405
+
406
+ dfn: {
407
+ flow: true,
408
+ phrasing: true,
409
+ permittedContent: ["@phrasing"],
410
+ permittedDescendants: [{ exclude: ["dfn"] }],
411
+ },
412
+
413
+ dir: {
414
+ deprecated: {
415
+ documentation:
416
+ "The non-standard `<dir>` element has no direct replacement but MDN recommends replacing with `<ul>` and CSS.",
417
+ source: "html4",
418
+ },
419
+ },
420
+
421
+ div: {
422
+ flow: true,
423
+ permittedContent: ["@flow", "dt", "dd"],
424
+ attributes: {
425
+ align: {
426
+ deprecated: true,
427
+ },
428
+ datafld: {
429
+ deprecated: true,
430
+ },
431
+ dataformatas: {
432
+ deprecated: true,
433
+ },
434
+ datasrc: {
435
+ deprecated: true,
436
+ },
437
+ },
438
+ },
439
+
440
+ dl: {
441
+ flow: true,
442
+ permittedContent: ["@script", "dt", "dd", "div"],
443
+ attributes: {
444
+ compact: {
445
+ deprecated: true,
446
+ },
447
+ },
448
+ },
449
+
450
+ dt: {
451
+ implicitClosed: ["dd", "dt"],
452
+ permittedContent: ["@flow"],
453
+ permittedDescendants: [{ exclude: ["header", "footer", "@sectioning", "@heading"] }],
454
+ requiredAncestors: ["dl > dt", "dl > div > dt"],
455
+ },
456
+
457
+ em: {
458
+ flow: true,
459
+ phrasing: true,
460
+ permittedContent: ["@phrasing"],
461
+ },
462
+
463
+ embed: {
464
+ flow: true,
465
+ phrasing: true,
466
+ embedded: true,
467
+ interactive: true,
468
+ void: true,
469
+ attributes: {
470
+ src: {
471
+ required: true,
472
+ enum: ["/.+/"],
473
+ },
474
+ title: {
475
+ required: true,
476
+ },
477
+ },
478
+ },
479
+
480
+ fieldset: {
481
+ flow: true,
482
+ attributes: {
483
+ datafld: {
484
+ deprecated: true,
485
+ },
486
+ disabled: {
487
+ boolean: true,
488
+ },
489
+ },
490
+ permittedContent: ["@flow", "legend?"],
491
+ permittedOrder: ["legend", "@flow"],
492
+ },
493
+
494
+ figcaption: {
495
+ permittedContent: ["@flow"],
496
+ },
497
+
498
+ figure: {
499
+ flow: true,
500
+ permittedContent: ["@flow", "figcaption?"],
501
+ permittedOrder: ["figcaption", "@flow", "figcaption"],
502
+ },
503
+
504
+ font: {
505
+ deprecated: {
506
+ message: "use CSS instead",
507
+ documentation: "Use CSS font properties instead.",
508
+ source: "html4",
509
+ },
510
+ },
511
+
512
+ footer: {
513
+ flow: true,
514
+ permittedContent: ["@flow"],
515
+ permittedDescendants: [{ exclude: ["header", "footer", "main"] }],
516
+ },
517
+
518
+ form: {
519
+ flow: true,
520
+ form: true,
521
+ attributes: {
522
+ accept: {
523
+ deprecated: true,
524
+ },
525
+ autocomplete: {
526
+ enum: ["on", "off"],
527
+ },
528
+ method: {
529
+ enum: ["get", "post"],
530
+ },
531
+ novalidate: {
532
+ boolean: true,
533
+ },
534
+ },
535
+ permittedContent: ["@flow"],
536
+ permittedDescendants: [{ exclude: ["@form"] }],
537
+ },
538
+
539
+ frame: {
540
+ deprecated: {
541
+ documentation:
542
+ "The `<frame>` element can be replaced with the `<iframe>` element but a better solution is to remove usage of frames entirely.",
543
+ source: "html5",
544
+ },
545
+ attributes: {
546
+ datafld: {
547
+ deprecated: true,
548
+ },
549
+ datasrc: {
550
+ deprecated: true,
551
+ },
552
+ title: {
553
+ required: true,
554
+ },
555
+ },
556
+ },
557
+
558
+ frameset: {
559
+ deprecated: {
560
+ documentation:
561
+ "The `<frameset>` element can be replaced with the `<iframe>` element but a better solution is to remove usage of frames entirely.",
562
+ source: "html5",
563
+ },
564
+ },
565
+
566
+ h1: {
567
+ flow: true,
568
+ heading: true,
569
+ permittedContent: ["@phrasing"],
570
+ attributes: {
571
+ align: {
572
+ deprecated: true,
573
+ },
574
+ },
575
+ },
576
+
577
+ h2: {
578
+ flow: true,
579
+ heading: true,
580
+ permittedContent: ["@phrasing"],
581
+ attributes: {
582
+ align: {
583
+ deprecated: true,
584
+ },
585
+ },
586
+ },
587
+
588
+ h3: {
589
+ flow: true,
590
+ heading: true,
591
+ permittedContent: ["@phrasing"],
592
+ attributes: {
593
+ align: {
594
+ deprecated: true,
595
+ },
596
+ },
597
+ },
598
+
599
+ h4: {
600
+ flow: true,
601
+ heading: true,
602
+ permittedContent: ["@phrasing"],
603
+ attributes: {
604
+ align: {
605
+ deprecated: true,
606
+ },
607
+ },
608
+ },
609
+
610
+ h5: {
611
+ flow: true,
612
+ heading: true,
613
+ permittedContent: ["@phrasing"],
614
+ attributes: {
615
+ align: {
616
+ deprecated: true,
617
+ },
618
+ },
619
+ },
620
+
621
+ h6: {
622
+ flow: true,
623
+ heading: true,
624
+ permittedContent: ["@phrasing"],
625
+ attributes: {
626
+ align: {
627
+ deprecated: true,
628
+ },
629
+ },
630
+ },
631
+
632
+ head: {
633
+ permittedContent: ["base?", "title?", "@meta"],
634
+ requiredContent: ["title"],
635
+ attributes: {
636
+ profile: {
637
+ deprecated: true,
638
+ },
639
+ },
640
+ },
641
+
642
+ header: {
643
+ flow: true,
644
+ permittedContent: ["@flow"],
645
+ permittedDescendants: [{ exclude: ["header", "footer", "main"] }],
646
+ },
647
+
648
+ hgroup: {
649
+ deprecated: true,
650
+ },
651
+
652
+ hr: {
653
+ flow: true,
654
+ void: true,
655
+ attributes: {
656
+ align: {
657
+ deprecated: true,
658
+ },
659
+ color: {
660
+ deprecated: true,
661
+ },
662
+ noshade: {
663
+ deprecated: true,
664
+ },
665
+ size: {
666
+ deprecated: true,
667
+ },
668
+ width: {
669
+ deprecated: true,
670
+ },
671
+ },
672
+ },
673
+
674
+ html: {
675
+ permittedContent: ["head?", "body?"],
676
+ permittedOrder: ["head", "body"],
677
+ requiredContent: ["head", "body"],
678
+ attributes: {
679
+ lang: {
680
+ required: true,
681
+ },
682
+ version: {
683
+ deprecated: true,
684
+ },
685
+ },
686
+ },
687
+
688
+ i: {
689
+ flow: true,
690
+ phrasing: true,
691
+ permittedContent: ["@phrasing"],
692
+ },
693
+
694
+ iframe: {
695
+ flow: true,
696
+ phrasing: true,
697
+ embedded: true,
698
+ interactive: true,
699
+ attributes: {
700
+ align: {
701
+ deprecated: true,
702
+ },
703
+ allowtransparency: {
704
+ deprecated: true,
705
+ },
706
+ datafld: {
707
+ deprecated: true,
708
+ },
709
+ datasrc: {
710
+ deprecated: true,
711
+ },
712
+ frameborder: {
713
+ deprecated: true,
714
+ },
715
+ hspace: {
716
+ deprecated: true,
717
+ },
718
+ marginheight: {
719
+ deprecated: true,
720
+ },
721
+ marginwidth: {
722
+ deprecated: true,
723
+ },
724
+ scrolling: {
725
+ deprecated: true,
726
+ },
727
+ src: {
728
+ enum: ["/.+/"],
729
+ },
730
+ title: {
731
+ required: true,
732
+ },
733
+ vspace: {
734
+ deprecated: true,
735
+ },
736
+ },
737
+ permittedContent: [],
738
+ },
739
+
740
+ img: {
741
+ flow: true,
742
+ phrasing: true,
743
+ embedded: true,
744
+ interactive: ["hasAttribute", "usemap"],
745
+ void: true,
746
+ attributes: {
747
+ align: {
748
+ deprecated: true,
749
+ },
750
+ border: {
751
+ deprecated: true,
752
+ },
753
+ crossorigin: {
754
+ omit: true,
755
+ enum: ["anonymous", "use-credentials"],
756
+ },
757
+ datafld: {
758
+ deprecated: true,
759
+ },
760
+ datasrc: {
761
+ deprecated: true,
762
+ },
763
+ decoding: {
764
+ enum: ["sync", "async", "auto"],
765
+ },
766
+ hspace: {
767
+ deprecated: true,
768
+ },
769
+ ismap: {
770
+ boolean: true,
771
+ },
772
+ lowsrc: {
773
+ deprecated: true,
774
+ },
775
+ name: {
776
+ deprecated: true,
777
+ },
778
+ src: {
779
+ required: true,
780
+ enum: ["/.+/"],
781
+ },
782
+ srcset: {
783
+ enum: ["/[^]+/"],
784
+ },
785
+ vspace: {
786
+ deprecated: true,
787
+ },
788
+ },
789
+ },
790
+
791
+ input: {
792
+ flow: true,
793
+ phrasing: true,
794
+ interactive: ["matchAttribute", ["type", "!=", "hidden"]],
795
+ void: true,
796
+ labelable: ["matchAttribute", ["type", "!=", "hidden"]],
797
+ attributes: {
798
+ align: {
799
+ deprecated: true,
800
+ },
801
+ autofocus: {
802
+ boolean: true,
803
+ },
804
+ capture: {
805
+ omit: true,
806
+ enum: ["environment", "user"],
807
+ },
808
+ checked: {
809
+ boolean: true,
810
+ },
811
+ datafld: {
812
+ deprecated: true,
813
+ },
814
+ dataformatas: {
815
+ deprecated: true,
816
+ },
817
+ datasrc: {
818
+ deprecated: true,
819
+ },
820
+ disabled: {
821
+ boolean: true,
822
+ },
823
+ hspace: {
824
+ deprecated: true,
825
+ },
826
+ inputmode: {
827
+ enum: ["none", "text", "decimal", "numeric", "tel", "search", "email", "url"],
828
+ },
829
+ ismap: {
830
+ deprecated: true,
831
+ },
832
+ multiple: {
833
+ boolean: true,
834
+ },
835
+ readonly: {
836
+ boolean: true,
837
+ },
838
+ required: {
839
+ boolean: true,
840
+ },
841
+ spellcheck: {
842
+ enum: ["default", "false", "true"],
843
+ },
844
+ type: {
845
+ required: true,
846
+ enum: [
847
+ "button",
848
+ "checkbox",
849
+ "color",
850
+ "date",
851
+ "datetime-local",
852
+ "email",
853
+ "file",
854
+ "hidden",
855
+ "image",
856
+ "month",
857
+ "number",
858
+ "password",
859
+ "radio",
860
+ "range",
861
+ "reset",
862
+ "search",
863
+ "submit",
864
+ "tel",
865
+ "text",
866
+ "time",
867
+ "url",
868
+ "week",
869
+ ],
870
+ },
871
+ usemap: {
872
+ deprecated: true,
873
+ },
874
+ vspace: {
875
+ deprecated: true,
876
+ },
877
+ },
878
+ },
879
+
880
+ ins: {
881
+ flow: true,
882
+ phrasing: true,
883
+ transparent: true,
884
+ },
885
+
886
+ isindex: {
887
+ deprecated: {
888
+ source: "html4",
889
+ },
890
+ },
891
+
892
+ kbd: {
893
+ flow: true,
894
+ phrasing: true,
895
+ permittedContent: ["@phrasing"],
896
+ },
897
+
898
+ keygen: {
899
+ flow: true,
900
+ phrasing: true,
901
+ interactive: true,
902
+ void: true,
903
+ labelable: true,
904
+ },
905
+
906
+ label: {
907
+ flow: true,
908
+ phrasing: true,
909
+ interactive: true,
910
+ permittedContent: ["@phrasing"],
911
+ permittedDescendants: [{ exclude: ["label"] }],
912
+ attributes: {
913
+ datafld: {
914
+ deprecated: true,
915
+ },
916
+ dataformatas: {
917
+ deprecated: true,
918
+ },
919
+ datasrc: {
920
+ deprecated: true,
921
+ },
922
+ },
923
+ },
924
+
925
+ legend: {
926
+ permittedContent: ["@phrasing", "@heading"],
927
+ attributes: {
928
+ align: {
929
+ deprecated: true,
930
+ },
931
+ datafld: {
932
+ deprecated: true,
933
+ },
934
+ dataformatas: {
935
+ deprecated: true,
936
+ },
937
+ datasrc: {
938
+ deprecated: true,
939
+ },
940
+ },
941
+ },
942
+
943
+ li: {
944
+ implicitClosed: ["li"],
945
+ permittedContent: ["@flow"],
946
+ attributes: {
947
+ type: {
948
+ deprecated: true,
949
+ },
950
+ },
951
+ },
952
+
953
+ link: {
954
+ metadata: true,
955
+ void: true,
956
+ attributes: {
957
+ charset: {
958
+ deprecated: true,
959
+ },
960
+ crossorigin: {
961
+ omit: true,
962
+ enum: ["anonymous", "use-credentials"],
963
+ },
964
+ href: {
965
+ required: true,
966
+ enum: ["/.+/"],
967
+ },
968
+ integrity: {
969
+ enum: ["/.+/"],
970
+ },
971
+ methods: {
972
+ deprecated: true,
973
+ },
974
+ target: {
975
+ deprecated: true,
976
+ },
977
+ urn: {
978
+ deprecated: true,
979
+ },
980
+ },
981
+ },
982
+
983
+ listing: {
984
+ deprecated: {
985
+ source: "html32",
986
+ },
987
+ },
988
+
989
+ main: {
990
+ flow: true,
991
+ },
992
+
993
+ map: {
994
+ flow: true,
995
+ phrasing: true,
996
+ transparent: true,
997
+ },
998
+
999
+ mark: {
1000
+ flow: true,
1001
+ phrasing: true,
1002
+ permittedContent: ["@phrasing"],
1003
+ },
1004
+
1005
+ marquee: {
1006
+ deprecated: {
1007
+ documentation:
1008
+ "Marked as obsolete by both W3C and WHATWG standards but still implemented in most browsers. Animated text should be avoided for accessibility reasons as well.",
1009
+ source: "html5",
1010
+ },
1011
+ attributes: {
1012
+ datafld: {
1013
+ deprecated: true,
1014
+ },
1015
+ dataformatas: {
1016
+ deprecated: true,
1017
+ },
1018
+ datasrc: {
1019
+ deprecated: true,
1020
+ },
1021
+ },
1022
+ },
1023
+
1024
+ math: {
1025
+ flow: true,
1026
+ foreign: true,
1027
+ phrasing: true,
1028
+ embedded: true,
1029
+ attributes: {
1030
+ align: {
1031
+ deprecated: true,
1032
+ },
1033
+ dir: {
1034
+ enum: ["ltr", "rtl"],
1035
+ },
1036
+ display: {
1037
+ enum: ["block", "inline"],
1038
+ },
1039
+ hspace: {
1040
+ deprecated: true,
1041
+ },
1042
+ name: {
1043
+ deprecated: true,
1044
+ },
1045
+ overflow: {
1046
+ enum: ["linebreak", "scroll", "elide", "truncate", "scale"],
1047
+ },
1048
+ vspace: {
1049
+ deprecated: true,
1050
+ },
1051
+ },
1052
+ },
1053
+
1054
+ meta: {
1055
+ metadata: true,
1056
+ void: true,
1057
+ attributes: {
1058
+ scheme: {
1059
+ deprecated: true,
1060
+ },
1061
+ },
1062
+ },
1063
+
1064
+ meter: {
1065
+ flow: true,
1066
+ phrasing: true,
1067
+ labelable: true,
1068
+ permittedContent: ["@phrasing"],
1069
+ permittedDescendants: [{ exclude: "meter" }],
1070
+ },
1071
+
1072
+ multicol: {
1073
+ deprecated: {
1074
+ message: "use CSS instead",
1075
+ documentation: "Use CSS columns instead.",
1076
+ source: "html5",
1077
+ },
1078
+ },
1079
+
1080
+ nav: {
1081
+ flow: true,
1082
+ sectioning: true,
1083
+ permittedContent: ["@flow"],
1084
+ permittedDescendants: [{ exclude: "main" }],
1085
+ },
1086
+
1087
+ nextid: {
1088
+ deprecated: {
1089
+ source: "html32",
1090
+ },
1091
+ },
1092
+
1093
+ nobr: {
1094
+ deprecated: {
1095
+ message: "use CSS instead",
1096
+ documentation: "Use CSS `white-space` property instead.",
1097
+ source: "non-standard",
1098
+ },
1099
+ },
1100
+
1101
+ noembed: {
1102
+ deprecated: {
1103
+ source: "non-standard",
1104
+ },
1105
+ },
1106
+
1107
+ noframes: {
1108
+ deprecated: {
1109
+ source: "html5",
1110
+ },
1111
+ },
1112
+
1113
+ noscript: {
1114
+ metadata: true,
1115
+ flow: true,
1116
+ phrasing: true,
1117
+ transparent: true,
1118
+ permittedDescendants: [{ exclude: "noscript" }],
1119
+ },
1120
+
1121
+ object: {
1122
+ flow: true,
1123
+ phrasing: true,
1124
+ embedded: true,
1125
+ interactive: ["hasAttribute", "usemap"],
1126
+ transparent: true,
1127
+ attributes: {
1128
+ align: {
1129
+ deprecated: true,
1130
+ },
1131
+ archive: {
1132
+ deprecated: true,
1133
+ },
1134
+ border: {
1135
+ deprecated: true,
1136
+ },
1137
+ classid: {
1138
+ deprecated: true,
1139
+ },
1140
+ code: {
1141
+ deprecated: true,
1142
+ },
1143
+ codebase: {
1144
+ deprecated: true,
1145
+ },
1146
+ codetype: {
1147
+ deprecated: true,
1148
+ },
1149
+ data: {
1150
+ enum: ["/.+/"],
1151
+ },
1152
+ datafld: {
1153
+ deprecated: true,
1154
+ },
1155
+ dataformatas: {
1156
+ deprecated: true,
1157
+ },
1158
+ datasrc: {
1159
+ deprecated: true,
1160
+ },
1161
+ declare: {
1162
+ deprecated: true,
1163
+ },
1164
+ hspace: {
1165
+ deprecated: true,
1166
+ },
1167
+ standby: {
1168
+ deprecated: true,
1169
+ },
1170
+ vspace: {
1171
+ deprecated: true,
1172
+ },
1173
+ },
1174
+ permittedContent: ["param", "@flow"],
1175
+ permittedOrder: ["param", "@flow"],
1176
+ },
1177
+
1178
+ ol: {
1179
+ flow: true,
1180
+ attributes: {
1181
+ compact: {
1182
+ deprecated: true,
1183
+ },
1184
+ reversed: {
1185
+ boolean: true,
1186
+ },
1187
+ type: {
1188
+ enum: ["a", "A", "i", "I", "1"],
1189
+ },
1190
+ },
1191
+ permittedContent: ["@script", "li"],
1192
+ },
1193
+
1194
+ optgroup: {
1195
+ implicitClosed: ["optgroup"],
1196
+ attributes: {
1197
+ disabled: {
1198
+ boolean: true,
1199
+ },
1200
+ },
1201
+ permittedContent: ["@script", "option"],
1202
+ },
1203
+
1204
+ option: {
1205
+ implicitClosed: ["option"],
1206
+ attributes: {
1207
+ dataformatas: {
1208
+ deprecated: true,
1209
+ },
1210
+ datasrc: {
1211
+ deprecated: true,
1212
+ },
1213
+ disabled: {
1214
+ boolean: true,
1215
+ },
1216
+ name: {
1217
+ deprecated: true,
1218
+ },
1219
+ selected: {
1220
+ boolean: true,
1221
+ },
1222
+ },
1223
+ permittedContent: [],
1224
+ },
1225
+
1226
+ output: {
1227
+ flow: true,
1228
+ phrasing: true,
1229
+ labelable: true,
1230
+ permittedContent: ["@phrasing"],
1231
+ },
1232
+
1233
+ p: {
1234
+ flow: true,
1235
+ implicitClosed: [
1236
+ "address",
1237
+ "article",
1238
+ "aside",
1239
+ "blockquote",
1240
+ "div",
1241
+ "dl",
1242
+ "fieldset",
1243
+ "footer",
1244
+ "form",
1245
+ "h1",
1246
+ "h2",
1247
+ "h3",
1248
+ "h4",
1249
+ "h5",
1250
+ "h6",
1251
+ "header",
1252
+ "hgroup",
1253
+ "hr",
1254
+ "main",
1255
+ "nav",
1256
+ "ol",
1257
+ "p",
1258
+ "pre",
1259
+ "section",
1260
+ "table",
1261
+ "ul",
1262
+ ],
1263
+ permittedContent: ["@phrasing"],
1264
+ attributes: {
1265
+ align: {
1266
+ deprecated: true,
1267
+ },
1268
+ },
1269
+ },
1270
+
1271
+ param: {
1272
+ void: true,
1273
+ attributes: {
1274
+ datafld: {
1275
+ deprecated: true,
1276
+ },
1277
+ type: {
1278
+ deprecated: true,
1279
+ },
1280
+ valuetype: {
1281
+ deprecated: true,
1282
+ },
1283
+ },
1284
+ },
1285
+
1286
+ picture: {
1287
+ flow: true,
1288
+ phrasing: true,
1289
+ embedded: true,
1290
+ permittedContent: ["@script", "source", "img"],
1291
+ permittedOrder: ["source", "img"],
1292
+ },
1293
+
1294
+ plaintext: {
1295
+ deprecated: {
1296
+ message: "use <pre> or CSS instead",
1297
+ documentation: "Use the `<pre>` element or use CSS to set a monospace font.",
1298
+ source: "html2",
1299
+ },
1300
+ },
1301
+
1302
+ pre: {
1303
+ flow: true,
1304
+ permittedContent: ["@phrasing"],
1305
+ attributes: {
1306
+ width: {
1307
+ deprecated: true,
1308
+ },
1309
+ },
1310
+ },
1311
+
1312
+ progress: {
1313
+ flow: true,
1314
+ phrasing: true,
1315
+ labelable: true,
1316
+ permittedContent: ["@phrasing"],
1317
+ permittedDescendants: [{ exclude: "progress" }],
1318
+ },
1319
+
1320
+ q: {
1321
+ flow: true,
1322
+ phrasing: true,
1323
+ permittedContent: ["@phrasing"],
1324
+ },
1325
+
1326
+ rb: {
1327
+ implicitClosed: ["rb", "rt", "rtc", "rp"],
1328
+ permittedContent: ["@phrasing"],
1329
+ },
1330
+
1331
+ rp: {
1332
+ implicitClosed: ["rb", "rt", "rtc", "rp"],
1333
+ permittedContent: ["@phrasing"],
1334
+ },
1335
+
1336
+ rt: {
1337
+ implicitClosed: ["rb", "rt", "rtc", "rp"],
1338
+ permittedContent: ["@phrasing"],
1339
+ },
1340
+
1341
+ rtc: {
1342
+ implicitClosed: ["rb", "rtc", "rp"],
1343
+ permittedContent: ["@phrasing", "rt"],
1344
+ },
1345
+
1346
+ ruby: {
1347
+ flow: true,
1348
+ phrasing: true,
1349
+ permittedContent: ["@phrasing", "rb", "rp", "rt", "rtc"],
1350
+ },
1351
+
1352
+ s: {
1353
+ flow: true,
1354
+ phrasing: true,
1355
+ permittedContent: ["@phrasing"],
1356
+ },
1357
+
1358
+ samp: {
1359
+ flow: true,
1360
+ phrasing: true,
1361
+ permittedContent: ["@phrasing"],
1362
+ },
1363
+
1364
+ script: {
1365
+ metadata: true,
1366
+ flow: true,
1367
+ phrasing: true,
1368
+ scriptSupporting: true,
1369
+ attributes: {
1370
+ async: {
1371
+ boolean: true,
1372
+ },
1373
+ crossorigin: {
1374
+ omit: true,
1375
+ enum: ["anonymous", "use-credentials"],
1376
+ },
1377
+ defer: {
1378
+ boolean: true,
1379
+ },
1380
+ event: {
1381
+ deprecated: true,
1382
+ },
1383
+ for: {
1384
+ deprecated: true,
1385
+ },
1386
+ integrity: {
1387
+ enum: ["/.+/"],
1388
+ },
1389
+ language: {
1390
+ deprecated: true,
1391
+ },
1392
+ nomodule: {
1393
+ boolean: true,
1394
+ },
1395
+ src: {
1396
+ enum: ["/.+/"],
1397
+ },
1398
+ },
1399
+ },
1400
+
1401
+ section: {
1402
+ flow: true,
1403
+ sectioning: true,
1404
+ permittedContent: ["@flow"],
1405
+ },
1406
+
1407
+ select: {
1408
+ flow: true,
1409
+ phrasing: true,
1410
+ interactive: true,
1411
+ labelable: true,
1412
+ attributes: {
1413
+ autofocus: {
1414
+ boolean: true,
1415
+ },
1416
+ disabled: {
1417
+ boolean: true,
1418
+ },
1419
+ multiple: {
1420
+ boolean: true,
1421
+ },
1422
+ required: {
1423
+ boolean: true,
1424
+ },
1425
+ size: {
1426
+ enum: ["/\\d+/"],
1427
+ },
1428
+ },
1429
+ permittedContent: ["@script", "datasrc", "datafld", "dataformatas", "option", "optgroup"],
1430
+ },
1431
+
1432
+ slot: {
1433
+ flow: true,
1434
+ phrasing: true,
1435
+ transparent: true,
1436
+ },
1437
+
1438
+ small: {
1439
+ flow: true,
1440
+ phrasing: true,
1441
+ permittedContent: ["@phrasing"],
1442
+ },
1443
+
1444
+ source: {
1445
+ void: true,
1446
+ },
1447
+
1448
+ spacer: {
1449
+ deprecated: {
1450
+ message: "use CSS instead",
1451
+ documentation: "Use CSS margin or padding instead.",
1452
+ source: "non-standard",
1453
+ },
1454
+ },
1455
+
1456
+ span: {
1457
+ flow: true,
1458
+ phrasing: true,
1459
+ permittedContent: ["@phrasing"],
1460
+ attributes: {
1461
+ datafld: {
1462
+ deprecated: true,
1463
+ },
1464
+ dataformatas: {
1465
+ deprecated: true,
1466
+ },
1467
+ datasrc: {
1468
+ deprecated: true,
1469
+ },
1470
+ },
1471
+ },
1472
+
1473
+ strike: {
1474
+ deprecated: {
1475
+ message: "use <del> or <s> instead",
1476
+ documentation: "Use the `<del>` or `<s>` element instead.",
1477
+ source: "html5",
1478
+ },
1479
+ },
1480
+
1481
+ strong: {
1482
+ flow: true,
1483
+ phrasing: true,
1484
+ permittedContent: ["@phrasing"],
1485
+ },
1486
+
1487
+ style: {
1488
+ metadata: true,
1489
+ },
1490
+
1491
+ sub: {
1492
+ flow: true,
1493
+ phrasing: true,
1494
+ permittedContent: ["@phrasing"],
1495
+ },
1496
+
1497
+ summary: {
1498
+ permittedContent: ["@phrasing", "@heading"],
1499
+ },
1500
+
1501
+ sup: {
1502
+ flow: true,
1503
+ phrasing: true,
1504
+ permittedContent: ["@phrasing"],
1505
+ },
1506
+
1507
+ svg: {
1508
+ flow: true,
1509
+ foreign: true,
1510
+ phrasing: true,
1511
+ embedded: true,
1512
+ },
1513
+
1514
+ table: {
1515
+ flow: true,
1516
+ permittedContent: ["@script", "caption?", "colgroup", "tbody", "tfoot?", "thead?", "tr"],
1517
+ permittedOrder: ["caption", "colgroup", "thead", "tbody", "tr", "tfoot"],
1518
+ attributes: {
1519
+ align: {
1520
+ deprecated: true,
1521
+ },
1522
+ background: {
1523
+ deprecated: true,
1524
+ },
1525
+ bgcolor: {
1526
+ deprecated: true,
1527
+ },
1528
+ bordercolor: {
1529
+ deprecated: true,
1530
+ },
1531
+ cellpadding: {
1532
+ deprecated: true,
1533
+ },
1534
+ cellspacing: {
1535
+ deprecated: true,
1536
+ },
1537
+ dataformatas: {
1538
+ deprecated: true,
1539
+ },
1540
+ datapagesize: {
1541
+ deprecated: true,
1542
+ },
1543
+ datasrc: {
1544
+ deprecated: true,
1545
+ },
1546
+ frame: {
1547
+ deprecated: true,
1548
+ },
1549
+ rules: {
1550
+ deprecated: true,
1551
+ },
1552
+ summary: {
1553
+ deprecated: true,
1554
+ },
1555
+ width: {
1556
+ deprecated: true,
1557
+ },
1558
+ },
1559
+ },
1560
+
1561
+ tbody: {
1562
+ implicitClosed: ["tbody", "tfoot"],
1563
+ permittedContent: ["@script", "tr"],
1564
+ attributes: {
1565
+ align: {
1566
+ deprecated: true,
1567
+ },
1568
+ background: {
1569
+ deprecated: true,
1570
+ },
1571
+ char: {
1572
+ deprecated: true,
1573
+ },
1574
+ charoff: {
1575
+ deprecated: true,
1576
+ },
1577
+ valign: {
1578
+ deprecated: true,
1579
+ },
1580
+ },
1581
+ },
1582
+
1583
+ td: {
1584
+ flow: true,
1585
+ implicitClosed: ["td", "th"],
1586
+ attributes: {
1587
+ align: {
1588
+ deprecated: true,
1589
+ },
1590
+ axis: {
1591
+ deprecated: true,
1592
+ },
1593
+ background: {
1594
+ deprecated: true,
1595
+ },
1596
+ bgcolor: {
1597
+ deprecated: true,
1598
+ },
1599
+ char: {
1600
+ deprecated: true,
1601
+ },
1602
+ charoff: {
1603
+ deprecated: true,
1604
+ },
1605
+ colspan: {
1606
+ enum: ["/\\d+/"],
1607
+ },
1608
+ height: {
1609
+ deprecated: true,
1610
+ },
1611
+ nowrap: {
1612
+ deprecated: true,
1613
+ },
1614
+ rowspan: {
1615
+ enum: ["/\\d+/"],
1616
+ },
1617
+ scope: {
1618
+ deprecated: true,
1619
+ },
1620
+ valign: {
1621
+ deprecated: true,
1622
+ },
1623
+ width: {
1624
+ deprecated: true,
1625
+ },
1626
+ },
1627
+ permittedContent: ["@flow"],
1628
+ },
1629
+
1630
+ template: {
1631
+ metadata: true,
1632
+ flow: true,
1633
+ phrasing: true,
1634
+ scriptSupporting: true,
1635
+ },
1636
+
1637
+ textarea: {
1638
+ flow: true,
1639
+ phrasing: true,
1640
+ interactive: true,
1641
+ labelable: true,
1642
+ attributes: {
1643
+ autocomplete: {
1644
+ enum: ["on", "off"],
1645
+ },
1646
+ autofocus: {
1647
+ boolean: true,
1648
+ },
1649
+ cols: {
1650
+ enum: ["/\\d+/"],
1651
+ },
1652
+ datafld: {
1653
+ deprecated: true,
1654
+ },
1655
+ datasrc: {
1656
+ deprecated: true,
1657
+ },
1658
+ disabled: {
1659
+ boolean: true,
1660
+ },
1661
+ maxlength: {
1662
+ enum: ["/\\d+/"],
1663
+ },
1664
+ minlength: {
1665
+ enum: ["/\\d+/"],
1666
+ },
1667
+ readonly: {
1668
+ boolean: true,
1669
+ },
1670
+ required: {
1671
+ boolean: true,
1672
+ },
1673
+ rows: {
1674
+ enum: ["/\\d+/"],
1675
+ },
1676
+ spellcheck: {
1677
+ enum: ["true", "default", "false"],
1678
+ },
1679
+ wrap: {
1680
+ enum: ["hard", "soft"],
1681
+ },
1682
+ },
1683
+ permittedContent: [],
1684
+ },
1685
+
1686
+ tfoot: {
1687
+ implicitClosed: ["tbody"],
1688
+ permittedContent: ["@script", "tr"],
1689
+ attributes: {
1690
+ align: {
1691
+ deprecated: true,
1692
+ },
1693
+ background: {
1694
+ deprecated: true,
1695
+ },
1696
+ char: {
1697
+ deprecated: true,
1698
+ },
1699
+ charoff: {
1700
+ deprecated: true,
1701
+ },
1702
+ valign: {
1703
+ deprecated: true,
1704
+ },
1705
+ },
1706
+ },
1707
+
1708
+ th: {
1709
+ flow: true,
1710
+ implicitClosed: ["td", "th"],
1711
+ attributes: {
1712
+ align: {
1713
+ deprecated: true,
1714
+ },
1715
+ axis: {
1716
+ deprecated: true,
1717
+ },
1718
+ background: {
1719
+ deprecated: true,
1720
+ },
1721
+ bgcolor: {
1722
+ deprecated: true,
1723
+ },
1724
+ char: {
1725
+ deprecated: true,
1726
+ },
1727
+ charoff: {
1728
+ deprecated: true,
1729
+ },
1730
+ colspan: {
1731
+ enum: ["/\\d+/"],
1732
+ },
1733
+ height: {
1734
+ deprecated: true,
1735
+ },
1736
+ nowrap: {
1737
+ deprecated: true,
1738
+ },
1739
+ rowspan: {
1740
+ enum: ["/\\d+/"],
1741
+ },
1742
+ scope: {
1743
+ required: true,
1744
+ enum: ["row", "col", "rowgroup", "colgroup", "auto"],
1745
+ },
1746
+ valign: {
1747
+ deprecated: true,
1748
+ },
1749
+ width: {
1750
+ deprecated: true,
1751
+ },
1752
+ },
1753
+ permittedContent: ["@flow"],
1754
+ permittedDescendants: [{ exclude: ["header", "footer", "@sectioning", "@heading"] }],
1755
+ },
1756
+
1757
+ thead: {
1758
+ implicitClosed: ["tbody", "tfoot"],
1759
+ permittedContent: ["@script", "tr"],
1760
+ attributes: {
1761
+ align: {
1762
+ deprecated: true,
1763
+ },
1764
+ background: {
1765
+ deprecated: true,
1766
+ },
1767
+ char: {
1768
+ deprecated: true,
1769
+ },
1770
+ charoff: {
1771
+ deprecated: true,
1772
+ },
1773
+ valign: {
1774
+ deprecated: true,
1775
+ },
1776
+ },
1777
+ },
1778
+
1779
+ time: {
1780
+ flow: true,
1781
+ phrasing: true,
1782
+ permittedContent: ["@phrasing"],
1783
+ },
1784
+
1785
+ title: {
1786
+ metadata: true,
1787
+ permittedContent: [],
1788
+ },
1789
+
1790
+ tr: {
1791
+ implicitClosed: ["tr"],
1792
+ permittedContent: ["@script", "td", "th"],
1793
+ attributes: {
1794
+ align: {
1795
+ deprecated: true,
1796
+ },
1797
+ background: {
1798
+ deprecated: true,
1799
+ },
1800
+ bgcolor: {
1801
+ deprecated: true,
1802
+ },
1803
+ char: {
1804
+ deprecated: true,
1805
+ },
1806
+ charoff: {
1807
+ deprecated: true,
1808
+ },
1809
+ valign: {
1810
+ deprecated: true,
1811
+ },
1812
+ },
1813
+ },
1814
+
1815
+ track: {
1816
+ void: true,
1817
+ },
1818
+
1819
+ tt: {
1820
+ deprecated: {
1821
+ documentation:
1822
+ "Use a more semantically correct element such as `<code>`, `<var>` or `<pre>`.",
1823
+ source: "html4",
1824
+ },
1825
+ },
1826
+
1827
+ u: {
1828
+ flow: true,
1829
+ phrasing: true,
1830
+ permittedContent: ["@phrasing"],
1831
+ },
1832
+
1833
+ ul: {
1834
+ flow: true,
1835
+ permittedContent: ["@script", "li"],
1836
+ attributes: {
1837
+ compact: {
1838
+ deprecated: true,
1839
+ },
1840
+ type: {
1841
+ deprecated: true,
1842
+ },
1843
+ },
1844
+ },
1845
+
1846
+ var: {
1847
+ flow: true,
1848
+ phrasing: true,
1849
+ permittedContent: ["@phrasing"],
1850
+ },
1851
+
1852
+ video: {
1853
+ flow: true,
1854
+ phrasing: true,
1855
+ embedded: true,
1856
+ interactive: ["hasAttribute", "controls"],
1857
+ transparent: ["@flow"],
1858
+ attributes: {
1859
+ preload: {
1860
+ omit: true,
1861
+ enum: ["none", "metadata", "auto"],
1862
+ },
1863
+ },
1864
+ permittedContent: ["@flow", "track", "source"],
1865
+ permittedDescendants: [{ exclude: ["audio", "video"] }],
1866
+ permittedOrder: ["source", "track", "@flow"],
1867
+ },
1868
+
1869
+ wbr: {
1870
+ flow: true,
1871
+ phrasing: true,
1872
+ void: true,
1873
+ },
1874
+
1875
+ xmp: {
1876
+ deprecated: {
1877
+ documentation: "Use `<pre>` or `<code>` and escape content using HTML entities instead.",
1878
+ source: "html32",
1879
+ },
1880
+ },
1881
+ };