index.html
86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang=en-US>
<head>
<title>HTML5 differences from HTML4</title>
<style type="text/css">
.note { margin-left:2em; font-weight:bold; font-style:italic; color:green }
p.note::before { content:"Note: " }
dfn { font-style:normal; font-weight:bold }
code { color:orangered }
code :link, code :visited { color:inherit }
pre code { color:inherit }
pre strong { color:inherit; background:#ffa }
</style>
<link href="http://www.w3.org/StyleSheets/TR/W3C-WD" rel=stylesheet>
<body><!--
Editor's checklist for stuff to fix for publication:
* Previous Versions links
* Changelog headings
-->
<div class=head>
<p><a href="http://www.w3.org/"><img alt=W3C height=48
src="http://www.w3.org/Icons/w3c_home" width=72></a></p>
<h1 id=html5-diff>HTML5 differences from HTML4</h1>
<h2 class="no-num no-toc" id=w3c-doctype>W3C Working Draft 25 May 2011</h2>
<dl>
<dt>This Version:
<dd><a
href="http://www.w3.org/TR/2011/WD-html5-diff-20110525/">http://www.w3.org/TR/2011/WD-html5-diff-20110525/</a>
<dt>Latest Published Version:
<dd><a
href="http://www.w3.org/TR/html5-diff/">http://www.w3.org/TR/html5-diff/</a>
<dt>Latest Editor's Draft:
<dd><a
href="http://dev.w3.org/html5/html4-differences/">http://dev.w3.org/html5/html4-differences/</a>
<dt>Previous Versions:
<dd><a
href="http://www.w3.org/TR/2011/WD-html5-diff-20110405/">http://www.w3.org/TR/2011/WD-html5-diff-20110405/</a>
<dd><a
href="http://www.w3.org/TR/2011/WD-html5-diff-20110113/">http://www.w3.org/TR/2011/WD-html5-diff-20110113/</a>
<dd><a
href="http://www.w3.org/TR/2010/WD-html5-diff-20101019/">http://www.w3.org/TR/2010/WD-html5-diff-20101019/</a>
<dd><a
href="http://www.w3.org/TR/2010/WD-html5-diff-20100624/">http://www.w3.org/TR/2010/WD-html5-diff-20100624/</a>
<dd><a
href="http://www.w3.org/TR/2010/WD-html5-diff-20100304/">http://www.w3.org/TR/2010/WD-html5-diff-20100304/</a>
<dd><a
href="http://www.w3.org/TR/2009/WD-html5-diff-20090825/">http://www.w3.org/TR/2009/WD-html5-diff-20090825/</a>
<dd><a
href="http://www.w3.org/TR/2009/WD-html5-diff-20090423/">http://www.w3.org/TR/2009/WD-html5-diff-20090423/</a>
<dd><a
href="http://www.w3.org/TR/2009/WD-html5-diff-20090212/">http://www.w3.org/TR/2009/WD-html5-diff-20090212/</a>
<dd><a
href="http://www.w3.org/TR/2008/WD-html5-diff-20080610/">http://www.w3.org/TR/2008/WD-html5-diff-20080610/</a>
<dd><a
href="http://www.w3.org/TR/2008/WD-html5-diff-20080122/">http://www.w3.org/TR/2008/WD-html5-diff-20080122/</a>
<dt>Editors:
<dd><a href="http://annevankesteren.nl/">Anne van Kesteren</a> (<a
href="http://www.opera.com/">Opera Software ASA</a>) <<a
href="mailto:annevk@opera.com">annevk@opera.com</a>>
<dd>Simon Pieters (<a href="http://www.opera.com/">Opera Software
ASA</a>) <<a href="mailto:simonp@opera.com">simonp@opera.com</a>>
</dl>
<p class=copyright><a
href="http://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a>
© 2011 <a href="http://www.w3.org/"><abbr title="World Wide Web
Consortium">W3C</abbr></a><sup>®</sup> (<a
href="http://www.csail.mit.edu/"><abbr title="Massachusetts Institute of
Technology">MIT</abbr></a>, <a href="http://www.ercim.eu/"><abbr
title="European Research Consortium for Informatics and
Mathematics">ERCIM</abbr></a>, <a
href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a
href="http://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>,
<a
href="http://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a>
and <a
href="http://www.w3.org/Consortium/Legal/copyright-documents">document
use</a> rules apply.</p>
</div>
<hr>
<h2 class="no-num no-toc" id=abstract>Abstract</h2>
<p>HTML5 defines the fifth major revision of the core language of the World
Wide Web, HTML. "HTML5 differences from HTML4" describes the differences
between HTML4 and HTML5 and provides some of the rationale for the
changes. This document may not provide accurate information as the HTML5
specification is still actively in development. When in doubt, always
check the HTML5 specification itself. [<cite><a
href="#ref-html5">HTML5</a></cite>]
<h2 class="no-num no-toc" id=sotd>Status of this Document</h2>
<p><em>This section describes the status of this document at the time of
its publication. Other documents may supersede this document. A list of
current W3C publications and the latest revision of this technical report
can be found in the <a href="http://www.w3.org/TR/">W3C technical reports
index</a> at http://www.w3.org/TR/.</em>
<p>This is the 25 May 2011 W3C Working Draft produced by the <a
href="http://www.w3.org/html/wg/">HTML Working Group</a>, part of the <a
href="http://www.w3.org/MarkUp/Activity">HTML Activity</a>. The Working
Group intends to publish this document as a <a
href="http://www.w3.org/2005/10/Process-20051014/#WGNote">Working Group
Note</a> to accompany the <a href="http://www.w3.org/TR/html5/">HTML5
specification</a>. The appropriate forum for comments is <a
href="http://www.w3.org/Bugs/Public/enter_bug.cgi?product=HTML%20WG&component=HTML5%20differences%20from%20HTML4%20%28editor:%20Anne%20van%20Kesteren%29">W3C
Bugzilla</a>.
Alternatively, submit comments to <a href="mailto:public-html-comments@w3.org@w3.org">public-html-comments@w3.org</a>
(<a href="mailto:public-html-comments-request@w3.org?subject=subscribe">subscribe</a>,
<a href="http://lists.w3.org/Archives/Public/public-html-comments/">archives</a>)
and arrangements will be made to transpose the comments to the bug database.
<p>Publication as a Working Draft does not imply endorsement by the W3C
Membership. This is a draft document and may be updated, replaced or
obsoleted by other documents at any time. It is inappropriate to cite this
document as other than work in progress.
<p>This document was produced by a group operating under the <a
href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5 February
2004 W3C Patent Policy</a>. W3C maintains a <a
href="http://www.w3.org/2004/01/pp-impl/40318/status"
rel=disclosure>public list of any patent disclosures</a> made in
connection with the deliverables of the group; that page also includes
instructions for disclosing a patent. An individual who has actual
knowledge of a patent which the individual believes contains <a
href="http://www.w3.org/Consortium/Patent-Policy-20040205/#def-essential">Essential
Claim(s)</a> must disclose the information in accordance with <a
href="http://www.w3.org/Consortium/Patent-Policy-20040205/#sec-Disclosure">section
6 of the W3C Patent Policy</a>.
<h2 class="no-num no-toc" id=toc>Table of Contents</h2>
<!--begin-toc-->
<ul class=toc>
<li><a href="#introduction"><span class=secno>1. </span>Introduction</a>
<ul class=toc>
<li><a href="#open-issues"><span class=secno>1.1. </span>Open Issues</a>
<li><a href="#backwards-compatible"><span class=secno>1.2.
</span>Backwards Compatible</a>
<li><a href="#development-model"><span class=secno>1.3.
</span>Development Model</a>
</ul>
<li><a href="#syntax"><span class=secno>2. </span>Syntax</a>
<ul class=toc>
<li><a href="#character-encoding"><span class=secno>2.1.
</span>Character Encoding</a>
<li><a href="#doctype"><span class=secno>2.2. </span>The DOCTYPE</a>
<li><a href="#mathml-svg"><span class=secno>2.3. </span>MathML and
SVG</a>
<li><a href="#syntax-misc"><span class=secno>2.4.
</span>Miscellaneous</a>
</ul>
<li><a href="#language"><span class=secno>3. </span>Language</a>
<ul class=toc>
<li><a href="#new-elements"><span class=secno>3.1. </span>New
Elements</a>
<li><a href="#new-attributes"><span class=secno>3.2. </span>New
Attributes</a>
<li><a href="#changed-elements"><span class=secno>3.3. </span>Changed
Elements</a>
<li><a href="#changed-attributes"><span class=secno>3.4. </span>Changed
Attributes</a>
<li><a href="#absent-elements"><span class=secno>3.5. </span>Absent
Elements</a>
<li><a href="#absent-attributes"><span class=secno>3.6. </span>Absent
Attributes</a>
</ul>
<li><a href="#apis"><span class=secno>4. </span>APIs</a>
<ul class=toc>
<li><a href="#htmldocument-extensions"><span class=secno>4.1.
</span>Extensions to <code>HTMLDocument</code></a>
<li><a href="#htmlelement-extensions"><span class=secno>4.2.
</span>Extensions to <code>HTMLElement</code></a>
</ul>
<li><a href="#changelog"><span class=secno>5. </span>HTML5 Changelogs</a>
<ul class=toc>
<li><a href="#changes-2011-04-05"><span class=secno>5.1. </span>Changes
since 5 April 2011</a>
<li><a href="#changes-2011-01-13"><span class=secno>5.2. </span>Changes
from 13 January 2011 to 5 April 2011</a>
<li><a href="#changes-2010-10-19"><span class=secno>5.3. </span>Changes
from 19 October 2010 to 13 January 2011</a>
<li><a href="#changes-2010-06-24"><span class=secno>5.4. </span>Changes
from 24 June 2010 to 19 October 2010</a>
<li><a href="#changes-2010-03-04"><span class=secno>5.5. </span>Changes
from 4 March 2010 to 24 June 2010</a>
<li><a href="#changes-2009-08-25"><span class=secno>5.6. </span>Changes
from 25 August 2009 to 4 March 2010</a>
<li><a href="#changes-2009-04-23"><span class=secno>5.7. </span>Changes
from 23 April 2009 to 25 August 2009</a>
<li><a href="#changes-2009-02-12"><span class=secno>5.8. </span>Changes
from 12 February 2009 to 23 April 2009</a>
<li><a href="#changes-2008-06-10"><span class=secno>5.9. </span>Changes
from 10 June 2008 to 12 February 2009</a>
<li><a href="#changes-2008-01-22"><span class=secno>5.10. </span>Changes
from 22 January 2008 to 10 June 2008</a>
</ul>
<li class=no-num><a href="#acknowledgments">Acknowledgments</a>
<li class=no-num><a href="#references">References</a>
</ul>
<!--end-toc-->
<h2 id=introduction><span class=secno>1. </span>Introduction</h2>
<p>HTML has been in continuous evolution since it was introduced to the
Internet in the early 1990s. Some features were introduced in
specifications; others were introduced in software releases. In some
respects, implementations and author practices have converged with each
other and with specifications and standards, but in other ways, they
continue to diverge.
<p>HTML4 became a W3C Recommendation in 1997. While it continues to serve
as a rough guide to many of the core features of HTML, it does not provide
enough information to build implementations that interoperate with each
other and, more importantly, with a critical mass of deployed content. The
same goes for XHTML1, which defines an XML serialization for HTML4, and
DOM Level 2 HTML, which defines JavaScript APIs for both HTML and XHTML.
HTML5 will replace these documents. [<cite><a
href="#ref-dom2html">DOM2HTML</a></cite>] [<cite><a
href="#ref-html4">HTML4</a></cite>] [<cite><a
href="#ref-xhtml1">XHTML1</a></cite>]
<p>The HTML5 draft reflects an effort, started in 2004, to study
contemporary HTML implementations and deployed content. The draft:
<ol>
<li>Defines a single language called HTML5 which can be written in HTML
syntax and in XML syntax.
<li>Defines detailed processing models to foster interoperable
implementations.
<li>Improves markup for documents.
<li>Introduces markup and APIs for emerging idioms, such as Web
applications.
</ol>
<h3 id=open-issues><span class=secno>1.1. </span>Open Issues</h3>
<p><strong>HTML5 is still a draft.</strong> The contents of HTML5, as well
as the contents of this document which depend on HTML5, are still being
discussed on the HTML Working Group and WHATWG mailing lists. The open
issues are linked from the HTML5 draft.
<h3 id=backwards-compatible><span class=secno>1.2. </span>Backwards
Compatible</h3>
<p>HTML5 is defined in a way that it is backwards compatible with the way
user agents handle deployed content. To keep the authoring language
relatively simple for authors several elements and attributes are not
included as outlined in the other sections of this document, such as
presentational elements that are better dealt with using CSS.
<p>User agents, however, will always have to support these older elements
and attributes and this is why the HTML5 specification clearly separates
requirements for authors and user agents. For instance, this means that
authors cannot use the <code>isindex</code> or the <code>plaintext</code>
element, but user agents are required to support them in a way that is
compatible with how these elements need to behave for compatibility with
deployed content.
<p>Since HTML5 has separate conformance requirements for authors and user
agents there is no longer a need for marking features "deprecated".
<h3 id=development-model><span class=secno>1.3. </span>Development Model</h3>
<p>The HTML5 specification will not be considered finished before there are
at least two complete implementations of the specification. A test suite
will be used to measure completeness of the implementations. This approach
differs from previous versions of HTML, where the final specification
would typically be approved by a committee before being actually
implemented. The goal of this change is to ensure that the specification
is implementable, and usable by authors once it is finished.
<h2 id=syntax><span class=secno>2. </span>Syntax</h2>
<p>HTML5 defines an HTML syntax that is compatible with HTML4 and XHTML1
documents published on the Web, but is not compatible with the more
esoteric SGML features of HTML4, such as <a
href="http://www.w3.org/TR/1999/REC-html401-19991224/appendix/notes.html#h-B.3.6">processing
instructions</a> and <a
href="http://www.w3.org/TR/1999/REC-html401-19991224/appendix/notes.html#h-B.3.7">shorthand
markup</a> as these are not supported by most user agents. Documents using
the HTML syntax are almost always served with the <code>text/html</code>
media type.
<p>HTML5 also defines detailed parsing rules (including "error handling")
for this syntax which are largely compatible with popular implementations.
User agents must use these rules for resources that have the
<code>text/html</code> media type. Here is an example document that
conforms to the HTML syntax:
<pre><code><!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Example document</title>
</head>
<body>
<p>Example paragraph</p>
</body>
</html></code></pre>
<p>HTML5 also defines a <code>text/html-sandboxed</code> media type for
documents using the HTML syntax. This can be used when hosting untrusted
content.
<p>The other syntax that can be used for HTML5 is XML. This syntax is
compatible with XHTML1 documents and implementations. Documents using this
syntax need to be served with an XML media type and elements need to be
put in the <code>http://www.w3.org/1999/xhtml</code> namespace following
the rules set forth by the XML specifications. [<cite><a
href="#ref-xml">XML</a></cite>]
<p>Below is an example document that conforms to the XML syntax of HTML5.
Note that XML documents must be served with an XML media type such as
<code>application/xhtml+xml</code> or <code>application/xml</code>.
<pre><code><?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Example document</title>
</head>
<body>
<p>Example paragraph</p>
</body>
</html></code></pre>
<h3 id=character-encoding><span class=secno>2.1. </span>Character Encoding</h3>
<p>For the HTML syntax of HTML5, authors have three means of setting the
character encoding:
<ul>
<li>At the transport level. By using the HTTP <code>Content-Type</code>
header for instance.
<li>Using a Unicode Byte Order Mark (BOM) character at the start of the
file. This character provides a signature for the encoding used.
<li>Using a <code>meta</code> element with a <code>charset</code>
attribute that specifies the encoding within the first 1024 bytes of the
document. E.g. <code><meta charset="UTF-8"></code> could be used to
specify the UTF-8 encoding. This replaces the need for <code><meta
http-equiv="Content-Type" content="text/html; charset=UTF-8"></code>
although that syntax is still allowed.
</ul>
<p>For the XML syntax, authors have to use the rules as set forth in the
XML specifications to set the character encoding.
<h3 id=doctype><span class=secno>2.2. </span>The DOCTYPE</h3>
<p>The HTML syntax of HTML5 requires a DOCTYPE to be specified to ensure
that the browser renders the page in standards mode. The DOCTYPE has no
other purpose and is therefore optional for XML. Documents with an XML
media type are always handled in standards mode. [<cite><a
href="#ref-doctype">DOCTYPE</a></cite>]
<p>The DOCTYPE declaration is <code><!DOCTYPE html></code> and is
case-insensitive in the HTML syntax. DOCTYPEs from earlier versions of
HTML were longer because the HTML language was SGML-based and therefore
required a reference to a DTD. With HTML5 this is no longer the case and
the DOCTYPE is only needed to enable standards mode for documents written
using the HTML syntax. Browsers already do this for <code><!DOCTYPE
html></code>.
<h3 id=mathml-svg><span class=secno>2.3. </span>MathML and SVG</h3>
<p>The HTML syntax of HTML5 allows for MathML and SVG elements to be used
inside a document. E.g. a very simple document using some of the minimal
syntax features could look like:
<pre><code><!doctype html>
<title>SVG in text/html</title>
<p>
A green circle:
<strong><svg> <circle r="50" cx="50" cy="50" fill="green"/> </svg></strong>
</p></code></pre>
<p>More complex combinations are also possible. E.g. with the SVG
<code>foreignObject</code> element you could nest MathML, HTML, or both
inside an SVG fragment that is itself inside HTML.
<h3 id=syntax-misc><span class=secno>2.4. </span>Miscellaneous</h3>
<p>There are a few other syntax changes worthy of mentioning:
<ul>
<li>HTML now has native support for IRIs, though they can only be fully
used if the document encoding is UTF-8 or UTF-16.
<li>The <code>lang</code> attribute takes the empty string in addition to
a valid language identifier, just like <code>xml:lang</code> does in XML.
</ul>
<h2 id=language><span class=secno>3. </span>Language</h2>
<p>This section is split up in several subsections to more clearly
illustrate the various differences there are between HTML4 and HTML5.
<h3 id=new-elements><span class=secno>3.1. </span>New Elements</h3>
<p>The following elements have been introduced for better structure:
<ul>
<li>
<p><a
href="http://www.w3.org/TR/html5/sections.html#the-section-element"><code>section</code></a>
represents a generic document or application section. It can be <a
href="http://www.w3.org/TR/html5/sections.html#headings-and-sections"
title="Headings and sections">used together</a> with the
<code>h1</code>, <code>h2</code>, <code>h3</code>, <code>h4</code>,
<code>h5</code>, and <code>h6</code> elements to indicate the document
structure.
<li>
<p><a
href="http://www.w3.org/TR/html5/sections.html#the-article-element"><code>article</code></a>
represents an independent piece of content of a document, such as a blog
entry or newspaper article.
<li>
<p><a
href="http://www.w3.org/TR/html5/sections.html#the-aside-element"><code>aside</code></a>
represents a piece of content that is only slightly related to the rest
of the page.
<li>
<p><a
href="http://www.w3.org/TR/html5/sections.html#the-hgroup-element"><code>hgroup</code></a>
represents the header of a section.
<li>
<p><a
href="http://www.w3.org/TR/html5/sections.html#the-header-element"><code>header</code></a>
represents a group of introductory or navigational aids.
<li>
<p><a
href="http://www.w3.org/TR/html5/sections.html#the-footer-element"><code>footer</code></a>
represents a footer for a section and can contain information about the
author, copyright information, etc.
<li>
<p><a
href="http://www.w3.org/TR/html5/sections.html#the-nav-element"><code>nav</code></a>
represents a section of the document intended for navigation.
<li>
<p><a
href="http://www.w3.org/TR/html5/grouping-content.html#the-figure-element"><code>figure</code></a>
represents a piece of self-contained flow content, typically referenced
as a single unit from the main flow of the document.</p>
<pre><code><figure>
<video src="example.webm" controls></video>
<figcaption>Example</figcaption>
</figure></code></pre>
<p><a
href="http://www.w3.org/TR/html5/grouping-content.html#the-figcaption-element"><code>figcaption</code></a>
can be used as caption (it is optional).</p>
</ul>
<p>Then there are several other new elements:
<ul>
<li>
<p><a
href="http://www.w3.org/TR/2011/WD-html5-20110525/the-iframe-element.html#the-video-element"><code>video</code></a>
and <a
href="http://www.w3.org/TR/2011/WD-html5-20110525/the-iframe-element.html#the-audio-element"><code>audio</code></a>
for multimedia content. Both provide an API so application authors can
script their own user interface, but there is also a way to trigger a
user interface provided by the user agent. <a
href="http://www.w3.org/TR/2011/WD-html5-20110525/the-iframe-element.html#the-source-element"><code>source</code></a>
elements are used together with these elements if there are multiple
streams available of different types.
<li>
<p><a
href="http://www.w3.org/TR/2011/WD-html5-20110525/the-iframe-element.html#the-track-element"><code>track</code></a>
provides text tracks for the <code>video</code> element.
<li>
<p><a
href="http://www.w3.org/TR/html5/the-iframe-element.html#the-embed-element"><code>embed</code></a>
is used for plugin content.
<li>
<p><a
href="http://www.w3.org/TR/html5/text-level-semantics.html#the-mark-element"><code>mark</code></a>
represents a run of text in one document marked or highlighted for
reference purposes, due to its relevance in another context.
<li>
<p><a
href="http://www.w3.org/TR/html5/the-button-element.html#the-progress-element"><code>progress</code></a>
represents a completion of a task, such as downloading or when
performing a series of expensive operations.
<li>
<p><a
href="http://www.w3.org/TR/html5/the-button-element.html#the-meter-element"><code>meter</code></a>
represents a measurement, such as disk usage.
<li>
<p><a
href="http://www.w3.org/TR/html5/text-level-semantics.html#the-time-element"><code>time</code></a>
represents a date and/or time.
<li>
<p><a
href="http://dev.w3.org/html5/spec/text-level-semantics.html#the-ruby-element"><code>ruby</code></a>,
<a
href="http://dev.w3.org/html5/spec/text-level-semantics.html#the-rt-element"><code>rt</code></a>
and <a
href="http://dev.w3.org/html5/spec/text-level-semantics.html#the-rp-element"><code>rp</code></a>
allow for marking up ruby annotations.
<li>
<p><a
href="http://dev.w3.org/html5/spec/text-level-semantics.html#the-bdi-element"><code>bdi</code></a>
represents a span of text that is to be isolated from its surroundings
for the purposes of bidirectional text formatting.
<li>
<p><a
href="http://dev.w3.org/html5/spec/text-level-semantics.html#the-wbr-element"><code>wbr</code></a>
represents a line break opportunity.
<li>
<p><a
href="http://www.w3.org/TR/html5/the-canvas-element.html#the-canvas-element"><code>canvas</code></a>
is used for rendering dynamic bitmap graphics on the fly, such as graphs
or games.
<li>
<p><a
href="http://www.w3.org/TR/2011/WD-html5-20110525/interactive-elements.html#the-command-element"><code>command</code></a>
represents a command the user can invoke.
<li>
<p><a
href="http://www.w3.org/TR/html5/interactive-elements.html#the-details-element"><code>details</code></a>
represents additional information or controls which the user can obtain
on demand. The <a
href="http://www.w3.org/TR/html5/interactive-elements.html#the-summary-element"><code>summary</code></a>
element provides its summary, legend, or caption.
<li>
<p><a
href="http://dev.w3.org/html5/spec/the-button-element.html#the-datalist-element"><code>datalist</code></a>
together with the a new <code>list</code> attribute for
<code>input</code> can be used to make comboboxes:</p>
<pre><code><input <strong>list="browsers"</strong>>
<datalist <strong>id="browsers"</strong>>
<option value="Safari">
<option value="Internet Explorer">
<option value="Opera">
<option value="Firefox">
</datalist></code></pre>
<li>
<p><a
href="http://dev.w3.org/html5/spec/the-button-element.html#the-keygen-element"><code>keygen</code></a>
represents control for key pair generation.
<li>
<p><a
href="http://dev.w3.org/html5/spec/the-button-element.html#the-output-element"><code>output</code></a>
represents some type of output, such as from a calculation done through
scripting.
</ul>
<p>The <code>input</code> element's <code>type</code> attribute now has the
following new values:
<ul>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#telephone-state"><code>tel</code>
</a>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#text-state-and-search-state"><code>search</code></a>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#url-state"><code>url</code>
</a>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#e-mail-state"><code>email</code></a>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#date-and-time-state"><code>datetime</code></a>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#date-state"><code>date</code></a>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#month-state"><code>month</code></a>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#week-state"><code>week</code></a>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#time-state"><code>time</code></a>
<li><a
href="http://www.w3.org/TR/html5/states-of-the-type-attribute.html#local-date-and-time-state"><code>datetime-local</code></a>
<li><a
href="http://www.w3.org/TR/html5/number-state.html#number-state"><code>number</code></a>
<li><a
href="http://www.w3.org/TR/html5/number-state.html#range-state"><code>range</code></a>
<li><a
href="http://www.w3.org/TR/html5/number-state.html#color-state"><code>color</code></a>
</ul>
<p>The idea of these new types is that the user agent can provide the user
interface, such as a calendar date picker or integration with the user's
address book, and submit a defined format to the server. It gives the user
a better experience as his input is checked before sending it to the
server meaning there is less time to wait for feedback.
<h3 id=new-attributes><span class=secno>3.2. </span>New Attributes</h3>
<p>HTML5 has introduced several new attributes to various elements that
were already part of HTML4:
<ul>
<li>
<p>The <code>a</code> and <code>area</code> elements now have a
<code>media</code> attribute for consistency with the <code>link</code>
element.
<li>
<p>The <code>area</code> element, for consistency with the <code>a</code>
and <code>link</code> elements, now also has the <code>hreflang</code>,
<code>type</code> and <code>rel</code> attributes.
<li>
<p>The <code>base</code> element can now have a <code>target</code>
attribute as well, mainly for consistency with the <code>a</code>
element. (This is already widely supported.)
<li>
<p>The <code>meta</code> element has a <code>charset</code> attribute now
as this was already widely supported and provides a nice way to specify
the <a href="#character-encoding">character encoding</a> for the
document.
<li>
<p>A new <code>autofocus</code> attribute can be specified on the
<code>input</code> (except when the <code>type</code> attribute is
<code>hidden</code>), <code>select</code>, <code>textarea</code> and
<code>button</code> elements. It provides a declarative way to focus a
form control during page load. Using this feature should enhance the
user experience as the user can turn it off if the user does not like
it, for instance.
<li>
<p>A new <code>placeholder</code> attribute can be specified on the
<code>input</code> and <code>textarea</code> elements. It represents a
hint intended to aid the user with data entry.</p>
<pre><code><input type=email <strong>placeholder="a@b.com"</strong>></code></pre>
<li>
<p>The new <code>form</code> attribute for <code>input</code>,
<code>output</code>, <code>select</code>, <code>textarea</code>,
<code>button</code>, <code>label</code>, <code>object</code> and
<code>fieldset</code> elements allows for controls to be associated with
a form. These elements can now be placed anywhere on a page, not just as
descendants of the <code>form</code> element, and still be associated
with a <code>form</code>.</p>
<pre><code><label>Email:
<input type=email <strong>form=foo</strong> name=email>
</label>
<form <strong>id=foo</strong>></form></code></pre>
<li>
<p>The new <code>required</code> attribute applies to <code>input</code>
(except when the <code>type</code> attribute is <code>hidden</code>,
<code>image</code> or some button type such as <code>submit</code>),
<code>select</code> and <code>textarea</code>. It indicates that the
user has to fill in a value in order to submit the form. For
<code>select</code>, the first <code>option</code> element has to be a
placeholder with an empty value.
<pre><code><label>Color: <select name=color <strong>required</strong>>
<option <strong>value=""</strong>>Choose one
<option>Red
<option>Green
<option>Blue
</select></label></code></pre>
<li>
<p>The <code>fieldset</code> element now allows the <code>disabled</code>
attribute which disables all descendant controls when specified, and the
<code>name</code> attribute which can be used for script access.
<li>
<p>The <code>input</code> element has several new attributes to specify
constraints: <code>autocomplete</code>, <code>min</code>,
<code>max</code>, <code>multiple</code>, <code>pattern</code> and
<code>step</code>. As mentioned before it also has a new
<code>list</code> attribute which can be used together with the
<code>datalist</code> element. It also now has the <code>width</code>
and <code>height</code> attributes to specify the dimensions of the
image when using <code>type=image</code>.
<li>
<p>The <code>input</code> and <code>textarea</code> elements have a new
attribute named <code>dirname</code> that causes the directionality of
the control as set by the user to be submitted as well.
<li>
<p>The <code>textarea</code> element also has two new attributes,
<code>maxlength</code> and <code>wrap</code> which control max input
length and submitted line wrapping behavior, respectively.
<li>
<p>The <code>form</code> element has a <code>novalidate</code> attribute
that can be used to disable form validation submission (i.e. the form
can always be submitted).
<li>
<p>The <code>input</code> and <code>button</code> elements have
<code>formaction</code>, <code>formenctype</code>,
<code>formmethod</code>, <code>formnovalidate</code>, and
<code>formtarget</code> as new attributes. If present, they override the
<code>action</code>, <code>enctype</code>, <code>method</code>,
<code>novalidate</code>, and <code>target</code> attributes on the
<code>form</code> element.</p>
<li>
<p>The <code>menu</code> element has two new attributes:
<code>type</code> and <code>label</code>. They allow the element to
transform into a menu as found in typical user interfaces as well as
providing for context menus in conjunction with the global
<code>contextmenu</code> attribute.
<li>
<p>The <code>style</code> element has a new <code>scoped</code> attribute
which can be used to enable scoped style sheets. Style rules within such
a <code>style</code> element only apply to the local tree.
<li>
<p>The <code>script</code> element has a new attribute called
<code>async</code> that influences script loading and execution.
<li>
<p>The <code>html</code> element has a new attribute called
<code>manifest</code> that points to an application cache manifest used
in conjunction with the API for offline Web applications.
<li>
<p>The <code>link</code> element has a new attribute called
<code>sizes</code>. It can be used in conjunction with the
<code>icon</code> relationship (set through the <code>rel</code>
attribute; can be used for e.g. favicons) to indicate the size of the
referenced icon. Thus allowing for icons of distinct dimensions.
<li>
<p>The <code>ol</code> element has a new attribute called
<code>reversed</code>. When present, it indicates that the list order is
descending.
<li>
<p>The <code>iframe</code> element has three new attributes called
<code>sandbox</code>, <code>seamless</code>, and <code>srcdoc</code>
which allow for sandboxing content, e.g. blog comments.
</ul>
<p>Several attributes from HTML4 now apply to all elements. These are
called global attributes: <code>accesskey</code>, <code>class</code>,
<code>dir</code>, <code>id</code>, <code>lang</code>, <code>style</code>,
<code>tabindex</code> and <code>title</code>. Additionally, XHTML 1.0 only
allowed <code>xml:space</code> on some elements, which is now allowed on
all elements in XHTML documents.
<p>There are also several new global attributes:
<ul>
<li>The <code>contenteditable</code> attribute indicates that the element
is an editable area. The user can change the contents of the element and
manipulate the markup.
<li>The <code>contextmenu</code> attribute can be used to point to a
context menu provided by the author.
<li>The <code>data-<var>*</var></code> collection of author-defined
attributes. Authors can define any attribute they want as long as they
prefix it with <code>data-</code> to avoid clashes with future versions
of HTML. The only requirement on these attributes is that they are not
used for user agent extensions.
<li>The <code>draggable</code> and <code>dropzone</code> attributes can be
used together with the new drag & drop API.
<li>The <code>hidden</code> attribute indicates that an element is not
yet, or is no longer, relevant.
<li>The <code>role</code> and <code>aria-<var>*</var></code> collection
attributes which can be used to instruct assistive technology.
<li>The <code>spellcheck</code> attribute allows for hinting whether
content can be checked for spelling or not.
</ul>
<p>HTML5 also makes all event handler attributes from HTML4, which take the
form <code>on<var>event-name</var></code>, global attributes and adds
several new event handler attributes for new events it defines. E.g. the
<code>play</code> event which is used by the API for the media elements
(<code>video</code> and <code>audio</code>).
<h3 id=changed-elements><span class=secno>3.3. </span>Changed Elements</h3>
<p>These elements have slightly modified meanings in HTML5 to better
reflect how they are used on the Web or to make them more useful:
<ul>
<li>
<p>The <code>a</code> element without an <code>href</code> attribute now
represents a placeholder for where a link otherwise might have been
placed. It can also contain flow content rather than being restricted to
phrasing content.
<li>
<p>The <code>address</code> element is now scoped by the new concept of
sectioning.
<li>
<p>The <code>b</code> element now represents a span of text to which
attention is being drawn for utilitarian purposes without conveying any
extra importance and with no implication of an alternate voice or mood,
such as key words in a document abstract, product names in a review,
actionable words in interactive text-driven software, or an article
lede.
<li>
<p>The <code>cite</code> element now solely represents the title of a
work (e.g. a book, a paper, an essay, a poem, a score, a song, a script,
a film, a TV show, a game, a sculpture, a painting, a theatre
production, a play, an opera, a musical, an exhibition, a legal case
report, etc). Specifically the example in HTML4 where it is used to mark
up the name of a person is no longer considered conforming.
<li>
<p>The <code>dl</code> element now represents an association list of
name-value groups, and is no longer said to be appropriate for dialogue.
<li>
<p>The <code>head</code> element no longer allows the <code>object</code>
element as child.
<li>
<p>The <code>hr</code> element now represents a paragraph-level thematic
break.
<li>
<p>The <code>i</code> element now represents a span of text in an
alternate voice or mood, or otherwise offset from the normal prose in a
manner indicating a different quality of text, such as a taxonomic
designation, a technical term, an idiomatic phrase from another
language, a thought, or a ship name in Western texts.
<li>
<p>For the <code>label</code> element the browser should no longer move
focus from the label to the control unless such behavior is standard for
the underlying platform user interface.
<li>
<p>The <code>menu</code> element is redefined to be useful for toolbars
and context menus.
<li>
<p>The <code>s</code> element now represents contents that are no longer
accurate or no longer relevant.
<li>
<p>The <code>small</code> element now represents side comments such as
small print.
<li>
<p>The <code>strong</code> element now represents importance rather than
strong emphasis.
<li>
<p>The <code>u</code> element now represents a span of text with an
unarticulated, though explicitly rendered, non-textual annotation, such
as labeling the text as being a proper name in Chinese text (a Chinese
proper name mark), or labeling the text as being misspelt.
</ul>
<h3 id=changed-attributes><span class=secno>3.4. </span>Changed Attributes</h3>
<p>The <code>value</code> attribute for the <code>li</code> element is no
longer deprecated as it is not presentational. The same goes for the
<code>start</code> attribute of the <code>ol</code> element.
<p>The <code>target</code> attribute for the <code>a</code> and
<code>area</code> elements is no longer deprecated, as it is useful in Web
applications, e.g. in conjunction with <code>iframe</code>.
<p>The <code>type</code> attribute on <code>script</code> and
<code>style</code> is no longer required if the scripting language is
ECMAScript and the styling language is CSS respectively.
<p>The <code>border</code> attribute on <code>table</code> only allows the
values "1" and the empty string.
<p>The following attributes are allowed but authors are discouraged from
using them and instead strongly encouraged to use an alternative solution:
<ul>
<li>
<p>The <code>border</code> attribute on <code>img</code>. It is required
to have the value "<code>0</code>" when present. Authors can use CSS
instead.
<li>
<p>The <code>language</code> attribute on <code>script</code>. It is
required to have the value "<code>JavaScript</code>" (case-insensitive)
when present and cannot conflict with the <code>type</code> attribute.
Authors can simply omit it as it has no useful function.
<li>
<p>The <code>name</code> attribute on <code>a</code>. Authors can use the
<code>id</code> attribute instead.
<li>
<p>The <code>summary</code> attribute on <code>table</code>. The HTML5
draft defines several alternative solutions.
<li>
<p>The <code>width</code> and <code>height</code> attributes on
<code>img</code> and other elements are no longer allowed to contain
percentages.
</ul>
<h3 id=absent-elements><span class=secno>3.5. </span>Absent Elements</h3>
<p>The elements in this section are not to be used by authors. User agents
will still have to support them and various sections in HTML5 define how.
E.g. the obsolete <code>isindex</code> element is handled by the parser
section.
<p>The following elements are not in HTML5 because their effect is purely
presentational and their function is better handled by CSS:
<ul>
<li><code>basefont</code>
<li><code>big</code>
<li><code>center</code>
<li><code>font</code>
<li><code>strike</code>
<li><code>tt</code>
</ul>
<p>The following elements are not in HTML5 because using them damages
usability and accessibility:
<ul>
<li><code>frame</code>
<li><code>frameset</code>
<li><code>noframes</code>
</ul>
<p>The following elements are not included because they have not been used
often, created confusion, or their function can be handled by other
elements:
<ul>
<li><code>acronym</code> is not included because it has created a lot of
confusion. Authors are to use <code>abbr</code> for abbreviations.
<li><code>applet</code> has been obsoleted in favor of
<code>object</code>.
<li><code>isindex</code> usage can be replaced by usage of form controls.
<li><code>dir</code> has been obsoleted in favor of <code>ul</code>.
</ul>
<p>Finally the <code>noscript</code> element is only conforming in the HTML
syntax. It is not included in the XML syntax as its usage relies on an
HTML parser.
<h3 id=absent-attributes><span class=secno>3.6. </span>Absent Attributes</h3>
<p>Some attributes from HTML4 are no longer allowed in HTML5. The
specification defines how user agents should process them in legacy
documents, but authors must not use them and they will not validate.
<p>HTML5 <a
href="http://www.w3.org/TR/html5/obsolete.html#non-conforming-features"
title="Non-conforming features">has advice</a> on what you can use
instead.
<ul>
<li><code>rev</code> and <code>charset</code> attributes on
<code>link</code> and <code>a</code>.
<li><code>shape</code> and <code>coords</code> attributes on
<code>a</code>.
<li><code>longdesc</code> attribute on <code>img</code> and
<code>iframe</code>.
<li><code>target</code> attribute on <code>link</code>.
<li><code>nohref</code> attribute on <code>area</code>.
<li><code>profile</code> attribute on <code>head</code>.
<li><code>version</code> attribute on <code>html</code>.
<li><code>name</code> attribute on <code>img</code> (use <code>id</code>
instead).
<li><code>scheme</code> attribute on <code>meta</code>.
<li><code>archive</code>, <code>classid</code>, <code>codebase</code>,
<code>codetype</code>, <code>declare</code> and <code>standby</code>
attributes on <code>object</code>.
<li><code>valuetype</code> and <code>type</code> attributes on
<code>param</code>.
<li><code>axis</code> and <code>abbr</code> attributes on <code>td</code>
and <code>th</code>.
<li><code>scope</code> attribute on <code>td</code>.
<li><code>summary</code> attribute on <code>table</code>.
</ul>
<p>In addition, HTML5 has none of the presentational attributes that were
in HTML4 as their functions are better handled by CSS:
<ul>
<li><code>align</code> attribute on <code>caption</code>,
<code>iframe</code>, <code>img</code>, <code>input</code>,
<code>object</code>, <code>legend</code>, <code>table</code>,
<code>hr</code>, <code>div</code>, <code>h1</code>, <code>h2</code>,
<code>h3</code>, <code>h4</code>, <code>h5</code>, <code>h6</code>,
<code>p</code>, <code>col</code>, <code>colgroup</code>,
<code>tbody</code>, <code>td</code>, <code>tfoot</code>, <code>th</code>,
<code>thead</code> and <code>tr</code>.
<li><code>alink</code>, <code>link</code>, <code>text</code> and
<code>vlink</code> attributes on <code>body</code>.
<li><code>background</code> attribute on <code>body</code>.
<li><code>bgcolor</code> attribute on <code>table</code>, <code>tr</code>,
<code>td</code>, <code>th</code> and <code>body</code>.
<li><code>border</code> attribute on <code>object</code>.
<li><code>cellpadding</code> and <code>cellspacing</code> attributes on
<code>table</code>.
<li><code>char</code> and <code>charoff</code> attributes on
<code>col</code>, <code>colgroup</code>, <code>tbody</code>,
<code>td</code>, <code>tfoot</code>, <code>th</code>, <code>thead</code>
and <code>tr</code>.
<li><code>clear</code> attribute on <code>br</code>.
<li><code>compact</code> attribute on <code>dl</code>, <code>menu</code>,
<code>ol</code> and <code>ul</code>.
<li><code>frame</code> attribute on <code>table</code>.
<li><code>frameborder</code> attribute on <code>iframe</code>.
<li><code>height</code> attribute on <code>td</code> and <code>th</code>.
<li><code>hspace</code> and <code>vspace</code> attributes on
<code>img</code> and <code>object</code>.
<li><code>marginheight</code> and <code>marginwidth</code> attributes on
<code>iframe</code>.
<li><code>noshade</code> attribute on <code>hr</code>.
<li><code>nowrap</code> attribute on <code>td</code> and <code>th</code>.
<li><code>rules</code> attribute on <code>table</code>.
<li><code>scrolling</code> attribute on <code>iframe</code>.
<li><code>size</code> attribute on <code>hr</code>.
<li><code>type</code> attribute on <code>li</code>, <code>ol</code> and
<code>ul</code>.
<li><code>valign</code> attribute on <code>col</code>,
<code>colgroup</code>, <code>tbody</code>, <code>td</code>,
<code>tfoot</code>, <code>th</code>, <code>thead</code> and
<code>tr</code>.
<li><code>width</code> attribute on <code>hr</code>, <code>table</code>,
<code>td</code>, <code>th</code>, <code>col</code>, <code>colgroup</code>
and <code>pre</code>.
</ul>
<h2 id=apis><span class=secno>4. </span>APIs</h2>
<p>HTML5 introduces a number of APIs that help in creating Web
applications. These can be used together with the new elements introduced
for applications:
<ul>
<li>An API for playing of video and audio which can be used with the new
<code>video</code> and <code>audio</code> elements.
<li>An API that enables offline Web applications.
<li>An API that allows a Web application to register itself for certain
protocols or media types.
<li>Editing API in combination with a new global
<code>contenteditable</code> attribute.
<li>Drag & drop API in combination with a <code>draggable</code>
attribute.
<li>API that exposes the history and allows pages to add to it to prevent
breaking the back button.
</ul>
<h3 id=htmldocument-extensions><span class=secno>4.1. </span>Extensions to
<code>HTMLDocument</code></h3>
<p>HTML5 has extended the <code>HTMLDocument</code> interface from DOM
Level 2 HTML in a number of ways. The interface is now implemented on
<em>all</em> objects implementing the <code>Document</code> interface so
it stays meaningful in a compound document context. It also has several
noteworthy new members:
<ul>
<li>
<p><code>getElementsByClassName()</code> to select elements by their
class name. The way this method is defined will allow it to work for any
content with <code>class</code> attributes and a <code>Document</code>
object such as SVG and MathML.
<li>
<p><code>innerHTML</code> as an easy way to parse and serialize an HTML
or XML document. This attribute was previously only available on
<code>HTMLElement</code> in Web browsers and not part of any standard.
<li>
<p><code>activeElement</code> and <code>hasFocus</code> to determine
which element is currently focused and whether the <code>Document</code>
has focus respectively.
</ul>
<h3 id=htmlelement-extensions><span class=secno>4.2. </span>Extensions to
<code>HTMLElement</code></h3>
<p>The <code>HTMLElement</code> interface has also gained several
extensions in HTML5:
<ul>
<li>
<p><code>getElementsByClassName()</code> which is basically a scoped
version of the one found on <code>HTMLDocument</code>.
<li>
<p><code>innerHTML</code> as found in Web browsers today. It is also
defined to work in XML context (when it is used in an XML document).
<li>
<p><code>classList</code> is a convenient accessor for
<code>className</code>. The object it returns, exposes methods
(<code>contains()</code>, <code>add()</code>, <code>remove()</code>, and
<code>toggle()</code>) for manipulating the element's classes. The
<code>a</code>, <code>area</code> and <code>link</code> elements have a
similar attribute called <code>relList</code> that provides the same
functionality for the <code>rel</code> attribute.
</ul>
<h2 id=changelog><span class=secno>5. </span>HTML5 Changelogs</h2>
<p>The changelogs in this section indicate what has been changed between
publications of the HTML5 drafts. Rationale for changes can be found in
the <a
href="http://lists.w3.org/Archives/Public/public-html/"><code>public-html@w3.org</code></a>
and <a
href="http://lists.whatwg.org/pipermail/whatwg-whatwg.org/"><code>whatwg@whatwg.org</code></a>
mailing list archives, and the <a
href="http://blog.whatwg.org/category/weekly-review">WHATWG Weekly</a>
series of blog posts. More fundamental rationale is being collected on the
WHATWG <a href="http://wiki.whatwg.org/wiki/Rationale">Rationale</a> wiki
page. Many editorial and minor technical changes are not included in these
changelogs. Implementors are strongly encouraged to follow the development
of the main specification on a frequent basis so they become aware of all
changes that affect them early on.
<p>The changes in the changelogs are in rough chronological order.</p>
<!-- rev 6139 - 6142 -->
<!--<li>The <code>cross-origin</code> attribute has been added to <code>img</code>, <code>video</code> and <code>audio</code> to use CORS. [<cite><span>CORS</span></cite>]
<li>The <code>external</code> attribute has been added on <code>window</code> and has the members <code>AddSearchProvider()</code> and <code>IsSearchProviderInstalled()</code>.-->
<h3 id=changes-2011-04-05><span class=secno>5.1. </span>Changes since 5
April 2011</h3>
<!-- rev 5974 - 6139 -->
<ul>
<li>Support for the <code>javascript:</code> scheme in <code>img</code>,
<code>object</code>, CSS, etc, has been dropped.
<li>The <code>toBlob()</code> method has been added to
<code>canvas</code>.
<li>The <code>drawFocusRing()</code> method on the <code>canvas</code> 2d
context has been split into two methods,
<code>drawSystemFocusRing()</code> and
<code>drawCustomFocusRing()</code>.
<li>The <code>values</code> attribute on <code>PropertyNodeList</code> has
been replaced with a <code>getValues()</code> method.
<li>The <code>select</code> event has been specified.
<li>The <code>selectDirection</code> IDL attribute has been added to
<code>input</code> and <code>textarea</code>.
<li>The <code>:enabled</code> and <code>:disabled</code> pseudo-classes
now match <code>fieldset</code>, and the <code>:indeterminate</code>
pseudo-class can now match <code>progress</code>.
<li>The <code>getKind()</code> method has been added to
<code>TrackList</code>.
<li>The <code>MediaController</code> API and the <code>mediagroup</code>
attribute have been added to synchronize playback of media elements.
<li>Some ARIA defaults have changed, and it is now invalid to specify ARIA
attributes that match the defaults.
<li>The <code>getName()</code> method on <code>TrackList</code> was
renamed to <code>getLabel()</code>.
<li>The <code>border</code> attribute on <code>table</code> is now
conforming.
<li>The <code>u</code> element is now conforming.
<li>The <code>summary</code> attribute on <code>table</code> is now
non-conforming.
<li>The <code>audio</code> attribute on <code>video</code> was changed to
a boolean <code>muted</code> attribute.
<li>The <code>Content-Language</code> meta pragma is now non-conforming.
</ul>
<h3 id=changes-2011-01-13><span class=secno>5.2. </span>Changes from 13
January 2011 to 5 April 2011</h3>
<!-- rev 5779 - 5974 -->
<ul>
<li>The <code>pushState</code> and <code>replaceState</code> features have
been changed based on implementation feedback in Firefox, and
<code>history.state</code> has been introduced.
<li>The <code>tracks</code> IDL attribute on media elements has been
renamed to <code>textTracks</code>.
<li>Event handler content attributes now support ECMAScript strict mode.
<li>The <code>forminput</code> and <code>formchange</code> events, and the
<code>dispatchFormInput()</code> and <code>dispatchFormChange()</code>
methods have been dropped.
<li>The <code>rel</code> keywords <code>archives</code>, <code>up</code>,
<code>last</code>, <code>index</code>, <code>first</code> and related
synonyms have been dropped.
<li>Removing a media element from the DOM and inserting it again in the
same script now doesn't pause the media element.
<li>The <code>video</code> element's letterboxing rules are now specified
in terms of CSS 'object-fit'.
<li>Cross-origin fonts now don't leak information about the font when
drawn on a <code>canvas</code>.
<li>The character encoding declaration is now allowed to be within the
first 1024 bytes instead of the first 512 bytes.
<li>The <code>onerror</code> event handler on <code>window</code> is now
invoked for compile-time script errors as well as runtime errors.
<li>Script-inserted <code>script</code> elements now have
<code>async</code> default to <code>true</code>, which can be set to
<code>false</code> to make the scripts execute in insertion order.
<li>The <code>atob()</code> and <code>btoa()</code> methods have been
specified.
<li>The suggested file extension for application cache manifest files has
been changed from <code>.manifest</code> to <code>.appcache</code>.
<li>The <code>action</code> and <code>formaction</code> attributes are no
longer allowed to have the empty string as value.
</ul>
<h3 id=changes-2010-10-19><span class=secno>5.3. </span>Changes from 19
October 2010 to 13 January 2011</h3>
<!-- rev 5643 - 5779 -->
<ul>
<li>Drag and drop model was refined.
<li>A new global <code>dropzone</code> attribute was added.
<li>A new <code>bdi</code> element was added to aid with user-generated
content that may have bidi implications.
<li>The <code>dir</code> attribute gained a new "<code>auto</code>" value.
<li>A <code>dirname</code> attribute was added to <code>input</code>
elements. When specified the directionality as specified by the user will
be submitted to the server as well.
<li>A new <code>track</code> element and associated TextTrack API were
added for video text tracks.
</ul>
<p>The <code>getSelection()</code> API moved to a separate <a
href="http://html5.org/specs/dom-range.html">DOM Range</a> draft.
Similarly <code>UndoManager</code> has been removed from the W3C copy of
HTML5 for now as it is not ready yet.
<h3 id=changes-2010-06-24><span class=secno>5.4. </span>Changes from 24
June 2010 to 19 October 2010</h3>
<!-- rev 5108 - 5642 -->
<ul>
<li>Numerous changes to the HTML parsing algorithm based on implementation
feedback.
<li>The <code>hidden</code> attribute now works for table-related
elements.
<li>The <code>canvas</code> <code>getContext()</code> method is now
defined to be able to handle multiple contexts better.
<li>The media elements' <code>startTime</code> IDL attribute was renamed
to <code>initialTime</code> and <code>startOffsetTime</code> was added.
<li>The <code>prefetch</code> link relationship can now be used on
<code>a</code> elements.
<li>The <code>datetime</code> attribute of <code>ins</code> and
<code>del</code> no longer requires a time to be specified.
<li>Using PUT and DELETE as HTTP methods for the <code>form</code> element
is no longer supported.
<li>The <code>s</code> element is no longer deprecated.
<li>The <code>video</code> element has a new <code>audio</code> attribute.
</ul>
<p>Per usual, lots of other minor fixes have been made as well.
<h3 id=changes-2010-03-04><span class=secno>5.5. </span>Changes from 4
March 2010 to 24 June 2010</h3>
<!-- rev 4647 - 5107 -->
<ul>
<li>The <code>ping</code> attribute has been removed from the W3C version
of HTML5.
<li>The <code>title</code> element is optional for <code>iframe</code>
<code>srcdoc</code> documents and other scenarios where a title is
already available. As is the case with email.
<li><code>keywords</code> is now a standard metadata name for the
<code>meta</code> element.
<li>The <code>allow-top-navigation</code> value has been added for the
<code>sandbox</code> attribute on the <code>iframe</code> element. It
allows the embedded content to navigate its parent when specified.
<li>The <code>wbr</code> element has been added.
<li>The <code>alternate</code> keyword for the <code>rel</code> attribute
of the <code>link</code> element can now be used to point to feeds again,
even if the feed is not an alternative for the document.
<li>The HTML to Atom mapping has been removed from the W3C version of
HTML5.
</ul>
<p>In addition lots of minor changes, clarifications, and fixes have been
made to the document.
<h3 id=changes-2009-08-25><span class=secno>5.6. </span>Changes from 25
August 2009 to 4 March 2010</h3>
<!-- since rev 3673 -->
<ul>
<li>The <code>dialog</code> element has been removed. A section with
advice on how to mark up conversations has effectively replaced it.
<li><code>document.head</code> has been introduced to provide convenient
access to the <code>head</code> element from script.
<li>The link type <code title="">feed</code> has been removed. <code
title=rel-alternate>alternate</code> with specific media types is to be
used instead.
<li><code>createHTMLDocument()</code> has been introduced as API to allow
easy creation of HTML documents.
<li>Both the <code>meter</code> and <code>progress</code> elements no
longer have "magic" processing of their contents because it could not be
made to work internationally.
<li>The <code>meter</code> and <code>progress</code> elements, as well as
the <code>output</code> element, can now be labeled using the
<code>label</code> element.
<li>A new media type, <code>text/html-sandboxed</code>, was introduced to
allow hosting of potentially hostile content without it causing harm.
<li>A <code>srcdoc</code> attribute for the <code>iframe</code> element
was introduced to allow embedding of potentially hostile content inline.
It is expected to be used together with the <code>sandbox</code> and
<code>seamless</code> attributes.
<li>The <code>figure</code> element now uses a new element
<code>figcaption</code> rather than <code>legend</code> because people
want to use HTML5 long before it reaches W3C Recommendation.
<li>The <code>details</code> element now uses a new element
<code>summary</code> for exactly the same reason.
<li>The <code>autobuffer</code> attribute on media elements was renamed to
<code>preload</code>.
</ul>
<p>A whole lot of other smaller issues have also been resolved. The above
list summarizes what is thought to be of primary interest to authors.
<p>In addition to all of the above, Microdata, the 2D context API for
<code>canvas</code>, and Web Messaging (<code>postMessage()</code> API)
have been split into their own drafts at the W3C (the WHATWG still
publishes a version of HTML5 that includes them):
<ul>
<li><a href="http://dev.w3.org/html5/md/">HTML Microdata</a>
<li><a href="http://dev.w3.org/html5/2dcontext/">HTML Canvas 2D
Context</a>
<li><a href="http://dev.w3.org/html5/postmsg/">HTML5 Web Messaging</a>
</ul>
<p>Specific microdata vocabularies are gone altogether in the W3C draft of
HTML5 and are not published as a separate draft. The WHATWG draft of HTML5
still includes them.
<h3 id=changes-2009-04-23><span class=secno>5.7. </span>Changes from 23
April 2009 to 25 August 2009</h3>
<!-- since rev 2975 -->
<ul>
<li>When the <code>time</code> element is empty user agents have to render
the time in a locale-specific manner.
<li>The <code>load</code> event is dispatched at <code>Window</code>, but
now has <code>Document</code> as its target.
<li><code>pushState()</code> now affects the <code>Referer</code> (sic)
header.
<li><code>onundo</code> and <code>onredo</code> are now on
<code>Window</code>.
<li>Media elements now have a <code>startTime</code> member that indicates
where the current resource starts.
<li><code>header</code> has been renamed to <code>hgroup</code> and a new
<code>header</code> element has been introduced.
<li><code>createImageData()</code> now also takes <code>ImageData</code>
objects.
<li><code>createPattern()</code> can now take a <code>video</code> element
as argument too.
<li>The <code>footer</code> element is no longer allowed in
<code>header</code> and <code>header</code> is not allowed in
<code>address</code> or <code>footer</code>.
<li>A new control has been introduced: <code><input type="tel"></code>
<li>The Command API now works for all elements.
<li><code>accesskey</code> is now properly defined.
<li><code>section</code> and <code>article</code> now take a
<code>cite</code> attribute.
<li>A new feature called Microdata has been introduced which allows people
to embed custom data structures in their HTML documents.
<li>Using the Microdata model three predefined vocabularies have also been
included: vCard, vEvent, and a model for licensing.
<li>Drag and drop has been updated to work with the Microdata model.
<li>The <a href="http://hsivonen.iki.fi/last-html-quirk/">last of the
parsing quirks</a> has been defined.</li>
<!-- don't kill my easter egg -->
<li><code>textLength</code> has been added as member of the
<code>textarea</code> element.
<li>The <code>rp</code> element now takes phrasing content rather than a
single character.
<li><code>location.reload()</code> is now defined.
<li>The <code>hashchange</code> event now fires asynchronously.
<li>Rules for compatibility with XPath 1.0 and XSLT 1.0 have been added.
<li>The <code>spellcheck</code> IDL attribute now maps to a
<code>DOMString</code>.
<li><code>hasFeature()</code> support has been reduced to a minimum.
<li>The <code>Audio()</code> constructor sets the <code>autobuffer</code>
attribute.
<li>The <code>td</code> element is no longer allowed in
<code>thead</code>.
<li>The <code>input</code> element and <code>DataTransfer</code> object
now have a <code>files</code> IDL attribute.
<li>The <code>datagrid</code> and <code>bb</code> have been removed due to
their design not being agreed upon.
<li>The cue range API has been removed from the media elements.
<li>Support for WAI-ARIA has been integrated.
</ul>
<p>On top of this list quite a few minor clarifications, typos, issues
specific to implementors, and other small problems have been resolved.
<p>In addition, the following parts of HTML5 have been taken out and will
likely be further developed at the IETF:
<ul>
<li>Definition of URLs.
<li>Definition of Content-Type sniffing.
</ul>
<h3 id=changes-2009-02-12><span class=secno>5.8. </span>Changes from 12
February 2009 to 23 April 2009</h3>
<ul>
<li>A new global attribute called <code>spellcheck</code> has been added.
<li>Defined that ECMAScript <code>this</code> in the global object returns
a <code>WindowProxy</code> object rather than the <code>Window</code>
object.
<li>The <code>value</code> IDL attribute for <code>input</code> elements
in the File Upload state is now defined.
<li>Definition of <code>designMode</code> was changed to be more in line
with legacy implementations.
<li>The <code>drawImage()</code> method of the 2D drawing API can now take
a <code>video</code> element as well.
<li>The way media elements load resources has been changed.
<li><code>document.domain</code> is now IPv6-compatible.
<li>The <code>video</code> element gained an <code>autobuffer</code>
boolean attribute that serves as a hint.
<li>You are now allowed to specify the <code>meta</code> element with a
<code>charset</code> attribute in XML documents if the value of that
attribute matches the encoding of the document. (Note that it does not
specify the value, it is just a talisman.)
<li>The <code>bufferingRate</code> and <code>bufferingThrottled</code>
members of media elements have been removed.
<li>The media element resource selection algorithm is now asynchronous.
<li>The <code>postMessage()</code> API now takes an array of
<code>MessagePort</code> objects rather than just one.
<li>The second argument of the <code>add()</code> method on the
<code>select</code> element and the <code>options</code> member of the
<code>select</code> element is now optional.
<li>The <code>action</code>, <code>enctype</code>, <code>method</code>,
<code>novalidate</code>, and <code>target</code> attributes on
<code>input</code> and <code>button</code> elements have been renamed to
<code>formaction</code>, <code>formenctype</code>,
<code>formmethod</code>, <code>formnovalidate</code>, and
<code>formtarget</code>.
<li>A "storage mutex" concept has been added to deal with separate pages
trying to change a storage object (<code>document.cookie</code> and
<code>localStorage</code>) at the same time. The <code>Navigator</code>
gained a <code>getStorageUpdates()</code> method to allow it to be
explicitly released.
<li>A syntax for SVG similar to MathML is now defined so that SVG can be
included in <code>text/html</code> resources.
<li>The <code>placeholder</code> attribute has been added to the
<code>textarea</code> element.
<li>Added a <code>keygen</code> element for key pair generation.
<li>The <code>datagrid</code> element was revised to make the API more
asynchronous and allow for unloaded parts of the grid.
</ul>
<p>In addition, several parts of HTML5 have been taken out and will be
further developed by the Web Applications Working Group as standalone
specifications:
<ul>
<li><a href="http://dev.w3.org/html5/websockets/">WebSocket API</a>
<li><a
href="http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol">WebSocket
protocol</a>
<li><a href="http://dev.w3.org/html5/eventsource/">Server-Sent Events</a>
<li><a href="http://dev.w3.org/html5/webstorage/">Web Storage</a>
(<code>localStorage</code> and <code>sessionStorage</code>)
<li><a href="http://dev.w3.org/html5/webdatabase/">Web SQL Database</a>
</ul>
<h3 id=changes-2008-06-10><span class=secno>5.9. </span>Changes from 10
June 2008 to 12 February 2009</h3>
<ul>
<li>The <code>data</code> member of <code>ImageData</code> objects has
been changed from an array to a <code>CanvasPixelArray</code> object.
<li>Shadows are now required from implementations of the
<code>canvas</code> element and its API.
<li>Security model for <code>canvas</code> is clarified.
<li>Various changes to the processing model of <code>canvas</code> have
been made in response to implementation and author feedback. E.g.
clarifying what happens when NaN and Infinity are passed and fixing the
definitions of <code>arc()</code> and <code>arcTo()</code>.
<li><code>innerHTML</code> in XML was slightly changed to improve
round-tripping.
<li>The <code>toDataURL()</code> method on the <code>canvas</code> element
now supports setting a quality level when the media type argument is
<code>image/jpeg</code>.
<li>The <code>poster</code> attribute of the <code>video</code> element
now affects its intrinsic dimensions.
<li>The behavior of the <code>type</code> attribute of the
<code>link</code> element has been clarified.
<li>Sniffing is now allowed for <code>link</code> when the expected type
is an image.
<li>A section on URLs is introduced dealing with how URL values are to be
interpreted and what exactly authors are required to do. Every feature of
the specification that uses URLs has been reworded to take the new URL
section into account.
<li>It is now explicit that the <code>href</code> attribute of the
<code>base</code> element does not depend on <code>xml:base</code>.
<li>It is now defined what the behavior should be when the base URL
changes.
<li>URL decomposition IDL attributes are now more aligned with Internet
Explorer.
<li>The <code>xmlns</code> attribute with the value
<code>http://www.w3.org/1999/xhtml</code> is now allowed on all HTML
elements.
<li><code>data-<var>*</var></code> attributes and custom attributes on the
<code>embed</code> element now have to match the XML <code>Name</code>
production and cannot contain a colon.
<li>WebSocket API is introduced for bidirectional communication with a
server.
<li>The default value of <code>volume</code> on media elements is now 1.0
rather than 0.5.
<li><code>event-source</code> was renamed to <code>eventsource</code>
because no other HTML element uses a hyphen.
<li>A message channel API has been introduced augmenting
<code>postMessage()</code>.
<li>A new element named <code>bb</code> has been added. It represents a
user agent command that the user can invoke.
<li>The <code>addCueRange()</code> method on media elements has been
modified to take an identifier which is exposed in the callbacks.
<li>It is now defined how to mutate a DOM into an infoset.
<li>The <code>parent</code> attribute of the <code>Window</code> object is
now defined.
<li>The <code>embed</code> element is defined to do extension sniffing for
compatibility with servers that deliver Flash as <code>text/plain</code>.
(This is marked as an issue in the specification to figure out if there
is a better way to make this work.)</li>
<!-- and no, the answer is not to simply break stuff -->
<li>The <code>embed</code> can now be used without its <code>src</code>
attribute.
<li><code>getElementsByClassName()</code> is defined to be ASCII
case-insensitive in quirks mode for consistency with CSS.
<li>In HTML documents <code>localName</code> no longer returns the node
name in uppercase.
<li><code>data-<var>*</var></code> attributes are defined to be always
lowercase.
<li>The <code>opener</code> attribute of the <code>Window</code> object is
not to be present when the page was opened from a link with
<code>target="_blank"</code> and <code>rel="noreferrer"</code>.
<li>The <code>top</code> attribute of the <code>Window</code> object is
now defined.
<li>The <code>a</code> element now allows nested flow content, but not
nested interactive content.
<li>It is now defined what the <code>header</code> element means to
document summaries and table of contents.
<li>What it means to fetch a resource is now defined.
<li>Patterns are now required for the <code>canvas</code> element.
<li>The <code>autosubmit</code> attribute has been removed from the
<code>menu</code> element.
<li>Support for <code>outerHTML</code> and
<code>insertAdjacentHTML()</code> has been added.
<li><code>xml:lang</code> is now allowed in HTML when <code>lang</code> is
also specified and they have the same value. In XML <code>lang</code> is
allowed if <code>xml:lang</code> is also specified and they have the same
value.
<li>The <code>frameElement</code> attribute of the <code>Window</code>
object is now defined.
<li>An event loop and task queue is now defined detailing script execution
and events. All features have been updated to be defined in terms of this
mechanism.
<li>If the <code>alt</code> attribute is omitted a <code>title</code>
attribute, an enclosing <code>figure</code> element with a
<code>legend</code> element descendant, or an enclosing section with an
associated heading must be present.
<li>The <code>irrelevant</code> attribute has been renamed to
<code>hidden</code>.
<li>The <code>definitionURL</code> attribute of MathML is now properly
supported. Previously it would have ended up being all lowercase during
parsing.
<li>User agents must treat US-ASCII as Windows-1252 for compatibility
reasons.
<li>An alternative syntax for the DOCTYPE is allowed for compatibility
with some XML tools.
<li>Data templates have been removed (consisted of the
<code>datatemplate</code>, <code>rule</code> and <code>nest</code>
elements).
<li>The media elements now support just a single <code>loop</code>
attribute.
<li>The <code>load()</code> method on media elements has been redefined as
asynchronous. It also tries out files in turn now rather than just
looking at the <code>type</code> attribute of the <code>source</code>
element.
<li>A new member called <code>canPlayType()</code> has been added to the
media elements.
<li>The <code>totalBytes</code> and <code>bufferedBytes</code> attributes
have been removed from the media elements.
<li>The <code>Location</code> object gained a <code>resolveURL()</code>
method.
<li>The <code>q</code> element has changed again. Punctuation is to be
provided by the user agent again.
<li>Various changes were made to the HTML parser algorithm to be more in
line with the behavior Web sites require.
<li>The <code>unload</code> and <code>beforeunload</code> events are now
defined.
<li>The IDL blocks in the specification have been revamped to be in line
with the upcoming Web IDL specification.
<li>Table headers can now have headers. User agents are required to
support a <code>headers</code> attribute pointing to a <code>td</code> or
<code>th</code> element, but authors are required to only let them point
to <code>th</code> elements.
<li>Interested parties can now register new <code>http-equiv</code>
values.
<li>When the <code>meta</code> element has a <code>charset</code>
attribute it must occur within the first 512 bytes.
<li>The <code>StorageEvent</code> object now has a
<code>storageArea</code> attribute.
<li>It is now defined how HTML is to be used within the SVG
<code>foreignObject</code> element.
<li>The notification API has been dropped.
<li>How [[Get]] works for the <code>HTMLDocument</code> and
<code>Window</code> objects is now defined.
<li>The <code>Window</code> object gained the <code>locationbar</code>,
<code>menubar</code>, <code>personalbar</code>, <code>scrollbars</code>,
<code>statusbar</code> and <code>toolbar</code> attributes giving
information about the user interface.
<li>The application cache section has been significantly revised and
updated.
<li><code>document.domain</code> now relies on the Public Suffix List.
[<cite><a href="#ref-psl">PSL</a></cite>]
<li>A non-normative rendering section has been added that describes user
agent rendering rules for both obsolete and conforming elements.
<li>A normative section has been added that defines when certain selectors
as defined in the Selectors and the CSS3 Basic User Interface Module
match HTML elements. [<cite><a
href="#ref-selectors">SELECTORS</a></cite>] [<cite><a
href="#ref-css-ui">CSS-UI</a></cite>]
</ul>
<p>Web Forms 2.0, previously a standalone specification, has been fully
integrated into HTML5 since last publication. The following changes were
made to the forms chapter:
<ul>
<li>Support for XML submission has been removed.
<li>Support for form filling has been removed.
<li>Support for filling of the <code>select</code> and
<code>datalist</code> elements through the <code>data</code> attribute
has been removed.
<li>Support for associating a field with multiple forms has been removed.
A field can still be associated with a form it is not nested in through
the <code>form</code> attribute.
<li>The <code>dispatchChangeInput()</code> and
<code>dispatchFormChange()</code> methods have been removed from the
<code>select</code>, <code>input</code>, <code>textarea</code>, and
<code>button</code> elements.
<li>Repetition templates have been removed.
<li>The <code>inputmode</code> attribute has been removed.
<li>The <code>input</code> element in the File Upload state no longer
supports the <code>min</code> and <code>max</code> attributes.
<li>The <code>allow</code> attribute on <code>input</code> elements in the
File Upload state is no longer authoritative.
<li>The <code>pattern</code> and <code>accept</code> attributes for
<code>textarea</code> have been removed.
<li>RFC 3106 is no longer explicitly supported.
<li>The <code>submit()</code> method now just submits, it no longer
ensures the form controls are valid.
<li>The <code>input</code> element in the Range state now defaults to the
middle, rather than the minimum value.
<li>The <code>size</code> attribute on the <code>input</code> element is
now conforming (rather than deprecated).
<li><code>object</code> elements now partake in form submission.
<li>The <code>type</code> attribute of the <code>input</code> element
gained the values <code>color</code> and <code>search</code>.
<li>The <code>input</code> element gained a <code>multiple</code>
attribute which allows for either multiple e-mails or multiple files to
be uploaded depending on the value of the <code>type</code> attribute.
<li>The <code>input</code>, <code>button</code> and <code>form</code>
elements now have a <code>novalidate</code> attribute to indicate that
the form fields should not be required to have valid values upon
submission.
<li>When the <code>label</code> element contains an <code>input</code> it
may still have a <code>for</code> attribute as long as it points to the
<code>input</code> element it contains.
<li>The <code>input</code> element now has an <code>indeterminate</code>
IDL attribute.
<li>The <code>input</code> element gained a <code>placeholder</code>
attribute.
</ul>
<h3 id=changes-2008-01-22><span class=secno>5.10. </span>Changes from 22
January 2008 to 10 June 2008</h3>
<ul>
<li>Implementation and authoring details around the <code>ping</code>
attribute have changed.
<li><code><meta http-equiv=content-type></code> is now a conforming way
to set the character encoding.
<li>API for the <code>canvas</code> element has been cleaned up. Text
support has been added.
<li><code>globalStorage</code> is now restricted to the same-origin policy
and renamed to <code>localStorage</code>. Related event dispatching has
been clarified.
<li><code>postMessage()</code> API changed. Only the origin of the message
is exposed, no longer the URL. It also requires a second argument that
indicates the origin of the target document.
<li>Drag and drop API has got clarification. The <code>dataTransfer</code>
object now has a <code>types</code> attribute indicating the type of data
being transferred.
<li>The <code>m</code> element is now called <code>mark</code>.
<li>Server-sent events has changed and gotten clarification. It uses a new
format so that older implementations are not broken.
<li>The <code>figure</code> element no longer requires a caption.
<li>The <code>ol</code> element has a new <code>reversed</code> attribute.
<li>Character encoding detection has changed in response to feedback.
<li>Various changes have been made to the HTML parser section in response
to implementation feedback.
<li>Various changes to the editing section have been made, including
adding <code>queryCommandEnabled()</code> and related methods.
<li>The <code>headers</code> attribute has been added for <code>td</code>
elements.
<li>The <code>table</code> element has a new <code>createTBody()</code>
method.
<li>MathML support has been added to the HTML parser section. (SVG support
is still awaiting input from the SVG WG.)
<li>Author-defined attributes have been added. Authors can add attributes
to elements in the form of <code>data-<var>name</var></code> and can
access these through the DOM using <code>dataset[<var>name</var>]</code>
on the element in question.
<li>The <code>q</code> element has changed to require punctuation inside
rather than having the browser render it.
<li>The <code>target</code> attribute can now have the value
<code>_blank</code>.
<li>The <code>showModalDialog</code> API has been added.
<li>The <code>document.domain</code> API has been defined.
<li>The <code>source</code> element now has a new <code>pixelratio</code>
attribute useful for videos that have some kind encoding error.
<li><code>bufferedBytes</code>, <code>totalBytes</code> and
<code>bufferingThrottled</code> IDL attributes have been added to the
<code>video</code> element.
<li>Media <code>begin</code> event has been renamed to
<code>loadstart</code> for consistency with the Progress Events
specification.
<li><code>charset</code> attribute has been added to <code>script</code>.
<li>The <code>iframe</code> element has gained the <code>sandbox</code>
and <code>seamless</code> attributes which provide sandboxing
functionality.
<li>The <code>ruby</code>, <code>rt</code> and <code>rp</code> elements
have been added to support ruby annotation.
<li>A <code>showNotification()</code> method has been added to show
notification messages to the user.
<li>Support for <code>beforeprint</code> and <code>afterprint</code>
events has been added.
</ul>
<h2 class=no-num id=acknowledgments>Acknowledgments</h2>
<p>The editors would like to thank Ben Millard, Bruce Lawson, Cameron
McCormack, Charles McCathieNevile, Dan Connolly, David
Håsäther, Dennis German, Frank Ellermann, Frank Palinkas,
Futomi Hatano<!-- 羽田野太巳 -->, Gordon P. Hemsley, Henri Sivonen,
James Graham, Jens Meiert, Jeremy Keith, Jürgen Jeka, Krijn Hoetmer,
Leif Halvard Silli, Maciej Stachowiak, Marcos Caceres, Mark Pilgrim,
Martijn Wargers, Martyn Haigh, Masataka Yakura, Michael Smith,
<i>Ms2ger</i>, Olivier Gendrin, Øistein E. Andersen, Philip
Jägenstedt, Philip Taylor, Randy Peterman, Toby Inkster, and Yngve
Spjeld Landro for their contributions to this document as well as to all
the people who have contributed to HTML5 over the years for improving the
Web!
<h2 class=no-num id=references>References</h2>
<dl><!--<dt>[<dfn id="ref-cors">CORS</dfn>]</dt>
<dd><cite><a href="http://www.w3.org/TR/cors/">Cross-Origin Resource Sharing</a></cite>, A. van Kesteren. W3C.</dd>-->
<dt>[<dfn id=ref-css-ui>CSS-UI</dfn>]
<dd><cite><a href="http://www.w3.org/TR/css3-ui/">CSS3 Basic User
Interface Module</a></cite>, T. Çelik. W3C.
<dt>[<dfn id=ref-doctype>DOCTYPE</dfn>]
<dd><cite><a href="http://hsivonen.iki.fi/doctype/">Activating Browser
Modes with Doctype</a></cite>, H. Sivonen.
<dt>[<dfn id=ref-dom2html>DOM2HTML</dfn>]
<dd><cite><a href="http://www.w3.org/TR/DOM-Level-2-HTML/">Document Object
Model (DOM) Level 2 HTML Specification</a></cite>, J. Stenback, P. Le
Hégaret, A. Le Hors. W3C.
<dt>[<dfn id=ref-html4>HTML4</dfn>]
<dd><cite><a href="http://www.w3.org/TR/html4/">HTML 4.01
Specification</a></cite>, D. Raggett, A. Le Hors, I. Jacobs, editors.
W3C.
<dt>[<dfn id=ref-html5>HTML5</dfn>]
<dd><cite><a href="http://www.w3.org/TR/html5/">HTML5</a></cite>, I.
Hickson. W3C.
<dd><cite><a
href="http://www.whatwg.org/specs/web-apps/current-work/">HTML5</a></cite>
(editor's draft), I. Hickson. WHATWG.
<dd><cite><a href="http://dev.w3.org/html5/spec/">HTML5</a></cite>
(editor's draft), I. Hickson. W3C.
<dt>[<dfn id=ref-psl>PSL</dfn>]
<dd><cite><a href="http://publicsuffix.org/">Public Suffix
List</a></cite>, Mozilla Foundation.
<dt>[<dfn id=ref-selectors>SELECTORS</dfn>]
<dd><cite><a
href="http://www.w3.org/TR/css3-selectors/">Selectors</a></cite>, D.
Glazman, T. Çelik, I. Hickson. W3C.
<dt>[<dfn id=ref-xhtml1>XHTML1</dfn>]
<dd><cite><a href="http://www.w3.org/TR/xhtml11/">XHTML™ 1.1 -
Module-based XHTML (Second Edition)</a></cite>, S. McCarron, M. Ishikawa.
W3C.
<dt>[<dfn id=ref-xml>XML</dfn>]
<dd><cite><a href="http://www.w3.org/TR/xml/">Extensible Markup Language
(XML) 1.0 (Fifth Edition)</a></cite>, T. Bray, J. Paoli, C.
Sperberg-McQueen, E. Maler, F. Yergeau. W3C.
<dd><cite><a href="http://www.w3.org/TR/xml-names/">Namespaces in XML 1.0
(Third Edition)</a></cite>, T. Bray, D. Hollander, A. Layman, R. Tobin,
H. S. Thompson. W3C.
</dl>