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

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

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

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

1 Ответ

10 голосов
/ 18 мая 2011

Валидатор будет жаловаться только в том случае, если вы проверяете соответствие типа документа 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 охватываются спецификацией .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...