проект, над которым я работаю, принимает случайные файлы HTML, конвертирует их в XHTML, насколько это возможно, и обертывает их некоторые метданные XML. DOCTYPE удаляется, поскольку полученный XML-файл не является документом XHTML. Однако при извлечении обернутого XHTML из файла XML необходимо повторно вставить DOCTYPE.
Поскольку это случайные HTML-файлы, они могут содержать любой контент, но я бы предпочел не хранить или определять исходный DTD. Я решил, что мне следует использовать Frameset DTD, поскольку это просто надмножество Transitional DTD и будет действительным для всего контента. Однако при использовании W3C XHTML Validator с тем же документом с использованием переходов DTD переходов, но с использованием DTD набора фреймов не удается .
Я сократил документ до минимума, с помощью которого я могу воспроизвести проблему. Вот версия Frameset:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Make The Move</title>
</head>
<body style="background: none;">
<h3 id="why">Why should I move to Linux?</h3>
</body>
</html>
А вот и переходная версия:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:html="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Make The Move</title>
</head>
<body style="background: none;">
<h3 id="why">Why should I move to Linux?</h3>
</body>
</html>
Пожалуйста, объясните, почему это происходит и как мне действовать.