Что-то не так с написанием частей веб-страницы в XHTML с HTML-типом документа? - PullRequest
2 голосов
/ 25 июня 2009

Я только недавно начал изучать HTML / CSS, и я пытался научить себя разумным практикам веб-программирования. Я знаком с XML, поэтому кодирование веб-страниц на XHTML было достаточно интуитивно понятным и казалось, что это просто здорово. Тем не менее, я читал такие статьи, как эта и теперь я амбивалентен.

Мои проблемы с кодированием в HTML и XHTML проистекают из следующего:

  1. Теги img не нужно закрывать в HTML, и это имеет смысл для меня. Но в XHTML теги img требуют закрывающего тега, который кажется довольно прикольным. Я просто думаю, что странно иметь пару открывающих и закрывающих тегов, между которыми ничего нет.
  2. p (как в абзаце) не нужно закрывать в HTML, и это для меня забавно. Имеет смысл разделить абзац между открывающим и закрывающим тегами, как в XHTML.

Это единственные базовые примеры, которые я могу привести на данный момент, но я надеюсь, что они, по крайней мере, покажут, насколько я разделен между HTML и XHTML. Итак, вот мой реальный вопрос: можно ли добавлять код XHTML (когда я чувствую, что он соответствующим образом что-то проясняет), когда я кодирую веб-страницу, которая должна быть в HTML (с HTML DTD)? Я уверен, что веб-сайт будет выглядеть так же, но если бы люди смотрели на мой источник, они бы подумали, что я ужасно непрофессиональный кодер?

Кроме того, я как бы слепо просматривал учебники и руководства через Google по разумным практикам веб-программирования, и мне было интересно, есть ли у вас, ребята, какие-нибудь советы / ресурсы, которыми бы вы могли поделиться со мной. Я действительно хочу убедиться, что я учусь делать это правильно. Я был бы очень признателен.

Спасибо за чтение!

Edit: Wow такие быстрые ответы; вы, ребята, потрясающие! Поэтому я понимаю, что веб-браузеры будут весьма снисходительны, когда дело доходит до такого рода вещей. Моя проблема - это вопрос тщеславия и то, как другие профессионалы относятся к написанию своего рода смеси XHTML и HTML. Является ли строгое соблюдение кода правильным? Честно говоря, я просто не хочу выглядеть как идиот, хаха.

Ответы [ 5 ]

8 голосов
/ 25 июня 2009

HTML 5 позволяет использовать синтаксис XHTML.

Теперь вы можете начать использовать тип документа HTML 5, который переведет все браузеры в стандартный режим, но имейте в виду, что новые функции HTML 5 поддерживаются только в некоторых браузерах.

Из рабочей группы по технологии веб-гипертекстовых приложений :

Должен ли я закрыть пустые элементы с помощью /> или>?

Пустые элементы в HTML (например, элементы br, img и input) не требуют завершающей косой черты. например Вместо того, чтобы писать <br />, вам нужно всего лишь написать <br>. Это так же, как в HTML 4.01. Однако из-за широко распространенных попыток использовать XHTML 1.0 существует значительное количество страниц, использующих косую черту. Из-за этого был разрешен конечный синтаксис косой черты для пустых элементов в HTML, чтобы упростить переход с XHTML 1.0 на HTML5.

Удивительно простой тип документа HTML 5 выглядит следующим образом:

<!DOCTYPE html>

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


Редактировать: просто для пояснения, теперь безопасно использовать доктайп HTML 5, и также можно с уверенностью предположить, что HTML 5 будет широко распространен поверх XHTML 2, учитывая отраслевую поддержку. Теперь вы, конечно, можете создавать документы HTML 5, однако многие функции HTML5, такие как <canvas> (особенно не нуждающиеся в поддержке MS, поскольку он конкурирует с Silverlight), не поддерживают кросс-браузер и могут быть изменены.

4 голосов
/ 25 июня 2009

теги img не нужно закрывать в HTML, и это имеет смысл для меня.

Нет тег должен быть закрыт. Все элементы должны быть закрыты.

Большинство элементов состоят из начального тега, некоторого содержимого и конечного тега.

Поскольку элемент изображения не может иметь содержимого, конечный тег не требуется. В HTML для элементов, которые не могут иметь содержимого («пустые элементы»), запрещены конечные теги.

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

XHTML - это приложение XML, а не приложение SGML, и XML не обладает всеми функциями SGML & mdash; включая возможность указать, что конечный тег запрещен.

Мне кажется странным иметь пару открывающих и закрывающих тегов, между которыми ничего нет.

XML вводит новый вид тегов & mdash; самозакрывающийся тег (<foo />), который действует как начальный и конечный теги вместе.

Если вы пишете HTML-совместимый XHTML (что следует делать, если вы решите использовать XHTML и хотите поддерживать браузеры, которые не поддерживают этот язык & ndash; например, Internet Explorer), то вы должен использовать этот синтаксис . (Я предпочитаю придерживаться HTML самостоятельно)

Теги

p (как в параграфе) не нужно закрывать в HTML, и это для меня забавно.

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

Например:

<p>Hello, world
<p>A second paragraph

Поскольку элемент p не может содержать другой элемент p, можно подразумевать (со 100% надежностью), что начало нового абзаца закроет предыдущий.

Тем не менее, они необязательны , не запрещены. Вы можете написать HTML 4.01 с явными конечными тегами для любого элемента, который не является пустым.

Можно ли добавить код XHTML? (когда я чувствую, что это правильно проясняет что-то) когда я кодирую веб-страницу, которая должна быть в HTML (с HTML DTD)? Я уверен, что сайт будет выглядеть так же, но если люди должны были посмотреть на мой источник, они думают, что я ужасно непрофессиональный кодер?

Это выглядело бы непрофессионально.

Тем не менее, только три раза синтаксис XHTML не соответствует синтаксису HTML:

Пустые элементы & mdash; такие как <img> и <br> должны быть явно закрыты в XHTML & hellip; но вы сказали, что вам не нравится этот синтаксис.

Сценарии и стили & mdash; вам нужно использовать ссылки на символы или маркеры CDATA, если вы используете определенные символы во встроенных JS и CSS в XHTML, но эти элементы помечены как CDATA в DTD для HTML, так что это будет неправильно & hellip; но вы все равно не должны использовать встроенные скрипты или стили.

Пространства имен & mdash; но нет времени, когда использование пространства имен XML в середине HTML-документа приблизится к разъяснению чего-либо.

3 голосов
/ 25 июня 2009

Это нормально, в том смысле, что почти каждый браузер отображает его правильно, но только потому, что он создан для обработки искаженного HTML / XHTML / XML / чего угодно. Однако любой элемент (элементы), не соответствующий объявленному типу документа (в вашем случае, DTD HTML), будет препятствовать проверке вашего кода и технически будет деформирован.

С другой стороны, подавляющее большинство веб-сайтов (даже если они отображаются правильно) не проходят валидацию, поэтому это не такая уж большая проблема. Я бы придерживался (строгого) XHTML; обратите внимание на комментарий Джимра относительно самозакрывающихся тегов (например, <img src="foo" />).

0 голосов
/ 25 июня 2009

Нет, это не хорошо. В теории, по крайней мере. Если вы пишете синтаксис XHTML в документе HTML, он недействителен. Браузеры, скорее всего, будут отображать его так же, но он все равно будет недействительным. Кроме того, единственное, что допустимо в XHTML и недействительно в HTML, - это самозакрывающийся тег (<br />). Просто потому, что в HTML нет необходимости закрывать теги, это не значит, что вы не можете их закрывать. Вы можете написать разметку так:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent at enim sit amet urna placerat porttitor ut quis justo. Quisque posuere nisl ac libero dictum posuere. Suspendisse in magna neque. Donec et vestibulum sapien. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at nulla dui.</p>

<img src="" alt="">

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent at enim sit amet urna placerat porttitor ut quis justo.</p>

См? Это корректный HTML и выглядит хорошо.

Кстати: прочитайте это .

0 голосов
/ 25 июня 2009

<DOCTYPE> - это переход от SGML и должен появляться только один раз в верхней части документа. Добавление других объявлений DOCTYPE в документ будет нарушением как HTML, так и XHTML - хотя большинство браузеров, вероятно, простят вас.

Если вы должны использовать оба на странице, возможно, размещение вложенного документа в IFRAME будет более соответствовать стандартам, так как IFRAME по определению содержит отдельное окно / контекст документа.

...