Структуриране на документите

HTML е ранният език за презентация на текстова инфорамация в Интернет. Този език не е строг и смесва структурата с представянето. При него може да се отвори даден елемент и да не се затвори, други елементи нямат нужда от затваряне, а някои е задължително да се затварят. Това може да породи проблем при някои браузъри, които да не знаят как да интрепретират HTML кода, въпреки че това не е грешка според HTML спецификацията. Достъпност може да се постигне и чрез HTML, но ако искате сайта ви да бъде съвместим с всички бъдещи устройства, е добре да се насочите към XHTML. Правилата по-нататък за подобряване на достъпноста са валидни, както за HTML така и за XHTML.

Независимо, дали ще използваме XHTML или още не сме готови да преминем към него (примерно имаме голям сайт, който е написан на HTML), можем да извлечем полза от междинно маркиране (използващо стари и нови техники), което да ни подготви за прехода след време.

XHTML е структурен език базиран на XML, който се държи като HTML, с няколко малки но съществени разлики. Синтаксисът е по-строг и са премахнати някои презентационни елементи от HTML. За браузърите и другите потребителски агенти XHTML работи по същия начин като HTML, но някои по-усъвършенствани съвременни браузъри могат да го третират малко по-различно. За дизайнерите, писането на XHTML код е почти същото, като писането на HTML код, но с използването на малко по-строги правила и един или два нови елемента. XHTML насърчава структурното маркиране.

За преминаване от HTML към XHTML е нужно да се спазят някои правила:

  • Трябва да се започне документа с правилна DOCTYPE декларация и декларация на пространство от имена.
  • Трябва да се декларира типа на кодирането.
  • Всички имена на елементи и атрибути трябва да се пишат в долен регистър.
  • Стойностите на атрибутите трябва да се поставят в кавички.
  • Всички атрибути трябва да имат стойност.
  • Всички елементи трябва да се затварят.
  • Не е позволено да се използват двойни тирета в коментари.
  • Всички символи за по-малко("<") и амперсанд("&"), трябва да бъдат кодирани като &amp; и &lt;.

Започване на документа с правилна DOCTYPE декларация и декларация на пространство от имена

Елементът DOCTYPE, в началото на документа, указва на браузера, как да инерпретира този документ, а на услугите за валидиране — начина, по който да проверяват за съвместимост. DOCTYPE е съкратено от documemt type, кето значи документен тип.

XHTML предлага три избора за дефиниция за типа на документа:

Transitional
Дефиниция, позволяваща да се използват презентационни елементи и атрибути.
Strict
Дефиниция, непозволяваща използването на презентационни елементи и атрибути.
Frameset
Дефиниция, която позволява да се използват рамки в дизайна.

За нуждите на достъпността няма да навлизаме в подробности за начина на деклариране на документен тип — само ще запомним един ред, който трябва да се добавя в началото на файла преди главния елемент <html>.

Ако използваме XHTML за маркирането на страницата, нужните редове за документен тип и пространства от имена са следните:

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

<html xmlns="http://www.w3.org/1999/xhtml">

Ако използваме HTML за маркирането на страницата, нужният ред за документен тип е следния:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

Деклариране на типа на кодирането

За да бъдат корекно интерпретирани от браузърите, всички XHTML документи трябва да декларират типа на кодирането на символите, което е използвано. За момента има три начина това да стане.

XML пролог

Това е препоръчван начин, в който първия ред в един XML документ, указва кодирането и версията на XML, която ползваме.

<?xml version encoding="utf-8">

За съжаление този метод не винаги работи, затова за момента е добре да го пропускаме. В някои случаи сайтът може да не се визуализира правилно в следствие на ползването му.

Задаване на кодировката в заглавната част на XHTML документа

За момента това е работещият и наложил се като страндартен метод за указване на кодировката. В заглавната част на XHTML документа се вмъква елемент "Content-Type".

<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

Указване на кодировката от страна на сървъра

Това също е препоръчван метод, но не винаги можем да имаме контрол над сървъра, затова е се препоръчва да ползвате гореописания метод.

Долен регистър за имената на елементите и атрибутите

В HTML няма значение регистъра на буквите при елементите и атрибутите. Имате свобода да използвате както големи, така и малки букви и това ще бъде правилно. Това е една от разликите между HTML и XHTML. В XHTML, като базиран на XML език, всички елементи трябва да са в долен регистър. Дори и да пишете на HTML,а не на XHTML, писането в долен регистър ще спести бъдещи усилия при евентуалното преминаване към XHTML.

Следния пример е валиден HTML, но не е валиден XHTML:

<HTML>

<HEAD>

<TITLE> Достъпност в Интернет </TITLE>

</HEAD>

<BODY>

<P class="normalText"> Текст на документа </P>

</BODY>

</HTML>

За да го направим валиден XHTML, трябва да променим всички елементи в долен регистър:

<html>

<head>

<title> Достъпност в интернет </title>

</head>

<body>

<p class="normalText"> Текст на документа </p>

</body>

</html>

Нужно е да обърнем внимание, че текстът в елементите и стойностите на атрибутите може да са, както в горен, така и в долен регистър.

Поставяне в кавички на стойностите на атрибутите

Докато при HTML има свобода за това дали да се поставят кавички на стойностите на атрибутите, при XHTML е задължително да има кавички. В HTML можем да напишем:

<p class=normalText> Текст на документа </p>

В XHTML сме задължени да напишем:

<p class="normalText"> Текст на документа </p>

Всички атрибути трябва да имат стойност

В HTML можем да напишем:

<td nowrap>

<input type="checkbox" checked>

<hr noshade>

В XHTML всички атрибути трябва да имат стойност, като за тези атрибути, които в HTML нямат стойност, стойноста съвпада с името на атрибута. Затова трябва да преправим горния пример:

<td nowrap="nowrap">

<input type="checkbox" checked="checked">

<hr noshade="noshade">

Всеки елемент трябва да бъде затворен

В XHTML е задължително да се затварят елементите, дори и тези които не се затварят според HTML.

В HTML можем да напишем без това да е грешка:

<p> Това е параграф.

<p> Това е втори параграф.

<p> Това е трети параграф.

<br> Това е нов ред, без да е параграф.

За да бъде валиден XHTML код, обаче, е нужно да затворим всички елементи:

<p> Това е параграф. </p>

<p> Това е втори параграф. </p>

<p> Това е трети параграф. </p>

<br /> Това е нов ред, без да е параграф.

Не са позволени двойни тирета в рамките на коментар

Двойните тирета могат да се ползват само в началото и в края на XHTML коментар. Това означава, че синтаксисът на следния код не е валиден:

<!-- Това е невалиден коментар -- долният също е невалиден -->

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

Поправени горните два реда изглеждат така:

<!-- Това е валиден коментар - - долният също е валиден -->

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

Всички символи "<" и "&" трябва да се кодират

Всички символи "<" и "&", които не са част от елементи на XHTML езика, е нужно да бъдат кодирани. Така следния код няма да е валиден XHTML:

<p> X & Y < Z </p>

Кодът ще трябва да се промени по следния начин:

<p> X &amp; Y &lt; Z </p>