Как было сказано в комментариях, использование doctype для HTML5 (<!DOCTYPE html>
) является разумным выбором.
Однако, возможно, вы застряли с XHTML 1 по любой причине. Одной из таких причин может быть, поскольку XHTML 1 имеет реальный DTD, он поддерживает использование ссылок на объекты, таких как
и þ
. (XHTML5 не имеет такой роскоши!)
Если это так, вы могли заметить, что браузеры уже поддерживают более новые элементы, такие как canvas
, поэтому вам действительно не нужно ничего делать, чтобы заставить его работать. Все, что вам нужно сделать, это удовлетворить валидатор!
Итак, вот трюк. Все, что вам нужно сделать, это добавить новые элементы в объявление doctype, как если бы они были частью DTD.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
[
<!ELEMENT canvas EMPTY>
<!ATTLIST canvas
id ID #IMPLIED
class CDATA #IMPLIED
style CDATA #IMPLIED
title CDATA #IMPLIED
lang CDATA #IMPLIED
xml:lang CDATA #IMPLIED
dir (ltr|rtl) #IMPLIED
onclick CDATA #IMPLIED
ondblclick CDATA #IMPLIED
onmousedown CDATA #IMPLIED
onmouseup CDATA #IMPLIED
onmouseover CDATA #IMPLIED
onmousemove CDATA #IMPLIED
onmouseout CDATA #IMPLIED
onkeypress CDATA #IMPLIED
onkeydown CDATA #IMPLIED
onkeyup CDATA #IMPLIED
height CDATA #IMPLIED
width CDATA #IMPLIED
>
<!ENTITY % InlSpecial.class
" | audio | canvas | embed | iframe | img | math | object | svg | video">
]
>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-us">
<head>
<title>Element test</title>
</head>
<body>
<div>
<canvas id="canvas" width="500" height="250" style="background-color:#303030;"></canvas>
</div>
</body>
</html>
Кстати, если вы думаете, что это многовато, помните, что вам нужно только сделать это, чтобы удовлетворить валидатор, так что вы можете удалить все атрибуты из ATTLIST за исключением тех, что вы на самом деле с помощью (в вашем примере id
, width
, height
и style
).
canvas не является частью xhtml1, если вы хотите использовать html5, используйте html5 doctype – Kaiido