Doctype для режима, совместимого со стандартами xml в IE
-
19-09-2019 - |
Вопрос
Я некоторое время искал тег DOCTYPE, который сделает Internet Explorer совместимым со стандартами css для обычного xml-документа, поскольку я хочу использовать css-атрибут с пробелами. Эта страница заявляет, что использования "doctype 'XML'" должно быть достаточно для работы Internet Explorer 6 +, Но я перепробовал все теги DOCTYPE, которые смог придумать / найти в примерах, не получив ожидаемых результатов.Возможно, я здесь что-то еще упускаю, но в принципе я думаю, что правильный тег DOCTYPE (в нужном месте кода) должен это сделать.
Вот код, с помощью которого я тестирую:
Тест.css:
Message {
white-space: pre-wrap;
}
Test.xml:
<?xml version="1.0"?>
<?xml-stylesheet href="Test.css" type="text/css"?>
<Message><![CDATA[
Some data
which is pre
formatted
]]></Message>
Приведенный выше пример отлично работает как есть в FF и Safari.
Решение
Такого понятия не существует, потому что IE пока не поддерживает правильный mime-тип application /xml + xhtml для обслуживания HTML в виде XML.Однако IE напрямую поддерживает XML, поэтому вы можете просто написать электронное письмо напрямую, не выдавая его за HTML, а затем использовать таблицу стилей, чтобы страница отображалась как HTML.Этот метод приведет к нарушению доступности и семантики, потому что никто не поймет грамматику ваших XML-элементов.
И, вероятно, именно поэтому XML плохо используется в Интернете.
Другие советы
Насколько я выяснил, такового нет.Документы лгут.Документы в формате raw-XML, отображаемые в таблицах стилей, всегда находятся в режиме quirks, хотя теоретически они всегда должны находиться в режиме standards независимо от типов документов (которые в любом случае устарели и не так часто используются в XML в наши дни).
Однако приведенный выше пример на самом деле не демонстрирует этого...Я тестировал с чем-то вроде этого:
<?xml-stylesheet href="test.css" type="text/css"?>
<potato>
<custard>X</custard>
</potato>
custard { width: 150px; padding: 50px; background: yellow; }
Это отображает общую ширину + отступ в 150 пикселей вместо правильных 250 пикселей.Добавление любого из:
<!DOCTYPE potato>
<!DOCTYPE potato SYSTEM "blankfile.dtd">
<!DOCTYPE potato PUBLIC "-//W3C//DTD XHTML 1.0//EN" "blankfile.dtd">
или изменение корневого элемента на ‘html’ и ссылка на реальный XHTML DTD URI, не имеет никакого значения.Необработанный рендеринг XML остается в режиме quirks.Это не имеет ничего общего с распознаванием типа мультимедиа MIME application /xhtml + xml.
Я предполагаю, что рендеринг IE raw-XML - это функция, которая на самом деле не видела никаких обновлений со времен IE5.Это по-прежнему медленно, причудливо и бесполезно.