В процессе написания плагинов для jQuery столкнулся с необходимостью добавлять расширенные атрибуты к некоторым известным тэгам для облегчения передачи параметров плагинам (получается красиво и просто), но так же хочется без проблем проходить валидацию страницы. Небольшой эксперимент поставил перед выбором: или валидный html или расширенные атрибуты…
Для нормальной валидации html было решено описать расширенные атрибуты в описании документа:
Этот html прекрасно проходит валидацию, идеально подходит для плагина, но! в браузерах (Chrome, IE8, FF3) в начале документа отображаются два символа "]>" и это все портит.
Варианты с внешним файлом dtd и т.п. пробовал — валидация не проходит.
Стоит ли копать дальше или бросить идею с расширенными атрибутами и валидным html? Или может у кого-нибудь появится идея как это можно обойти?
Итог. Спасибо всем за обсуждение, я сознательно не участвовал в процессе. Отдельное спасибо tenshi и SelenIT за толковые ссылки, мне как раз в моих вариантах не хватало шага с импортом DTD.
Итак результат получается такой: пишем свой файл DTD, в нем импортируем нужный DTD
Потом прописываем Doctype на странице
Валидация проходит, документ выглядит нормально. Однако еще вопрос, как это воспримят браузеры.
Кстати, насчет постоянных споров должен быть документ валиден или нет — лично для меня валидация полезна: использую валидацию для проверки кода страницы и поиска косяков в генерируемом html, а продираться между «лишними» ошибками валидатора сильно не хочется. У многих есть свое устоявшиеся мнение и переубеждать, вступать в полемику по этому вопросу, излишне.
Для нормальной валидации html было решено описать расширенные атрибуты в описании документа:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
[
<!ATTLIST input
lookup:url CDATA #IMPLIED
lookup:targets CDATA #IMPLIED
>
]>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>test</title>
</head>
<body>
<input type="text" maxlength="50" size="20" class="lookup" name="l1"
lookup:url="/find.aspx?q="
lookup:targets="id:MyHidden1, id:MySpan1.text, text:MySpan2.text"/>
</body>
</html>
Этот html прекрасно проходит валидацию, идеально подходит для плагина, но! в браузерах (Chrome, IE8, FF3) в начале документа отображаются два символа "]>" и это все портит.
Варианты с внешним файлом dtd и т.п. пробовал — валидация не проходит.
Стоит ли копать дальше или бросить идею с расширенными атрибутами и валидным html? Или может у кого-нибудь появится идея как это можно обойти?
Итог. Спасибо всем за обсуждение, я сознательно не участвовал в процессе. Отдельное спасибо tenshi и SelenIT за толковые ссылки, мне как раз в моих вариантах не хватало шага с импортом DTD.
Итак результат получается такой: пишем свой файл DTD, в нем импортируем нужный DTD
<!-- include XHTML1.1 -->
<!ENTITY % xhtml1t.dtd PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
%xhtml1t.dtd;
<!-- Наши определения -->
<!ATTLIST input
lookup:url CDATA #IMPLIED
lookup:targets CDATA #IMPLIED
>
Потом прописываем Doctype на странице
<!DOCTYPE html PUBLIC "-//My//DTD XHTML MyExt//RU" "http://my.site.ru/_static/test.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
Валидация проходит, документ выглядит нормально. Однако еще вопрос, как это воспримят браузеры.
Кстати, насчет постоянных споров должен быть документ валиден или нет — лично для меня валидация полезна: использую валидацию для проверки кода страницы и поиска косяков в генерируемом html, а продираться между «лишними» ошибками валидатора сильно не хочется. У многих есть свое устоявшиеся мнение и переубеждать, вступать в полемику по этому вопросу, излишне.