Как я могу использовать амперсанды в CSS в документе XHTML и все еще проверять?

Я работаю над платформой, которая использует контроллер изображений для загрузки всех изображений из каталога за пределами webroot, и это включает изображения, используемые в CSS. Например:

background: #FFF url(example.org/index.php?sect=loadimg&img=branding.jpg) top left repeat-x;

это, кажется, работает нормально, но моему XHTML-валидатору не нравится использование амперсанда в CSS и использование & вместо этого не работает вообще. Так кто-нибудь знает, законно ли использовать амперсанд, как это в таблицах стилей? Если нет, есть ли другой способ выполнить тот же образ просьба?

1 ответов


валидатор будет ругаться, только если вы проверка на тип документа XHTML. Наличие неоткрытых HTML-символов в <style> и <script> элементы по-прежнему должны считаться допустимыми в обычном HTML (как 4.01, так и 5).

идеальным решением является перемещение CSS во внешнюю таблицу стилей и включение ее с помощью <link> или @import.

если ваши стили должны находиться в <style> теги, однако, вы можете добавить разделы CDATA в свой <style> теги:

<style type="text/css">
/* <![CDATA[ */

/* Your CSS here */

/* ]]> */
</style>

это приведет к тому, что все специальные символы HTML в этом разделе будут обработаны буквально, и ваш документ XHTML для проверки.

обратите внимание, что разделители раздела CDATA просто <![CDATA[ и ]]>; они завернуты в /* комментарии CSS */ поэтому браузеры не пытаются интерпретировать их как CSS.

разделы CDATA в XHTML являются покрыто спецификацией.