Ответ 1
То, что ваше сердце говорит вам, является правильным. Хотя можно использовать CSS для XML, сам XML не имеет семантики. CSS предназначен для Интернета, для HTML и для предоставления семантических данных (хорошего) вида.
XML более общий, чем это. XSLT был изобретен для преобразования одного формата данных в другой (XSLT 1.0 только XML, XSLT 2.0 - любой формат данных Unicode), то есть XML в HTML или XML в XSL-FO или другой формат XML или текста. XSL-FO был изобретен для размещения XML на бумаге или экране и гораздо более подробный, чем CSS.
Некоторые плюсы и минусы в CSS + XML
В основном, минусы, особенно. в свете использования XML в браузере. Пропустите общий совет ниже, если вы не хотите, чтобы все мои болтовня; -)
CSS минус 1: нет CSS + XML для Интернета
Против: это сильно зависит от контекста, но если вы хотите использовать XML для отображения в Интернете, подумайте еще раз: не используйте XML, а преобразовывайте его в HTML. Затем используйте CSS + HTML для отображения ваших данных. Если вы используете XML в Интернете, никакой поисковой системы или искателя, не понимаете разницу между <x>
и <y>
, но они поймут разницу между <h1>
и <h2>
.
Это само по себе является достаточным основанием для использования XSLT для преобразования в HTML + CSS и исключения XML самостоятельно.
CSS cons 2: CSS означает много больше работы
Другая чрезвычайно важная причина, которую вы можете использовать: XML + CSS означает определение каждого элемента в CSS. Использование HTML + CSS означает, что пользовательские агенты уже знают свойства макета по умолчанию для всех элементов. Использование XML + XSLT означает, что вы обычно создаете HTML + CSS. Вы должны сделать это на стороне сервера, поскольку клиентская XSLT не очень надежна и совместима с кросс-браузером.
CSS cons 3: доступность
(извините, я не могу найти профи). Если XML не имеет семантики (SVG, как упоминается другим пользователем), нет смысла использовать CSS для макета. Если макет предположительно семантически понимается пользовательским агентом, XML + CSS не работает. Чтение текста в речь не имеет понятия, что делать, достоверность WAI (доступность) будет невозможна и т.д.
CSS cons 4: ремонтопригодность, понятность, сценарии, проблемы
Использование XML затрудняет выполнение любых сценариев на стороне клиента (да, DOM доступен, но как вы скажете браузеру, что такое script -tag? Но, возможно, он отреагирует на <script>
, но эй, вам нужен XSLT, чтобы получить там этот тег) и затрудняет его кроссбраузер (некоторые браузеры с трудом используют XML как таковой). Все, что HTML (например, мета, название, тело, script) не будет доступно. Невозможно добавить атрибуты заголовка или сообщить браузеру, что изображение (afaik).
Без script будет работать на вас только для XML-страницы (prototype.js? jquery.js? ajax? no no и no).
Любой, кто смотрит на ваш код, должен узнать, что означает каждый тэг. Использование XSLT для преобразования в HTML предотвращает это. Этот дополнительный шаг полезен и должен применяться каждый раз, когда вы переходите от XML к отображению браузера.
Преимущества CSS 1: для домена
Если ваш домен SVG, SMIL, OD или что-то еще, вы, вероятно, уже знаете это: CSS является неотъемлемой частью спецификации и должен использоваться. Это полностью отличается от чистого, возможно неструктурированного XML-данных.
AJAX думал
Просто для сравнения: любой асинхронный вызов AJAX (должен) возвращает XML. Но любая библиотека, работающая с ней, будет либо интерпретировать ее как HTML, либо использовать XSLT или другое средство для ее трансформации до ее ввода на существующей странице.
Общий совет
Основываясь на замечании от OP, мы смотрим на XML данных (а не на SVG или OpenDocument), и его нужно отображать в браузерах. Доступность и индексируемость не важны. Но это не имеет особого значения: вы не должны использовать только XML + CSS, если вы действительно не входите в какое-то приключение и не хотите узнать все недостатки XML в браузерах, хотите снова придумать каждый тег HTML и определить каждый и все, только чтобы отказаться от времени и вернуться к HTML (XML + XSLT == HTML + CSS).
Обновление: добавлено cons 2
Обновление: добавлено cons 3 и профи 1
Обновление: добавлено cons 4, примечание AJAX и заключение