Есть ли что-то неправильное в написании частей веб-страницы в XHTML с использованием HTML doctype?
-
22-07-2019 - |
Вопрос
Я только недавно начал изучать HTML / CSS и пытался научиться основательным методам веб-программирования.Я знаком с XML, поэтому кодирование веб-страниц в XHTML было достаточно интуитивно понятным, и это просто казалось разумным решением.Тем не менее, я читал такие статьи, как этот и теперь у меня двойственные чувства.
Мои опасения по поводу кодирования в HTML и XHTML проистекают из следующего:
- img-теги не обязательно закрывать в HTML, и для меня это имеет смысл.Но в XHTML для тегов img требуется тег close, который кажется немного обалденным.Я просто думаю, что это странно - иметь пару тегов open и close, между которыми ничего нет.
- теги p (как в paragraph) не обязательно закрывать в HTML, и мне это кажется странным.Имеет смысл разделить абзац между тегами open и close, как это было бы в XHTML.
Это единственные базовые примеры, которые я могу привести на данный момент, но я надеюсь, что они, по крайней мере, покажут, насколько я разделен между HTML и XHTML.Итак, вот мой актуальный вопрос:Можно ли вводить код XHTML (когда я чувствую, что он что-то соответствующим образом проясняет), когда я кодирую веб-страницу, которая должна быть в HTML (с DTD HTML)?Я уверен, что веб-сайт выглядел бы так же, но если бы люди посмотрели на мой исходный код, подумали бы они, что я ужасно непрофессиональный программист?
Кроме того, я как бы вслепую просматривал учебные пособия и руководства через Google по рациональным методам веб-программирования, и мне было интересно, есть ли у вас, ребята, какие-нибудь советы / ресурсы, которыми вы могли бы поделиться со мной.Я действительно хочу убедиться, что я учусь делать это правильно.Я был бы вам очень признателен.
Спасибо за чтение!
Редактировать:Ничего себе, такая быстрая реакция;вы, ребята, потрясающие!Поэтому я понимаю, что веб-браузеры будут довольно снисходительны, когда дело дойдет до подобных вещей.Тогда моя проблема - это вопрос тщеславия и того, как другие профессионалы относятся к написанию своего рода смеси XHTML и HTML.Является ли строго совместимый код правильным решением?Честно говоря, я просто не хочу выглядеть идиотом, ха-ха.
Решение
Тегиimg не нужно закрывать в HTML, и это имеет смысл для меня. Р>
Нет тега необходимо закрыть. Все элементы должны быть закрыты.
Большинство элементов состоят из начального тега, некоторого содержимого и конечного тега.
Поскольку элемент изображения не может иметь содержимого, конечный тег не требуется. В HTML элементам, которые не могут иметь контент (& Quot; EMPTY elements & Quot;) запрещены конечные теги.
Но в XHTML для тегов img требуется закрывающий тег, который кажется довольно прикольным.
XHTML - это приложение XML, а не приложение SGML, и XML не обладает всеми функциями, которые делает SGML & # 8212; включая возможность указать, что конечный тег запрещен.
Я просто думаю, что странно иметь пару открывающих и закрывающих тегов, между которыми ничего нет.
XML вводит новый вид тегов & # 8212; самозакрывающийся тег (<foo />
), который действует как начальный и конечный теги вместе.
Если вы пишете HTML-совместимый XHTML (что и должно быть, если вы решите использовать XHTML и хотите поддерживать браузеры, не поддерживающие этот язык & # 8212; такие как 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:
Пустые элементы & # 8212; такие как <img>
и <br>
должны быть явно закрыты в XHTML & # 8230; но вы сказали, что вам не нравится этот синтаксис.
Сценарии и стили & # 8212; вам нужно использовать символьные ссылки или маркеры CDATA, если вы используете определенные символы во встроенных JS и CSS в XHTML, но эти элементы помечены как CDATA в DTD для HTML, так что это будет неправильно & # 8230; но вы все равно не должны использовать встроенные скрипты или стили.
Пространства имен & # 8212; но нет времени, когда использование пространства имен XML в середине HTML-документа приблизилось бы к разъяснению чего-либо.
Другие советы
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 validator а>. Индустрия широко предпочла использовать HTML5 поверх XHTML2, и поэтому я бы не рекомендовал использовать XHTML для любых новых проектов.
<Ч> Редактировать: просто для пояснения, теперь безопасно использовать доктайп HTML 5, и также можно с уверенностью предположить, что HTML 5 будет широко распространен по сравнению с XHTML 2, учитывая отраслевую поддержку. Теперь вы, конечно, можете создавать документы HTML 5, однако многие функции HTML5, такие как <canvas>
(особенно не нуждающиеся в поддержке MS, поскольку он конкурирует с Silverlight), не поддерживают кросс-браузер и могут быть изменены.
Это нормально, в том смысле, что почти каждый браузер будет правильно его отображать, но только потому, что он создан для обработки искаженного HTML / XHTML / XML / чего угодно. Тем не менее, любой элемент (элементы), не соответствующий объявленному типу документа (в вашем случае, DTD HTML), будет препятствовать проверке вашего кода и технически будет деформирован.
С другой стороны, подавляющее большинство веб-сайтов (даже если они отображаются правильно) не проходят валидацию, поэтому это не проблема. Я бы придерживался (строгого) XHTML; обратите внимание на комментарий Джимра относительно самозакрывающихся тегов (например, <img src="foo" />
).
Нет, это не нормально.По крайней мере, теоретически.Если вы пишете синтаксис 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-код, и выглядит он хорошо.
Кстати: читать это.
<DOCTYPE>
- это переход от SGML и должен появляться только один раз в верхней части документа. Добавление других объявлений DOCTYPE в документ будет нарушением как HTML, так и XHTML - хотя большинство браузеров, вероятно, простят вас.
Если вы должны использовать оба на странице, возможно, размещение вложенного документа в IFRAME будет более соответствовать стандартам, так как IFRAME по определению содержит отдельное окно / контекст документа.