Какую проблему решает строгий XHTML?

Я действительно не понимаю увлечение строгим XHTML. Встроенный JavaScript, как правило, требует крысиных гнезд, чтобы сделать его совместимым с XHTML и полу-обратно совместимым с MSIE 5 и 6. Тогда возникает проблема нехватки OCD при вводе пользователем, чтобы убедиться, что вы не пропустили никаких недопустимых символов., Это просто кажется больше усилий, чем стоит. Не говоря уже о том, что почти каждый разработчик, с которым я работал, постоянно забывает о том, что тип содержимого, возвращаемый с сервера, сбрасывается для страниц XHTML с text/html на application/xhtml+xml.

Хотелось бы знать имя блоггера, но кто-то еще указал, что большинство якобы XHTML-совместимых сайтов и пакетов с открытым исходным кодом на самом деле не из-за этой последней проблемы, забыв правильно установить заголовок типа контента.

Я пытаюсь понять, почему XHTML полезен, или создать достаточный арсенал аргументов, чтобы он никогда не использовался в будущих проектах, на которые я влияю.

13 ответов

Решение

XHTML1 против HTML4 и Strict против Transitional являются полностью ортогональными проблемами.

Сегодня XML может не дать какого-либо огромного преимущества браузерам, но на стороне сервера обрабатывать документы с использованием XML на порядок проще, чем пытаться разобрать беспорядок, который является старой школой SGML, за исключением не совсем HTML4.

Ограничение себя [X]HTML Strict само по себе ничего не дает, кроме простого отказа от использования старых, менее поддерживаемых методов, которые вы не должны использовать в любом случае.

Встроенный JavaScript, как правило, требует от крыс гнезда побегов, чтобы сделать его совместимым с XHTML.

Вы можете уйти без всяких побегов, если вы не используете символы <или &. И "// <[CDATA [" на самом деле не намного хуже, чем "

В любом случае, сохранение сценариев во внешнем виде намного более управляемо; Вы не хотите делать что-то существенное в строке.

Кроме того, существует проблема нехватки ОКР при вводе пользователем, чтобы вы не пропустили запрещенные символы.

Внешние символы в HTML4 Transitional точно такие же недопустимые, как и в XHTML1 Strict.

Если вы принимаете пользовательский HTML-код и не проверяете / не экранируете его с помощью достаточно тонкой расчески, чтобы предотвратить ошибки правильной формы, у вас гораздо большие проблемы, чем просто соблюдение типа документа. Вы пропустите хакерские инъекции и сделаете свой сайт уязвимым для дыр в безопасности межсайтовых сценариев.

забывая убедиться, что тип содержимого, возвращаемый с сервера, сбрасывается для страниц XHTML с text/html на application/html+xml.

Это не "забывание", это преднамеренное: сегодня нет особого смысла обслуживать application/xhtml+xml. Чтобы учесть IE, вам нужно понюхать UA, а затем убедиться, что вы понимаете различия между CSS и JavaScript, которые появляются в обоих режимах синтаксического анализа... вы можете сделать это, чтобы доказать свое техническое мастерство, но на самом деле это ничего вам не даст.,

Работа с XHTML как унаследованным HTML может быть не идеальной, но она позволяет вам сохранить более простой и технологичный синтаксис XML (и потенциальную совместимость с другими языками XML, такими как SVG), оставаясь при этом дружественным для браузера.

Люди жалуются на избирательность ошибок правильности, но сразу же обнаруживать эти ошибки, чтобы вы могли их исправить, гораздо лучше, чем просто молча оставлять их, готовые отключить какой-нибудь будущий браузер.

Есть отличный пост об использовании XHTML @ Beware из XHTML.

Надеюсь, это поможет, Бруно Фигейредо

XHTML 1.0 Strict пытается решить четыре проблемы:

  1. XML - это технология W3C, а HTML4 ее не использовал. Не твоя проблема.

  2. Строгий стремится быть более теоретически чистым, чем переходный, когда дело доходит до презентационализма. Но это не проблема XHTML против HTML.

  3. Синтаксический анализатор XML предположительно проще. (Не совсем верно; код для работы с частью DTD довольно сложен.) В наши дни вы получаете готовые парсеры как XML, так и HTML, так что это не ваша проблема. (В сторону: мобильный аргумент - полностью поддельный.)

  4. application/xhtml+xml (хотя и не действительный XHTML 1.0 Strict!) позволяет смешивать другие словари. Если вы хотите использовать встроенный MathML или SVG сегодня, это основная причина использовать application/xhtml+xml сегодня. Однако направление работы HTML5 позволяет использовать MathML и SVG в text/html.

XHTML полезен, потому что гораздо проще создать простую преобразующую таблицу стилей или свернуть для нее собственный анализатор, чем для HTML.

Вам нужно проанализировать ваш HTML с помощью программы o для некоторых тестов? Затем используйте XHTML.

Для всего остального HTML 4.01 (строгий, свободный, переходный, что угодно) совершенно "стандартный" и менее "хлопотный".

XHTML позволяет вам выполнять расширенный рендеринг, такой как SVG (Scalable Vector Graphics), который сам по себе является XML, но его можно легко встроить в XHTML через расширение пространства имен XML без или . К сожалению, только Firefox и Safari поддерживают его. Извините пользователей IE6.

Для получения дополнительной информации о SVG на http://en.wikipedia.org/wiki/Svg

Строгий предназначен для того, чтобы формализовать разделение между контентом и стилем, усложняя объединение двух. Эллиот Расти Гарольд хорошо написал XHTML в одной из своих книг, вот соответствующий отрывок " Почему XHTML".

Единственная вещь, которую я видел, решенная XHTML, - это "проблема" пользователей, использующих Safari: я не знаю, есть ли ошибка, но когда нас в последний раз просили писать в XHTML, мы столкнулись с ошибкой, которая сделала XHTML нельзя использовать с Safari. В XHTML следующий URL не разрешен в тегах привязки, потому что амперсанд не экранирован:

http://www.example.com/page.php?arg1=val1&arg2=val2

так что вам нужно заменить его на & amp; как это:

http://www.example.com/page.php?arg1=val1&amp;arg2=val2

но Safari конвертирует & amp; на & # 38; так что вы получите этот URL:

http://www.example.com/page.php?arg1=val1&#38;arg2=val2

... и символ хеша завершает URL, если речь идет о PHP. Я знаю, что есть уродливые хаки, которые позволяют вам передавать две переменные другими способами, но если XHTML заставит вас использовать уродливые хаки, то вам лучше без них.

Лично мне понравилась концепция XHTML: она намного чище, чем большая часть HTML, которую мы видим, легче анализировать и проверять. Как и все, я начал кодировать страницы XHTML. Кстати, я не вижу проблемы со встроенным JavaScript, нет необходимости в экранировании, если вы поместите код в CDATA. И IE5, к счастью, немного отошел от браузера, как Netscape 4, который заставил нас писать / > вместо />, что я до сих пор вижу в чистом XML...

Теперь я прочитал ряд статей, например, статью Бруно, в которой есть много хороших аргументов против его использования в большинстве случаев. По сути, в нем говорится, что большинство браузеров не просто готовы к строгому XHTML (используется как XML), не имеет особого смысла использовать XHTML в качестве HTML, и в любом случае это не так полезно на большинстве сайтов.

Посмотрите на приведенные выше аргументы: они совершенно верны, и это здорово, если вы можете поместить MathML или SVG непосредственно на страницу, преобразовать XML с помощью синтаксического анализатора XSLT, обработать страницу с помощью синтаксического анализатора XML.

Но как часто ты это делаешь? Синтаксический анализ страницы чаще всего является проблемой конечных пользователей, которые могут использовать хороший HTML-парсер. А учитывая количество браузеров, способных управлять MathML, SVG или XSLT, это скорее потребность во внутренней сети, чем в обширном Интернете.

У вас может быть электронная коммерция, блог или форум, на котором есть хорошие страницы XHTML. И люди, пишущие описания, статьи или сообщения вставляют <p><p><p> пропустить несколько строк, когда это не так <p/> или какая-то другая экзотическая конструкция...

Я верю в XHTML, но думаю, что больше не буду использовать его для маленьких страниц, которые я делаю для своего сайта. Я буду использовать HTML 4 с хорошо написанным кодом (атрибуты в кавычках, закрывающие теги, даже если необязательные и т. Д.).
И в конце концов, если W3C работает в HTML 5, это происходит по причине: у HTML все еще впереди, иначе он был бы убит в пользу XHTML 2.

XHTML обладает преимуществами xml. Но тогда почему строгий вариант?

Я вижу некоторые сходства с устаревшими функциями. Вы все еще можете использовать их в этой версии, но они могут быть удалены в следующей версии. Так что я вижу переходную версию как устаревшее использование. Это все еще работает, и это будет работать для нескольких версий, но если вы хотите построить для будущего, используйте строгую версию.

XHTML делает HTML ортогональным ко всем другим основанным на XML структурам в нашей вселенной, что имеет два основных преимущества.

Шаблоны проектирования, которые мы используем при работе с xml, могут быть применены к html.

Программные инструменты тоже самое.

XHTML по определению является XML, в отличие от HTML.

Это означает, что вы можете делать с ним что-то интересное, например, легко проверять и анализировать его (поскольку вы знаете, что это XML и, таким образом, можете использовать множество доступных инструментов).

Кроме того, гики любят делать вещи "правильнее";-)

Это проблема мирового стандарта

Это касается не только xHTML, но и всех мировых стандартов. Вы должны сделать вещи понятнее, от версии к версии.

xHTML имеет квадратную форму и подталкивает кодеров для добавления семантической ценности в код. Он полностью совместим с XML и поэтому более легко разбирается, стилизуется и т. Д.

Помните, что код предназначен не только для программистов, но и для машин. Через 10 лет люди, создающие браузеры или библиотеки, не захотят применять одни и те же комплексные правила для старой обработки HTML, а скорее будут ожидать чего-то максимально чистого.

Поисковому движку нужно что-то, на что можно положиться для построения семантических связей между ценностями, и поэтому лучше, если есть только один простой способ сделать это.

И я не говорю о средствах чтения с экрана...

Стандарт, прежде всего, касается перехода к одному уникальному открытому решению, которое соответствует потребностям каждого. Не только о добавлении новых блестящих функций.

Другие вопросы по тегам