Doctype для режима, совместимого со стандартами xml в IE

StackOverflow https://stackoverflow.com/questions/1305875

Вопрос

Я некоторое время искал тег 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.Это по-прежнему медленно, причудливо и бесполезно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top