Сейчас на сайте
Сейчас на сайте 0 пользователей и 0 гостей.

Отличия XHTML от HTML

В связи с тем, что XHTML является приложением XML , некоторые действия. которые совершенно правильны в HTML на базе SGML , должны быть изменены.

  • документы должны быть правильно сформированы;

Правильное формирование - это новая концепция, введённая XML . В конечном счёте это означает, что все элементы обязаны иметь закрывающий тег или быть написаны в специальной форме (как описано ниже), и что все элементы обязаны вкладываться.

Хотя перекрывание не допускается в SGML , оно допускается некоторыми браузерами.

    •   КОРРЕКТНО: вложенные элементы;

    •  <p>here is an emphasized <em>paragraph</em>.</p>;

    •  НЕКОРРЕКТНО: перекрывающиеся элементы;

     <p>here is an emphasized <em>paragraph.</p></em>.

  • имена элементов и атрибутов должны быть в нижнем регистре;

Документы XHTML должны использовать нижний регистр для всех имён элементов и атрибутов HTML. Это необходимо, поскольку XML чувствителен к регистру, например, < li > и < LI > это различные теги.

  • для непустых элементов необходимы конечные теги;

В HTML 4 на базе SGML , некоторые элементы допускали отсутствие конечного тега при наличии других последующих элементов с закрывающими тегами. Такое отсутствие конечных тегов не допускается в XHTML на базе XML . Все элементы, за исключением тех, которые объявлены в ОТД* как EMPTY , должны иметь конечный тег.

    •  КОРРЕКТНО: закрытые элементы;

    •  <p>here is a paragraph.</p><p>here is another paragraph.</p>;

    •  НЕКОРРЕКТНО: незакрытые элементы .

     <p>here is a paragraph.<p>here is another paragraph.

  • значения атрибутов всегда должны быть заключены в кавычки;

Все значения атрибутов должны быть закавычены, даже цифровые.

    •   КОРРЕКТНО: атрибут - в кавычках;

    •   < table rows ="3"> ;

    •   НЕКОРРЕКТНО: атрибут - не в кавычках.

      < table rows =3>.

  • минимизация атрибутов;

XML не поддерживает минимизацию атрибутов. Пары атрибут/значение должны (обязаны) быть выписаны полностью. Имена атрибутов, такие как compact и checked , не могут появляться в элементах без определённых значений.

    •   КОРРЕКТНО: неминимизированный атрибут;

    •   < dl compact =" compact "> ;

    •   НЕКОРРЕКТНО: минимизированный атрибут.

      < dl compact >.

  • пустые элементы;

Пустые элементы обязаны иметь конечный тег, или стартовый тег обязан заканчиваться   /> . Например, < br /> или < hr ></ hr > .

    •   КОРРЕКТНО: законченные пустые теги;

    •   < br />< hr />;

    •   НЕКОРРЕКТНО: незаконченные пустые теги.

      < br >< hr >

  • обработка пробелов в значениях атрибутов;

ПА вырезают ведущие и ведомые пробелы из значений атрибутов и превращают последовательности из одного или более пробельных символов (включая обрывы строки) в одиночный межсловный пробел (символ пробела ASCII в западных языках).

  • элементы Script и Style;

В XHTML элементы script и style объявлены как имеющие содержимое # PCDATA . Как результат этого, < и & будут рассматриваться как начало разметки, а мнемоники, такие как & lt ; и & amp ; , будут считаться процессором XML мнемониками символов < и & соответственно. Перенос содержимого элементов script или style в раздел, помеченный CDATA , позволит избежать расшифровки этих мнемоник.

<script> <![CDATA[ ... unescaped script content ... ]]> </script>

Альтернативой может быть использование внешних документов скриптов и стилей.

  • исключения SGML;

SGML предоставлял создателям ОТД* возможность исключать некоторые элементы как содержимое элемента. Такие запрещения (называемые "исключения") невозможны в XML .

Например, Строгое ОТД* HTML 4 ( Strict DTD ) запрещает вложение элемента ' a ' в другой элемент ' a ' на любую глубину. В XML об этом не может быть даже и речи. Хотя эти запрещения и могут отсутствовать в ОТД*, определённые элементы не могут вкладываться.

  • элементы с атрибутами "id" и "name";

HTML 4 определил атрибут name для элементов a , applet, form, frame, iframe, img и map. HTML 4 также ввёл атрибут id . Оба эти атрибута созданы для использования в качестве идентификаторов фрагмента.

В XML идентификаторы фрагмента имеют тип ID, и в элементе может быть только один атрибут типа ID. Таким образом, в XHTML 1.0 атрибут id определён как атрибут типа ID . Чтобы быть уверенным, что документы XHTML 1.0 являются правильно структурированными документами XML, документы XHTML 1.0 ОБЯЗАНЫ использовать атрибут id для определения идентификаторов фрагмента, и даже в тех элементах, которые исторически имели также атрибут name .

Обратите внимание, что в XHTML 1.0 атрибут name этих элементов формально не рекомендуется и будет удалён в последующих версиях XHTML .

  • двойные тире в комментариях;

    • в комментариях двойные тире "--" могут обозначать только начало и конец комментария.

    • НЕПРАВИЛЬНО:

    <!-- использовать разделитель, написанный ниже -- нельзя и этот комментарий -- неверен -->

      <!--------------------------------->

    • ПРАВИЛЬНО:

    <!-- использовать разделитель, написанный ниже - - можно и этот комментарий - - верен -->

    <!--==== - - - - ====-->

Таким образом, двойные тире "--" не обозначающие начало и конец комментария в его тексте должны быть чем-либо заменены или разделены пробелом, например "- -".