html-validate 6.7.1 → 6.9.1

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,1886 @@
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
+ menu: {
1055
+ flow: true,
1056
+ permittedContent: ["@script", "li"],
1057
+ },
1058
+
1059
+ meta: {
1060
+ metadata: true,
1061
+ void: true,
1062
+ attributes: {
1063
+ scheme: {
1064
+ deprecated: true,
1065
+ },
1066
+ },
1067
+ },
1068
+
1069
+ meter: {
1070
+ flow: true,
1071
+ phrasing: true,
1072
+ labelable: true,
1073
+ permittedContent: ["@phrasing"],
1074
+ permittedDescendants: [{ exclude: "meter" }],
1075
+ },
1076
+
1077
+ multicol: {
1078
+ deprecated: {
1079
+ message: "use CSS instead",
1080
+ documentation: "Use CSS columns instead.",
1081
+ source: "html5",
1082
+ },
1083
+ },
1084
+
1085
+ nav: {
1086
+ flow: true,
1087
+ sectioning: true,
1088
+ permittedContent: ["@flow"],
1089
+ permittedDescendants: [{ exclude: "main" }],
1090
+ },
1091
+
1092
+ nextid: {
1093
+ deprecated: {
1094
+ source: "html32",
1095
+ },
1096
+ },
1097
+
1098
+ nobr: {
1099
+ deprecated: {
1100
+ message: "use CSS instead",
1101
+ documentation: "Use CSS `white-space` property instead.",
1102
+ source: "non-standard",
1103
+ },
1104
+ },
1105
+
1106
+ noembed: {
1107
+ deprecated: {
1108
+ source: "non-standard",
1109
+ },
1110
+ },
1111
+
1112
+ noframes: {
1113
+ deprecated: {
1114
+ source: "html5",
1115
+ },
1116
+ },
1117
+
1118
+ noscript: {
1119
+ metadata: true,
1120
+ flow: true,
1121
+ phrasing: true,
1122
+ transparent: true,
1123
+ permittedDescendants: [{ exclude: "noscript" }],
1124
+ },
1125
+
1126
+ object: {
1127
+ flow: true,
1128
+ phrasing: true,
1129
+ embedded: true,
1130
+ interactive: ["hasAttribute", "usemap"],
1131
+ transparent: true,
1132
+ attributes: {
1133
+ align: {
1134
+ deprecated: true,
1135
+ },
1136
+ archive: {
1137
+ deprecated: true,
1138
+ },
1139
+ border: {
1140
+ deprecated: true,
1141
+ },
1142
+ classid: {
1143
+ deprecated: true,
1144
+ },
1145
+ code: {
1146
+ deprecated: true,
1147
+ },
1148
+ codebase: {
1149
+ deprecated: true,
1150
+ },
1151
+ codetype: {
1152
+ deprecated: true,
1153
+ },
1154
+ data: {
1155
+ enum: ["/.+/"],
1156
+ },
1157
+ datafld: {
1158
+ deprecated: true,
1159
+ },
1160
+ dataformatas: {
1161
+ deprecated: true,
1162
+ },
1163
+ datasrc: {
1164
+ deprecated: true,
1165
+ },
1166
+ declare: {
1167
+ deprecated: true,
1168
+ },
1169
+ hspace: {
1170
+ deprecated: true,
1171
+ },
1172
+ standby: {
1173
+ deprecated: true,
1174
+ },
1175
+ vspace: {
1176
+ deprecated: true,
1177
+ },
1178
+ },
1179
+ permittedContent: ["param", "@flow"],
1180
+ permittedOrder: ["param", "@flow"],
1181
+ },
1182
+
1183
+ ol: {
1184
+ flow: true,
1185
+ attributes: {
1186
+ compact: {
1187
+ deprecated: true,
1188
+ },
1189
+ reversed: {
1190
+ boolean: true,
1191
+ },
1192
+ type: {
1193
+ enum: ["a", "A", "i", "I", "1"],
1194
+ },
1195
+ },
1196
+ permittedContent: ["@script", "li"],
1197
+ },
1198
+
1199
+ optgroup: {
1200
+ implicitClosed: ["optgroup"],
1201
+ attributes: {
1202
+ disabled: {
1203
+ boolean: true,
1204
+ },
1205
+ },
1206
+ permittedContent: ["@script", "option"],
1207
+ },
1208
+
1209
+ option: {
1210
+ implicitClosed: ["option"],
1211
+ attributes: {
1212
+ dataformatas: {
1213
+ deprecated: true,
1214
+ },
1215
+ datasrc: {
1216
+ deprecated: true,
1217
+ },
1218
+ disabled: {
1219
+ boolean: true,
1220
+ },
1221
+ name: {
1222
+ deprecated: true,
1223
+ },
1224
+ selected: {
1225
+ boolean: true,
1226
+ },
1227
+ },
1228
+ permittedContent: [],
1229
+ },
1230
+
1231
+ output: {
1232
+ flow: true,
1233
+ phrasing: true,
1234
+ labelable: true,
1235
+ permittedContent: ["@phrasing"],
1236
+ },
1237
+
1238
+ p: {
1239
+ flow: true,
1240
+ implicitClosed: [
1241
+ "address",
1242
+ "article",
1243
+ "aside",
1244
+ "blockquote",
1245
+ "div",
1246
+ "dl",
1247
+ "fieldset",
1248
+ "footer",
1249
+ "form",
1250
+ "h1",
1251
+ "h2",
1252
+ "h3",
1253
+ "h4",
1254
+ "h5",
1255
+ "h6",
1256
+ "header",
1257
+ "hgroup",
1258
+ "hr",
1259
+ "main",
1260
+ "nav",
1261
+ "ol",
1262
+ "p",
1263
+ "pre",
1264
+ "section",
1265
+ "table",
1266
+ "ul",
1267
+ ],
1268
+ permittedContent: ["@phrasing"],
1269
+ attributes: {
1270
+ align: {
1271
+ deprecated: true,
1272
+ },
1273
+ },
1274
+ },
1275
+
1276
+ param: {
1277
+ void: true,
1278
+ attributes: {
1279
+ datafld: {
1280
+ deprecated: true,
1281
+ },
1282
+ type: {
1283
+ deprecated: true,
1284
+ },
1285
+ valuetype: {
1286
+ deprecated: true,
1287
+ },
1288
+ },
1289
+ },
1290
+
1291
+ picture: {
1292
+ flow: true,
1293
+ phrasing: true,
1294
+ embedded: true,
1295
+ permittedContent: ["@script", "source", "img"],
1296
+ permittedOrder: ["source", "img"],
1297
+ },
1298
+
1299
+ plaintext: {
1300
+ deprecated: {
1301
+ message: "use <pre> or CSS instead",
1302
+ documentation: "Use the `<pre>` element or use CSS to set a monospace font.",
1303
+ source: "html2",
1304
+ },
1305
+ },
1306
+
1307
+ pre: {
1308
+ flow: true,
1309
+ permittedContent: ["@phrasing"],
1310
+ attributes: {
1311
+ width: {
1312
+ deprecated: true,
1313
+ },
1314
+ },
1315
+ },
1316
+
1317
+ progress: {
1318
+ flow: true,
1319
+ phrasing: true,
1320
+ labelable: true,
1321
+ permittedContent: ["@phrasing"],
1322
+ permittedDescendants: [{ exclude: "progress" }],
1323
+ },
1324
+
1325
+ q: {
1326
+ flow: true,
1327
+ phrasing: true,
1328
+ permittedContent: ["@phrasing"],
1329
+ },
1330
+
1331
+ rb: {
1332
+ implicitClosed: ["rb", "rt", "rtc", "rp"],
1333
+ permittedContent: ["@phrasing"],
1334
+ },
1335
+
1336
+ rp: {
1337
+ implicitClosed: ["rb", "rt", "rtc", "rp"],
1338
+ permittedContent: ["@phrasing"],
1339
+ },
1340
+
1341
+ rt: {
1342
+ implicitClosed: ["rb", "rt", "rtc", "rp"],
1343
+ permittedContent: ["@phrasing"],
1344
+ },
1345
+
1346
+ rtc: {
1347
+ implicitClosed: ["rb", "rtc", "rp"],
1348
+ permittedContent: ["@phrasing", "rt"],
1349
+ },
1350
+
1351
+ ruby: {
1352
+ flow: true,
1353
+ phrasing: true,
1354
+ permittedContent: ["@phrasing", "rb", "rp", "rt", "rtc"],
1355
+ },
1356
+
1357
+ s: {
1358
+ flow: true,
1359
+ phrasing: true,
1360
+ permittedContent: ["@phrasing"],
1361
+ },
1362
+
1363
+ samp: {
1364
+ flow: true,
1365
+ phrasing: true,
1366
+ permittedContent: ["@phrasing"],
1367
+ },
1368
+
1369
+ script: {
1370
+ metadata: true,
1371
+ flow: true,
1372
+ phrasing: true,
1373
+ scriptSupporting: true,
1374
+ attributes: {
1375
+ async: {
1376
+ boolean: true,
1377
+ },
1378
+ crossorigin: {
1379
+ omit: true,
1380
+ enum: ["anonymous", "use-credentials"],
1381
+ },
1382
+ defer: {
1383
+ boolean: true,
1384
+ },
1385
+ event: {
1386
+ deprecated: true,
1387
+ },
1388
+ for: {
1389
+ deprecated: true,
1390
+ },
1391
+ integrity: {
1392
+ enum: ["/.+/"],
1393
+ },
1394
+ language: {
1395
+ deprecated: true,
1396
+ },
1397
+ nomodule: {
1398
+ boolean: true,
1399
+ },
1400
+ src: {
1401
+ enum: ["/.+/"],
1402
+ },
1403
+ },
1404
+ },
1405
+
1406
+ section: {
1407
+ flow: true,
1408
+ sectioning: true,
1409
+ permittedContent: ["@flow"],
1410
+ },
1411
+
1412
+ select: {
1413
+ flow: true,
1414
+ phrasing: true,
1415
+ interactive: true,
1416
+ labelable: true,
1417
+ attributes: {
1418
+ autofocus: {
1419
+ boolean: true,
1420
+ },
1421
+ disabled: {
1422
+ boolean: true,
1423
+ },
1424
+ multiple: {
1425
+ boolean: true,
1426
+ },
1427
+ required: {
1428
+ boolean: true,
1429
+ },
1430
+ size: {
1431
+ enum: ["/\\d+/"],
1432
+ },
1433
+ },
1434
+ permittedContent: ["@script", "datasrc", "datafld", "dataformatas", "option", "optgroup"],
1435
+ },
1436
+
1437
+ slot: {
1438
+ flow: true,
1439
+ phrasing: true,
1440
+ transparent: true,
1441
+ },
1442
+
1443
+ small: {
1444
+ flow: true,
1445
+ phrasing: true,
1446
+ permittedContent: ["@phrasing"],
1447
+ },
1448
+
1449
+ source: {
1450
+ void: true,
1451
+ },
1452
+
1453
+ spacer: {
1454
+ deprecated: {
1455
+ message: "use CSS instead",
1456
+ documentation: "Use CSS margin or padding instead.",
1457
+ source: "non-standard",
1458
+ },
1459
+ },
1460
+
1461
+ span: {
1462
+ flow: true,
1463
+ phrasing: true,
1464
+ permittedContent: ["@phrasing"],
1465
+ attributes: {
1466
+ datafld: {
1467
+ deprecated: true,
1468
+ },
1469
+ dataformatas: {
1470
+ deprecated: true,
1471
+ },
1472
+ datasrc: {
1473
+ deprecated: true,
1474
+ },
1475
+ },
1476
+ },
1477
+
1478
+ strike: {
1479
+ deprecated: {
1480
+ message: "use <del> or <s> instead",
1481
+ documentation: "Use the `<del>` or `<s>` element instead.",
1482
+ source: "html5",
1483
+ },
1484
+ },
1485
+
1486
+ strong: {
1487
+ flow: true,
1488
+ phrasing: true,
1489
+ permittedContent: ["@phrasing"],
1490
+ },
1491
+
1492
+ style: {
1493
+ metadata: true,
1494
+ },
1495
+
1496
+ sub: {
1497
+ flow: true,
1498
+ phrasing: true,
1499
+ permittedContent: ["@phrasing"],
1500
+ },
1501
+
1502
+ summary: {
1503
+ permittedContent: ["@phrasing", "@heading"],
1504
+ },
1505
+
1506
+ sup: {
1507
+ flow: true,
1508
+ phrasing: true,
1509
+ permittedContent: ["@phrasing"],
1510
+ },
1511
+
1512
+ svg: {
1513
+ flow: true,
1514
+ foreign: true,
1515
+ phrasing: true,
1516
+ embedded: true,
1517
+ },
1518
+
1519
+ table: {
1520
+ flow: true,
1521
+ permittedContent: ["@script", "caption?", "colgroup", "tbody", "tfoot?", "thead?", "tr"],
1522
+ permittedOrder: ["caption", "colgroup", "thead", "tbody", "tr", "tfoot"],
1523
+ attributes: {
1524
+ align: {
1525
+ deprecated: true,
1526
+ },
1527
+ background: {
1528
+ deprecated: true,
1529
+ },
1530
+ bgcolor: {
1531
+ deprecated: true,
1532
+ },
1533
+ bordercolor: {
1534
+ deprecated: true,
1535
+ },
1536
+ cellpadding: {
1537
+ deprecated: true,
1538
+ },
1539
+ cellspacing: {
1540
+ deprecated: true,
1541
+ },
1542
+ dataformatas: {
1543
+ deprecated: true,
1544
+ },
1545
+ datapagesize: {
1546
+ deprecated: true,
1547
+ },
1548
+ datasrc: {
1549
+ deprecated: true,
1550
+ },
1551
+ frame: {
1552
+ deprecated: true,
1553
+ },
1554
+ rules: {
1555
+ deprecated: true,
1556
+ },
1557
+ summary: {
1558
+ deprecated: true,
1559
+ },
1560
+ width: {
1561
+ deprecated: true,
1562
+ },
1563
+ },
1564
+ },
1565
+
1566
+ tbody: {
1567
+ implicitClosed: ["tbody", "tfoot"],
1568
+ permittedContent: ["@script", "tr"],
1569
+ attributes: {
1570
+ align: {
1571
+ deprecated: true,
1572
+ },
1573
+ background: {
1574
+ deprecated: true,
1575
+ },
1576
+ char: {
1577
+ deprecated: true,
1578
+ },
1579
+ charoff: {
1580
+ deprecated: true,
1581
+ },
1582
+ valign: {
1583
+ deprecated: true,
1584
+ },
1585
+ },
1586
+ },
1587
+
1588
+ td: {
1589
+ flow: true,
1590
+ implicitClosed: ["td", "th"],
1591
+ attributes: {
1592
+ align: {
1593
+ deprecated: true,
1594
+ },
1595
+ axis: {
1596
+ deprecated: true,
1597
+ },
1598
+ background: {
1599
+ deprecated: true,
1600
+ },
1601
+ bgcolor: {
1602
+ deprecated: true,
1603
+ },
1604
+ char: {
1605
+ deprecated: true,
1606
+ },
1607
+ charoff: {
1608
+ deprecated: true,
1609
+ },
1610
+ colspan: {
1611
+ enum: ["/\\d+/"],
1612
+ },
1613
+ height: {
1614
+ deprecated: true,
1615
+ },
1616
+ nowrap: {
1617
+ deprecated: true,
1618
+ },
1619
+ rowspan: {
1620
+ enum: ["/\\d+/"],
1621
+ },
1622
+ scope: {
1623
+ deprecated: true,
1624
+ },
1625
+ valign: {
1626
+ deprecated: true,
1627
+ },
1628
+ width: {
1629
+ deprecated: true,
1630
+ },
1631
+ },
1632
+ permittedContent: ["@flow"],
1633
+ },
1634
+
1635
+ template: {
1636
+ metadata: true,
1637
+ flow: true,
1638
+ phrasing: true,
1639
+ scriptSupporting: true,
1640
+ },
1641
+
1642
+ textarea: {
1643
+ flow: true,
1644
+ phrasing: true,
1645
+ interactive: true,
1646
+ labelable: true,
1647
+ attributes: {
1648
+ autocomplete: {
1649
+ enum: ["on", "off"],
1650
+ },
1651
+ autofocus: {
1652
+ boolean: true,
1653
+ },
1654
+ cols: {
1655
+ enum: ["/\\d+/"],
1656
+ },
1657
+ datafld: {
1658
+ deprecated: true,
1659
+ },
1660
+ datasrc: {
1661
+ deprecated: true,
1662
+ },
1663
+ disabled: {
1664
+ boolean: true,
1665
+ },
1666
+ maxlength: {
1667
+ enum: ["/\\d+/"],
1668
+ },
1669
+ minlength: {
1670
+ enum: ["/\\d+/"],
1671
+ },
1672
+ readonly: {
1673
+ boolean: true,
1674
+ },
1675
+ required: {
1676
+ boolean: true,
1677
+ },
1678
+ rows: {
1679
+ enum: ["/\\d+/"],
1680
+ },
1681
+ spellcheck: {
1682
+ enum: ["true", "default", "false"],
1683
+ },
1684
+ wrap: {
1685
+ enum: ["hard", "soft"],
1686
+ },
1687
+ },
1688
+ permittedContent: [],
1689
+ },
1690
+
1691
+ tfoot: {
1692
+ implicitClosed: ["tbody"],
1693
+ permittedContent: ["@script", "tr"],
1694
+ attributes: {
1695
+ align: {
1696
+ deprecated: true,
1697
+ },
1698
+ background: {
1699
+ deprecated: true,
1700
+ },
1701
+ char: {
1702
+ deprecated: true,
1703
+ },
1704
+ charoff: {
1705
+ deprecated: true,
1706
+ },
1707
+ valign: {
1708
+ deprecated: true,
1709
+ },
1710
+ },
1711
+ },
1712
+
1713
+ th: {
1714
+ flow: true,
1715
+ implicitClosed: ["td", "th"],
1716
+ attributes: {
1717
+ align: {
1718
+ deprecated: true,
1719
+ },
1720
+ axis: {
1721
+ deprecated: true,
1722
+ },
1723
+ background: {
1724
+ deprecated: true,
1725
+ },
1726
+ bgcolor: {
1727
+ deprecated: true,
1728
+ },
1729
+ char: {
1730
+ deprecated: true,
1731
+ },
1732
+ charoff: {
1733
+ deprecated: true,
1734
+ },
1735
+ colspan: {
1736
+ enum: ["/\\d+/"],
1737
+ },
1738
+ height: {
1739
+ deprecated: true,
1740
+ },
1741
+ nowrap: {
1742
+ deprecated: true,
1743
+ },
1744
+ rowspan: {
1745
+ enum: ["/\\d+/"],
1746
+ },
1747
+ scope: {
1748
+ required: true,
1749
+ enum: ["row", "col", "rowgroup", "colgroup", "auto"],
1750
+ },
1751
+ valign: {
1752
+ deprecated: true,
1753
+ },
1754
+ width: {
1755
+ deprecated: true,
1756
+ },
1757
+ },
1758
+ permittedContent: ["@flow"],
1759
+ permittedDescendants: [{ exclude: ["header", "footer", "@sectioning", "@heading"] }],
1760
+ },
1761
+
1762
+ thead: {
1763
+ implicitClosed: ["tbody", "tfoot"],
1764
+ permittedContent: ["@script", "tr"],
1765
+ attributes: {
1766
+ align: {
1767
+ deprecated: true,
1768
+ },
1769
+ background: {
1770
+ deprecated: true,
1771
+ },
1772
+ char: {
1773
+ deprecated: true,
1774
+ },
1775
+ charoff: {
1776
+ deprecated: true,
1777
+ },
1778
+ valign: {
1779
+ deprecated: true,
1780
+ },
1781
+ },
1782
+ },
1783
+
1784
+ time: {
1785
+ flow: true,
1786
+ phrasing: true,
1787
+ permittedContent: ["@phrasing"],
1788
+ },
1789
+
1790
+ title: {
1791
+ metadata: true,
1792
+ permittedContent: [],
1793
+ },
1794
+
1795
+ tr: {
1796
+ implicitClosed: ["tr"],
1797
+ permittedContent: ["@script", "td", "th"],
1798
+ attributes: {
1799
+ align: {
1800
+ deprecated: true,
1801
+ },
1802
+ background: {
1803
+ deprecated: true,
1804
+ },
1805
+ bgcolor: {
1806
+ deprecated: true,
1807
+ },
1808
+ char: {
1809
+ deprecated: true,
1810
+ },
1811
+ charoff: {
1812
+ deprecated: true,
1813
+ },
1814
+ valign: {
1815
+ deprecated: true,
1816
+ },
1817
+ },
1818
+ },
1819
+
1820
+ track: {
1821
+ void: true,
1822
+ },
1823
+
1824
+ tt: {
1825
+ deprecated: {
1826
+ documentation:
1827
+ "Use a more semantically correct element such as `<code>`, `<var>` or `<pre>`.",
1828
+ source: "html4",
1829
+ },
1830
+ },
1831
+
1832
+ u: {
1833
+ flow: true,
1834
+ phrasing: true,
1835
+ permittedContent: ["@phrasing"],
1836
+ },
1837
+
1838
+ ul: {
1839
+ flow: true,
1840
+ permittedContent: ["@script", "li"],
1841
+ attributes: {
1842
+ compact: {
1843
+ deprecated: true,
1844
+ },
1845
+ type: {
1846
+ deprecated: true,
1847
+ },
1848
+ },
1849
+ },
1850
+
1851
+ var: {
1852
+ flow: true,
1853
+ phrasing: true,
1854
+ permittedContent: ["@phrasing"],
1855
+ },
1856
+
1857
+ video: {
1858
+ flow: true,
1859
+ phrasing: true,
1860
+ embedded: true,
1861
+ interactive: ["hasAttribute", "controls"],
1862
+ transparent: ["@flow"],
1863
+ attributes: {
1864
+ preload: {
1865
+ omit: true,
1866
+ enum: ["none", "metadata", "auto"],
1867
+ },
1868
+ },
1869
+ permittedContent: ["@flow", "track", "source"],
1870
+ permittedDescendants: [{ exclude: ["audio", "video"] }],
1871
+ permittedOrder: ["source", "track", "@flow"],
1872
+ },
1873
+
1874
+ wbr: {
1875
+ flow: true,
1876
+ phrasing: true,
1877
+ void: true,
1878
+ },
1879
+
1880
+ xmp: {
1881
+ deprecated: {
1882
+ documentation: "Use `<pre>` or `<code>` and escape content using HTML entities instead.",
1883
+ source: "html32",
1884
+ },
1885
+ },
1886
+ };