Насколько я понимаю, вам нужно включить следующий код в начало ваших файлов HTML, чтобы убедиться, что они анализируются правильно:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
...
Я создаю html-файл путем преобразования XML-файла с использованием XSL-файла. Это будет сделано с помощью инструмента MSXML, который выдает стандартный HTML-файл в качестве вывода.
Если я просто сделаю это:
<xsl:template match="/">
<html>
...
Все хорошо. Но если я сделаю это:
<xsl:template match="/">
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
...
Я получаю ошибку XML Parsing Error: XML or text declaration not at start of entity
в Firefox или Cannot have a DOCTYPE declaration outside of a prolog.
в IE. Предположительно, это потому, что анализатор находит два <?xml
определения и запутывается.
Как заставить браузер а) понять, что я использую правильный строгий HTML, и б) убедиться, что эти объявления помещены в выходной файл HTML, который генерирует MSXML?