Javascript-форум (https://javascript.ru/forum/)
-   Сайт Javascript.ru (https://javascript.ru/forum/site/)
-   -   XHTML 1.0 Valid (https://javascript.ru/forum/site/1129-xhtml-1-0-valid.html)

Илья Кантор 30.03.2008 21:50

XHTML 1.0 Valid
 
Прошелся по всем основным страницам сайта, поправил найденные ошибки валидации.

Теперь javascript.ru XHTML 1.0 Valid :)

tenshi 30.03.2008 23:17

xhtml1.1 рулит :-)

SelenIT 02.04.2008 23:08

Поздравляю!

Правда, при проверке выборочных страниц этим валидатором (более приближенным к браузерной действительности, чем W3C-шный), оказалось, что в дереве статей остался один незакрытый (с точки зрения парсера text/html) non-empty тег...

Цитата:

Сообщение от tenshi (Сообщение 1815)
xhtml1.1 рулит :-)

Где? Он же с IE несовместим. Имхо, рулят XHTML 1.0 и XHTML 5 :-)

Илья Кантор 02.04.2008 23:45

XHTML 1.1 стандарт возможно будущего, но не настоящего.

Поправил тот незакрытый таг.
А на что это он продолжает ругаться?

From line 1, column 1; to line 1, column 121

Цитата:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">↩<html

Kolyaj 02.04.2008 23:57

Цитата:

Сообщение от SelenIT
Где? Он же с IE несовместим. Имхо, рулят XHTML 1.0 и XHTML 5 :-)

Он и с FF несовместим, так же как и все остальные XHTML-и. Он, бедный, вынужден переводить его в родной HTML без всяких закрытий одиночных тегов. А IE местами и кавычки в аттрибутах удаляет. Так что все это не больше чем меряние пиписьками.

Илья Кантор 03.04.2008 00:04

Да и вообще, вечно проблемы с этими Strict ;)
Transitional самый удобный вариант.

Мне наиболее симпатичен XHTML 1.0 Transitional.

SelenIT 03.04.2008 02:40

Kolyaj, все браузеры, кроме IE, умеют работать с XHTML без перевода "в родной HTML" - при соответствующем Content-type. У них нет проблем и с 1.1. Но IE XHTML с такими Content-type не отображает, а отдавать 1.1 как text/html считается ошибкой.

Илья Кантор, насколько я понял, ругается он на Transitional-доктайп сам по себе - из-за того, что большинство браузеров отображают его в "полустандартном" режиме (с выравниванием картинок в таблицах по-старому, без отступов), а не в полностью стандартном. На мой взгляд, это не ошибка, а уже придирка :-).

Kolyaj 03.04.2008 09:22

SelenIT, а я и не говорю, что у них проблемы с XHTML, я говорю, что они переводят XHTML в обычный HTML и работают уже с ним. А все эти XHTML Valid -- мерялка для верстальщиков, не более.

tenshi 03.04.2008 10:27

Цитата:

Где? Он же с IE несовместим.
в каком это месте?

Цитата:

Он, бедный, вынужден переводить его в родной HTML без всяких закрытий одиночных тегов. А IE местами и кавычки в аттрибутах удаляет.
у тебя слишком буйная фантазия. нет никакого смыла "xhtml переводить в html", так как xhtml - это подмножество html.

Цитата:

отдавать 1.1 как text/html считается ошибкой.
http://www.w3.org/TR/xhtml11/conformance.html#uaconf в самом конце
но в случае использования text/html браузеры не обязаны использовать xml парсеры. поэтому для ие есть хак - отдавать как application/xml с подключённым к нему xslt, который меняет миме-тип. где-то на w3.org даже пример валялся. искать по словам "xhtml faq xslt"

Цитата:

они переводят XHTML в обычный HTML и работают уже с ним.
они работают с DOM-ом, а он строится хоть из html, хоть из xml, хоть вообще из plain/text.

Kolyaj 03.04.2008 10:58

tenshi, во-первых, просьба все-таки не тыкать в хамском тоне.


Цитата:

Сообщение от tenshi
нет никакого смыла "xhtml переводить в html", так как xhtml - это подмножество html.

К словам будем придираться или по делу? Если сильно хочется, то: браузеры переводят валидный XHTML в невалидный. Смысл делать валидный?

tenshi 03.04.2008 11:20

браузеры ничего никуда не переводят. они парсят, получая на выходе DOM.
больше повторять не буду.

пс: уточни, плиз, в гугле термины "валидный" и "правильно составленный".

Kolyaj 03.04.2008 11:37

Цитата:

Сообщение от tenshi
они парсят, получая на выходе DOM

При этом им все равно, что парсить, и при этом после обратной операции получается не XHTML. Вы не ответили: зачем нужен XHTML Valid и почему
Цитата:

Сообщение от tenshi
xhtml1.1 рулит


SelenIT 03.04.2008 11:44

Цитата:

Сообщение от tenshi
> Он же с IE несовместим.
в каком это месте?

В нативном виде, как application/xhtml+xml. Трюк с XSLT лишь маскирует эту несовместимость - на выходе-то у нас фактически другой документ, являющийся обычным HTML (text/html)...

Цитата:

Сообщение от tenshi
http://www.w3.org/TR/xhtml11/conformance.html#uaconf в самом конце

Хм... никогда не обращал внимания, спасибо что указали, не знал, что документация сама себе противоречит). В Informative note, приведенной там по ссылке, четко сказано, что
Цитата:

The 'text/html' media type [RFC2854] is primarily for HTML, not for XHTML. In general, this media type is NOT suitable for XHTML.
и годится лишь для документов, соблюдающих правила совместимости с HTML (с полными закрывающими тегами для непустых элементов, без переносов строк в атрибутах и т.п.), а эти правила прописаны для XHTML 1.0, а не 1.1. В итоговой табличке комбинация XHTML1.1 + text/html тоже помечена жирным красным SHOULD NOT, да и W3C-шный валидатор на нее сердится как на Potential Issue.

Цитата:

Сообщение от tenshi
xhtml - это подмножество html

Нет. Это подмножество XML, функционально аналогичное HTML. XHTML1.0 - это переформулирование грамматики HTML4.01 в XML-ный синтаксис, XHTML1.1 - практически то же, но в виде модулей, XHTML2 - попытка расширить эту грамматику. А XHTML5 - просто способ сериализации DOM (в виде well-formed XML без доктайпа) для HTML 5 (кстати, все браузеры, понимающие application/xhtml+xml, нормально с ним работают).

tenshi 03.04.2008 14:38

Цитата:

В нативном виде, как application/xhtml+xml. Трюк с XSLT лишь маскирует эту несовместимость
у него нет в списке поддерживаемых миме-типов application/xhtml+xml, поэтому инициирует скачку, а не парсинг. xhtml - это подмножество html и xml. ие умеет парсить и то и то.

Цитата:

В итоговой табличке комбинация XHTML1.1 + text/html тоже помечена жирным красным SHOULD NOT
http://www.rfc-editor.org/rfc/rfc2119.txt
единственное, чему спецификация противоречит, - это твоему представлению о ней.

Цитата:

Нет. Это подмножество XML, функционально аналогичное HTML
синтаксически xhtml является подмножеством как html, так и xml.

tenshi 03.04.2008 14:48

Цитата:

Вы не ответили: зачем нужен XHTML Valid и почему
1. быстрее парсится ( ибо xml имеет строгие и чёткие правила )
2. проще написать парсер ( по той же причине )
3. есть возможность использовать трансформацию исходящего документа ( например, прокси, трансформирующий встроенные svg в vml )
4. ошибка в вёрстке сразу видна.

Kolyaj 03.04.2008 15:24

Цитата:

Сообщение от tenshi
1. быстрее парсится ( ибо xml имеет строгие и чёткие правила )
2. проще написать парсер ( по той же причине )
3. есть возможность использовать трансформацию исходящего документа ( например, прокси, трансформирующий встроенные svg в vml )

С просмотром сайта в браузере все это слабо коррелирует.

Цитата:

Сообщение от tenshi
4. ошибка в вёрстке сразу видна.

Мы ведь под ошибкой подразумеваем отображение сайта отличное от желаемого, правда? Только XHTML нам тут не помогает.

SelenIT 03.04.2008 15:30

Цитата:

Сообщение от tenshi
ие умеет парсить и то и то.

Да, умеет. Больше того - XML он даже умеет валидировать :). Но вот отображать отпарсенный XML с xmlns="http://www.w3.org/1999/xhtml" как страницу (что делают другие браузеры) он не умеет. И трюк с XSLT не заставит его делать это.

Цитата:

Сообщение от tenshi
синтаксически xhtml является подмножеством как html, так и xml.

Не является он подмножеством HTML, хоть ты тресни. Нет в HTML ни <br/> со товарищи, ни атрибута xmlns. XML - да, является.

Цитата:

Сообщение от tenshi
единственное, чему спецификация противоречит, - это твоему представлению о ней.

Мощно, внушает). Оказывается, SHOULD NOT == NOT RECOMMENDED == "может быть по разумным причинам допустимо и даже полезно при определенных обстоятельствах" == "так делать нужно и круто всегда". Спасибо за ликбез! :).

Цитата:

Сообщение от tenshi
1. быстрее парсится ( ибо xml имеет строгие и чёткие правила )
...
4. ошибка в вёрстке сразу видна.

А в случае, когда XHTML отдается как text/html (и, как следствие, парсится tag soup-парсером)? ;)

SelenIT 03.04.2008 15:34

Цитата:

Сообщение от Kolyaj
с просмотром сайта в браузере все это слабо коррелирует.

Коррелирует, но только в том случае, если страница отдается как application/xhtml+xml или с другим XML-ным Content-type.

Илья Кантор 03.04.2008 15:51

Насчет XHTML и HTML замечания.

HTML допускает таги типа <br>. HTML родился из SGML.
XHTML требует таги закрывать <br/>. Он родился из XML, который сделал более строгой слишком свободные объявления тагов и атрибутов SGML.

--

При обработке документа XML-парсером (тип text/xml), таг типа <script src="my.js"/> полностью эквивалентен <script src="my.js"></script>.

А при обработке HTML-парсером (тип text/html), таг <script src="my.js"/> приведет к ошибке из-за отсутствия закрывающего тега </script>.

P.S У меня предложение. Почему бы не собрать саммари по этому треду в одну статью, с которой все согласятся?

tenshi 03.04.2008 15:53

Цитата:

Мы ведь под ошибкой подразумеваем отображение сайта отличное от желаемого, правда?
один удачно незакрытый тэг и пара часов поиска места поломки тебе обеспечена.

Цитата:

Но вот отображать отпарсенный XML с xmlns="http://www.w3.org/1999/xhtml" как страницу (что делают другие браузеры) он не умеет. И трюк с XSLT не заставит его делать это.
по умолчанию он отображает xml в виде дерева. с помощью xslt можно объяснить ему, что отображать нужно именно в виде хтмл-страницы.

Цитата:

Не является он подмножеством HTML, хоть ты тресни. Нет в HTML ни <br/> со товарищи, ни атрибута xmlns. XML - да, является.
там есть указание, что неизвестные аттрибуты в целях обратной совместимости должны игнорироваться. xhtml - это продолжение html на качественно новом уровне.

Цитата:

Оказывается, SHOULD NOT == NOT RECOMMENDED == "может быть по разумным причинам допустимо и даже полезно при определенных обстоятельствах" == "так делать нужно и круто всегда". Спасибо за ликбез!
так делать приходится, пока большая часть пользователей пользуется устаревшими браузерами.

Kolyaj 03.04.2008 16:01

Цитата:

Сообщение от tenshi
один удачно незакрытый тэг и пара часов поиска места поломки тебе обеспечена.

Не тянет на вескую причину использования XHTML Valid со всеми маскировками хаков для различных браузеров и поисковиков (noindex). Простые правила оформления кода и простые правила написания кода (открыл тег - закрой его) и незакрытых тегов не будет в принципе.

Илья Кантор 03.04.2008 16:08

Кстати, когда я проверял javascript.ru на XHTML 1.0 Valid - это помогло мне поправить 2 php-ошибки и ряд проблемок в статьях.

Пустячок, а приятно ;)

SelenIT 03.04.2008 16:29

Цитата:

Сообщение от tenshi
с помощью xslt можно объяснить ему, что отображать нужно именно в виде хтмл-страницы.

Можно заставить его отображать HTML-страницу, полученную в результате преобразования исходного XML. Но фактически это уже совсем другой документ.

Цитата:

Сообщение от tenshi
xhtml - это продолжение html на качественно новом уровне.

Я бы все-таки сказал не "продолжение", а "замена". Хотя и совместимая (не без оговорок) со своим предшественником.

Цитата:

Сообщение от tenshi
пока большая часть пользователей пользуется устаревшими браузерами.

С учетом того, что бета IE8 все равно отказывается понимать application/xhtml+xml, прогноз, имхо, неутешительный...

Цитата:

Сообщение от Илья Кантор
Почему бы не собрать саммари по этому треду в одну статью, с которой все согласятся?

Боюсь, "общепримиряющей" статьи не получится. Спор между принципиальными поборниками строгих XML-стандартов и теми, кто готов "идти на уступки суровой действительности" (включая "фанатов" HTML5) - это старинная и безотказная тема для холиворов :)

lancer 03.04.2008 19:11

Цитата:

Теперь javascript.ru XHTML 1.0 Valid
Если бы еще Semantic, то вообще классно было.

tenshi 03.04.2008 19:49

Цитата:

Можно заставить его отображать HTML-страницу, полученную в результате преобразования исходного XML. Но фактически это уже совсем другой документ.
именно поэтому это и называется "хак".


Часовой пояс GMT +3, время: 14:54.