Вот файл html, который я пытаюсь проверить:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Valid HTML4</title>
</head>
<body>
<p>Such tidy</p>
<p>Amaze</p>
<p>Much HTML4</p>
<p>Wow</p>
</body>
</html>
Я вручную проверил его валидность с помощью валидатора w3 c (https://validator.w3.org/check).
этот «метод проверки» завершается успешно ($ string содержит содержимое вышеуказанного файла):
$dom = new \DOMDocument();
$dom->validateOnParse = true;
// this succeeds
$dom->loadHTML($string));
этот «метод проверки» завершается ошибкой:
$dom = new \DOMDocument();
$dom->loadHTML($string);
// this fails
$dom->validate();
дополнительная справочная информация: php 7,4, Lib XML 2,9+. Windows 10. Из-за задержек, встроенных в сервер (ы) W3, я попытался проверить файл двумя способами: первый - отправить запрос go на сервер W3 (занимает около минуты). Сообщение об ошибке в Lib XML сообщает о том, что «не удалось загрузить внешний объект http://www.w3.org/TR/html4/strict.dtd». Второй способ заключается в создании каталога xml для кэширования локальной копии strict.dtd. В этом случае я получаю странную ошибку синтаксического анализатора в строке 81 файла strict.dtd, где он жалуется, что сущность Content-Type не завершена должным образом.
Для меня важно иметь возможность выполнять проверку отдельно от синтаксического анализа. Любая помощь будет отличной.