XHTML ръководство, уроци и tutorial по HTML

За този документ: Предназначение, Състояние (Какво ново?), Авторски права, Начин на ползване. Помогни!

Фон: бял жълт св. сив сив
Шрифт: Arial Verdana sans-serif serif
Размер на шрифта: по подразбиране (CSS2) 12 14 16 18

Благодаря за всички коментари! Имайте в предвид че няма ли коментари - няма и ъпдейти!

За този документ

Предназначение

HTML справочник. XHTML уроци подходящи както за начинаещи, така и за напреднали.

Състояние

Трябва да се добавят/завършат секциите за таблици и карти-изображения. И разбира се, трябва да се поправят всички грешки и неточности. :)

Какво ново?

12 ноември 2007
Промяна в секция "Авторски права": уточнение, че можете да посочите източника ако искате.
10 септември 2007
Промяна в секция "Авторски права": вече не се изисква сочене на v111p.com като източник.
11 януари 2005
Публикуване в WWW!

Авторските права за страницата и това HTML ръководство принадлежат на v111p.com. Материалите могат да се копират свободно при условие че в копието ясно е посочен източника - v111p.com.

Можете да използвате тази информация свободно и не се изисква да цитирате v111p.com като източник. (10 септември 2007 г.) Ако обаче искате да посочите източник (например за да не ви обвинят че представяте чужда работа за своя или просто от благодарност) можете да го направите като използвате точния адрес на страницата или просто ''v111p.com''

Начин на ползване

Всяка помощ е добре дошла!

Всички коментари, предложения, връзки към полезна информация, поправки на фактологични, правописни и/или печатни грешки са добре дошли. Ако е възможно приложете и доказателства. За контакти можете да използвате формуляра за коментари намиращ се на дъното на всяка страница или да пишете на адрес v111p (at) v111p.com (за предпочитане, за да мога да отговоря).

XHTML 1.0 Strict пълен справочник

Въведение

XHTML 1.0 Strict е съвместим с по-стари браузъри които разбират само HTML, и в същото време от него са премахнати много елементи и атрибути от които вече няма нужда (вместо някои от тях се използва CSS).

Визуализирането в по-стари браузъри

Все още на много места се използва HTML 4 / XHTML 1 Transitional защото CSS не се поддържа от старите браузъри, а дори и в новите поддръжката може да е непълна (какъвто е и случая с HTML/XHTML между другото). Максимално добрия външен вид дори и в най-старите браузъри може да е важен за един комерсиален сайт. За непрофесионалните сайтове обаче доста важни са удобствата които XHTML и CSS предлагат - максимално добър изглед във всеки един браузър и лесен и бърз начин за промяна на облика на сайта без да е необходимо да се променя самия HTML.

Накратко имате две възможности - в бързо развиващия се свят на технологиите и Интернет да учите и използвате отдавна непрепоръчвани от стандарта елементи и атрибути (непрепоръчвани още от 1997 г - HTML 4), или да правите дизайна с CSS - език който старите браузъри не разбират, но да оформяте информацията с XHTML 1 Strict и според стандартите, така че тя да е максимално съвместима с настояще, минало и бъдеще.

XHTML документа като HTML, XHTML или XML

XHTML 1.0 позволява документа да се изпраща като HTML, XHTML или XML. За да сме съвместими със старите браузъри трябва да изпращаме документите като HTML, което има неясни практически недостатъци (ако знаете за такива - пишете!).

Забележка: Според W3C XHTML документ изпратен от сървъра като XHTML се поддържа от всички модерни браузъри, но не и от MS Internet Explorer (версия не се споменава).В тези HTML уроци ще разглеждаме само случаи при които файла се изпраща като HTML. (Ако файлът има разширение .html той ще бъде изпратен като HTML - това зависи от настройките на сървъра.)

XHTML Media Types>

Разлика между application/xhtml+xml и text/html в Mozilla>

Елементи, етикети и коментари

Елементи

Елементи в този документ ще наричаме неща като параграфи, заглавия, списъци, под-точки, препратки, които са обградени с HTML етикети, както и такива обекти които използват само един етикет, като картинки например. Спорно е дали meta декларациите например е правилно да се наричат елементи.

Етикети (tags)

Етикетите се използват за обозначаване на елементите в документ на HTML. Всички етикети започват със знак за по-малко и завършват със знак за по-голямо. Имената на етикетите и атрибутите се изписват изцяло с малки букви. Повечето етикети имат кореспондиращ затварящ етикет. Затварящият етикет се различава по това че започва със знак за по-малко и наклонена на дясно черта.

Пример: <p>Параграф</p>

Не е задължително отварящият и затварящият етикет да са на един ред (макар че е препоръчително в някои случаи заради различните разбирания на браузърите):
<p>
Параграф
</p>

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

В HTML някой етикети нямаха съответен затварящ етикет - например етикета за нов ред <br>. В XHTML всички етикети трябва да се затварят. Имате два варианта: стандартния начин <br></br> или ето така: <br/>. За съвместимост с по-старите браузъри обаче се препоръчва следното - използвайте втория вариант като оставяте интервал между името на етикета и наклонената черта: <br />. Пак по същата причина използвайте този метод само за елементи които по принцип винаги са празни. Пример: не използвайте <p /> или <script />

Много е важно тук да разберете, че етикетите не се използват за да придават някакъв определен външен вид на текста. Всички елементи си имат зададен в браузъра външен вид (размер, шрифт, полета и т. н.), но вие можете да го промените много лесно (чрез CSS).

Едни елементи могат да съдържат други

Едни елементи могат да съдържат други елементи с определени изключения. Елементите обаче не трябва да се застъпват.

Пример 1: (правилно): <strong><em>. . .</em></strong>

Пример 2: (грешно): <strong><em>. . .</strong></em>

Коментари

Можете да поставяте коментари навсякъде в документа извън другите етикети. Коментарите се виждат само когато се вижда изходният код на документа и нямат никакъв ефект върху представянето му. Началото на коментар се означава с знак за по-малко последван от удивителен знак и две тирета. Краят на коментара се означава с две тирета и знак за по-голямо. Коментара може да обхваща един или повече реда.

Примери:

<!-- Това е коментар на един ред. -->

<!-- Това е коментар,
който обхваща няколко реда.

<p>Този параграф
няма да бъде показан в браузъра</p>

-->

Текст, бели полета и специални символи

Бели полета

Бели полета (white spaces) в XML/XHTML са нормалния ASCII интервал, табулаторa, line feed (специален символ за нов ред) и carriage return (също специален символ за нов ред). В XHTML, както и в HTML, всяко бяло поле в текста (независимо от колко символа е съставено) се показва по подразбиране като един интервал. Например ако напишем една дума на един ред и друга на втори ред, двете думи в браузъра ще бъдат показани една до друга, с един интервал между тях.

Изписване на важни за HTML символи

Ако искаме да използваме знаците за по-голямо (>) и по-малко (<) или амперсанда (&) в HTML документ (вкл. в стойностите на атрибутите), трябва да използваме техните кодове - съответно &gt; (от greater than - по-голямо), &lt; (от less than - по-малко) и &amp; (ampersand - амперсанд). В допълнение, ако искаме да използваме кавички (") в стойност на атрибут, трябва да използваме кода за кавички - &quot;

Други символи

Някои символи от Unicode имат зададени имена в HTML - като gt или amp например. Но в HTML могат да се използват всички символи от Unicode чрез техните номера. Например символът за евро - €, може да се зададе както с неговото име (&euro;), така и с неговия десетичен номер 8364 - &#8364;, или чрез шестнадесетичния му номер 20AC - &#x20AC; (Пред шестнадесетичните числа се поставя "x").

Забележка: Ако използвате Unicode можете направо да включвате самия символ в документа, вместо неговото кодово име. Това обаче прави документа по-труден за редактиране.

В Unicode има различни видове контролни символи като например за указване промяна посоката на текста. Препоръчва се вместо тези контролни символи да се използва средствата достъпни чрез HTML - например за промяна посоката на текста - елемента bdo. Няма гаранция как ще работят контролните символи в различните браузъри, освен това ако те не се виждат в редактора се усложнява и редактирането.

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

интервала не позволяващ прекъсване на реда
&nbsp; &#160; &#xA0;
Леви и десни кавички
&ldquo; и &rdquo;
«Двойни ъглови кавички»
&laquo; и &raquo;
Меко тире1
&shy;
Търговска марка
&trade; &#8482;
Регистрирана марка ®
&reg;
Знак за авторско право ©
&copy;
Евро
&euro; &#8364; &#x20AC;
Тежко ударение (за български език)2: а̀ ѐ ѝ о̀ у̀ ъ̀ ю̀ я̀ А̀ Ѐ Ѝ О̀ У̀ Ъ̀ Ю̀ Я̀
и&#768; и&#x300;
Остро ударение (за някои други езици)2: á Á
a&#769; a&#x301;

1Мекото тире указва на браузъра място в дума където тя може да бъде пренесена. Тирето не се показва на екрана ако не се наложи думата да бъде пренесена.

2За ударения по принцип трябва да се използва самата буква и веднага след нея - кода за ударението. По последни данни от БАН в българския език трябва да се използва само тежкото ударение. За съжаление резултатът при визуализирането не е особено добър засега - ударението може да се показва като отделен символ до буквата. Засега не ви препоръчвам да ползвате тази техника.

Секцията от XHTML DTD за наименованите символи: XHTML Entity Sets>.

Атрибути на елементите

Елементите могат да имат един или повече атрибути. Атрибутите се пишат вътре в отварящия етикет във формат атрибут="стойност" като се отделят с интервал от името на етикета и помежду си (ако са повече от един). Обърнете внимание, че стойността трябва да е в кавички.

Пример:
<p id="p1" lang="bg">Параграф</p>

Някои елементи имат атрибути само с по една възможна стойност, която съответства на името на атрибута. HTML 4 позволяваше тези атрибути да се използват без стойност, т. е. без частта ="стойност". В XML всички атрибути трябва да имат стойност и затова се налага този подход. За съжаление някои стари браузъри няма да могат да разпознат тези атрибути.

Има няколко групи атрибути които са едни и същи за много елементи.

Основни атрибути (coreattrs)

id
Уникално за документа име. Може да се зададе за да може обекта да бъде манипулиран чрез скрипт или за да може да бъде цел на препратка.
class
Име на предварително зададен стилов клас - вижте страницата за CSS.
style1
Стил - вижте секция "Стилове".
title
Заглавие. Това заглавие обикновено се показва когато потребителят посочи обекта с този атрибут с показалеца на мишката.

1 - Документи които използват атрибута style трябва да задават и стилов език по подразбиране - вижте секцията "стилов език по подразбиране".

Атрибути за интернационализация (i18n)

Атрибутът за езика в HTML е lang, в XML е xml:lang. XHTML 1.0 трябва да използва и двата. Стойността трябва да бъде двубуквения код на езика на текста в елемента (ако езика няма двубуквен код, използва се трибуквения). Съкращенията за езиците> се определят от стандарта ISO639-(1 и 2).

Има още един атрибут свързан с езика който определя посоката в която трябва да тече текста - dir. Този атрибут може да има само две стойности: ltr (отляво надясно - по подразбиране) и rtl (отдясно наляво). Този атрибут за сега като че ли не се поддържа извън етикета bdo (вижте секцията елементи на текстово ниво).

Атрибутите за език не служи за нищо на пръв поглед. Те обаче може да бъде полезен - например за търсачките, за програми които превеждат страници от един език на друг, за браузъри които четат текста в страниците на глас и т. н.

Атрибутът lang е премахнат в XHTML 1.1 в полза на xml:lang.

i18n е съкращение от "internationalization". Числото 18 означава че има 18 символа между първото i и последното n в думата.

Атрибути за събития в потребителския интерфейс (events)

Стойността на тези атрибути трябва да бъде скрипт, който да бъде изпълнен при настъпване на определеното събитие.

Забележка: Документи които използват тези атрибути трябва задължително да задават и скриптов език по подразбиране. Вижте секцията "скриптов език по подразбиране" за повече информация.

onclick
Бутонът на мишката е бил щракнат (бил е натиснат и отпуснат)
ondblclick
Бутонът на мишката е бил щракнат два пъти
onmousedown
Бутонът на мишката е бил натиснат
onmouseup
Бутонът на мишката е бил отпуснат
onmousemove
Показалецът на мишката е бил (пре)местен върху елемента
onmouseout
Показалецът на мишката е бил преместен извън елемента
onkeypress
Клавиш е бил натиснат и отпуснат
onkeydown
Клавиш е бил натиснат
onkeyup
Клавиш е бил отпуснат

Атрибути за елементи които могат да получават фокуса (focus)

accesskey
буква или символ за лесен достъп. (поддържа се само в някои браузъри)
tabindex
позиция в реда за табулиране. (поддържа се само в някои браузъри)
onfocus1
стойността трябва да е скрипт, който да бъде изпълнен когато обекта бъде фокусиран
onblur1
стойността трябва да е скрипт, който да бъде изпълнен когато обекта загуби фокуса

1 Документи които използват атрибутите onfocus и/или onblur трябва задължително да задават и скриптов език по подразбиране. Вижте секцията "скриптов език по подразбиране" за повече информация.

Декларации и <html>

XML декларации

XML декларацията не е задължителна в XML документите ако те използват кодировките по подразбиране - UTF-8 или UTF-16. В случая с Уеб тази декларация не е задължителна и ако енкодинга се изпраща в HTTP header-а. W3C препоръчват да се използва във всички случаи, но и предупреждават че тя може да доведе до проблеми в някои по-стари браузъри.

XML декларацията винаги се поставя на първия ред на документа:

<?xml version="1.0" encoding="UTF-8"?>

където UTF-8 е кодировката на документа.

Този ред, според W3C, пречи на Internet Explorer (версия?) да разпознае документа като XHTML и поради тази причина се препоръчва този ред да се пропуска, а документите да са с енкодинг UTF-8 или UTF-16. Ако документите се изпращат като text/html обаче, ние можем и да не се съобразяваме с правилата на XML (ако нямаме избор).

XML декларация за стилове

За пълнота тук трябва да се отбележи, че ако документа се предлага като "XHTML" или "XML" (а не като text/html), свързаните с документа стилове също трябва да се декларират със специални XML декларации:
<?xml-stylesheet href="Адрес" type="text/css"?>
Където Адрес трябва да бъде адреса на стила, като това може да бъде адреса на външен файл или идентификатора на style елемент (зададен с атрибута id), като пред идентификатора, когато се пише като адрес, се добавя знака за номер (#) , напр.: href="#style1". За всеки използван стил трябва да се добави отделна XML декларация.

DOCTYPE декларацията

DOCTYPE декларацията се поставя в началото на документа. Ето я декларацията за XHTML 1.0 Strict:

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

Strict и strict трябва да се заменят с Transitional и transitional за XHTML 1.0 Transitional или с Frameset и frameset за XHTML 1.0 Frameset.

<html>

Целият документ, с изключение на XML и DOCTYPE декларациите, трябва да бъде обграден с отварящия и затварящия етикет html.

Елемента html трябва да съдържа главата и тялото на документа, в тази последователност.

Атрибути на елемента:

[i18n]
атрибутите за интернационализация
id
уникално за документа име
xmlns
XML Name Space - може да има само една определена стойност: http://www.w3.org/1999/xhtml. (Защо? - Namespaces in XML>). Това име е необходимо, защото XML позволява различни езици за маркиране да се вграждат в един документ, така че някъде в документа можем да имаме код написан на друг език, с друго име.

Пример:
<html xmlns="http://www.w3.org/1999/xhtml"
lang="bg" xml:lang="bg">

Където bg е двубуквения код на езика на текста в страницата.

Meta информация

meta етикета се използва за задаване на информация с широко приложение - от кодирането на символите в страницата до ключови думи за търсачките.

Атрибути:

(i18n)
Атрибутите за интернационализация
id
Уникално за документа име
http-equiv
Еквивалент на стойност която може да се зададе чрез HTTP.
name
Име
content*
Съдържание/стойност. Този атрибут е задължителен.
scheme
Система използвана за стойността на content.

Обикновено за елемента meta се задават атрибутите http-equiv или name + (и в двата случая) content. Варианта с http-equiv се използва за да се зададе стойност която има еквивалент в HTTP. Зададените чрез елемента meta стойности обаче имат по-нисък приоритет от зададените стойности чрез HTTP. Това означава, че ако една стойност е зададена чрез HTTP, съответстващ елемент meta ще бъде игнориран от браузъра.

Примери за използване на meta

Някои търсачки може да индексират документа по съдържанието на неговите meta етикети description (описание) и keywords (ключови думи):
<meta name="description" content="HTML ръководство" />
<meta name="keywords" content="HTML, XHTML, CSS" />

Стойността на Content-Type трябва да е вида на документа и енкодинга които трябва да бъде използван за да бъдат показани символите:
<meta http-equiv="Content-Type"
content="text/html; charset=Windows-1251" />

Заглавие на документа (title)

Заглавие на страницата се задава с етикета title. Заглавието на страница обикновено се показва на заглавната лента на прозорците, когато страницата се отвори в браузъра, записва се в списъка bookmarks, когато се запазва адреса на страницата, и се показва при резултатите в търсещите машини.

Съдържанието на title

Заглавието трябва да дава ясна представа за съдържанието на документа. Първите думи трябва да бъдат най-описателните за самата страница. Не започвайте заглавието с текст, който се среща на няколко различни страници, като име на сайт например, или с текст който няма смисъл извън контекста, например: "Първа част - XHTML етикети". Това има особено значение когато се гледат резултатите от търсене или се запаметяват адресите на страниците в bookmarks.

Дължината на title

Имайте в предвид че заглавието, ако е прекалено дълго, няма да бъде показано цялото в заглавния ред на прозореца, в списъка с bookmarks или в резултатите от търсене, затова можете да разчитате най-много на първата част на заглавието да предаде описанието на страницата. Препоръчва се заглавието да е дълго не повече от 40-60 символа.

Базов адрес

Базов адрес на документа може да се зададе с етикета base. (От базовия адрес зависят релативните адреси - вижте Адресите в WWW).

Атрибутите са href* (този атрибут е задължителен) и id.

Пример: <base href="../" />
В този случай всички релативни адреси ще се държат така сякаш документа е в по-горната директория.

Етикета link се използва за свързване на документа с други документи - например CSS.

Атрибути:

charset
Кодировката на свързания документ. (Може да се наложи да се зададе ако кодировката на документите е различна и не е оказана от самия свързан документ).
href
Адреса на документа който да бъде свързан.
hreflang
Двубуквения код на езика на свързания документ.
type
MIME тип на съдържанието на свързания документ.
rel
Relationship - връзка (отношение) с документа
rev
Показва че адреса в href води до предишния документ. (Например когато има поредица от свързани документи - rel може да указва следващия, а rev - предишния). Няма практически смисъл. (?)
media
Списък от медии (screen, projection, print, ...) разделени със запетайки.

Примери за използването на link

За свързване на алтернативен документ, например - подходящ за принтиране - работи в IE! (версия 6):
<link rel="alternate"
media="print" href="printme.html" />

За свързване на икона (в IE работи само от време на време и трябва да е .ico файл, за повече подробности вижте напр. favicon.com>):
<link rel="shortcut icon"
href="fav-icon.ico" type="image/x-icon" />

За свързване на постоянен CSS документ:
<link rel="stylesheet"
type="text/css" href="style.css" />

(За повече подробности относно използването на етикета link за стилове - вижте страницата за CSS).

Стилове

(X)HTML дава възможност към документите да се включва специален език за оформлението им. Това може да става по три начина - в отделен документ (който се свързва с елемента link), в главата на документа (в елемента style) или директно за всеки елемент (не се препоръчва) - чрез атрибута style, като в този случай е необходимо за документа да се зададе стилов език по подразбиране.

XHTML не е обвързан с който и да е език за стилове, но на практика съществува само един широко разпространен език и това е CSS.

Елемента style

За добавяне на стилове в главата на документа се използва елемента style. Ето ги и атрибутите му:

(i18n)
Атрибутите за интернационализация.
id
Уникално за документа име.
type*
MIME тип на съдържанието. За CSS стойността ще е text/css. Този атрибут е задължителен.
media
Списък от медии (screen, projection, print, ...) за които е предназначен стила, разделени със запетайки.
title
Заглавие. (?)
xml:space
Дали да се запазват белите полета. Стойността е preserve и не може да бъде променяна.

Пример:
<style type="text/css" href="style.css" />

В XHTML ако в стила се използват символите (<) или (&) той трябва или да бъде поставен в отделен файл, или да бъде маркиран като CDATA с <[!CDATA[ и ]]>

Пример:
<style type="text/css">
/* <[!CDATA[ */

CSS код тук

/* ]]> */
</style>

Браузъри, които не разпознават елемента style, най-вероятно ще покажат съдържанието му като текст. Единствения начин това да се предотврати е кода за стиловете да се поставя в отделен файл и да се свързва чрез етикета link.

Забележка: В HTML беше разрешено стиловете да се скриват в HTML коментари. На програмите поддържащи XML обаче им е разрешено да премахват коментарите от XML документи без да ги разглеждат. Ето защо кода за стиловете в XML/XHTML документи не бива да се крие в коментари.

Стилов език по подразбиране

Документи които използват атрибута style трябва да задават и стилов език по подразбиране. Това може да се направи по два начина - с meta декларация в главата на документа (което има по-висок приоритет):
<meta http-equiv="Content-Style-Type" content="text/css" />
или чрез HTTP (по-нисък приоритет). Ако езикът по подразбиране за стиловете не е зададен по един от тези два начина, езикът по подразбиране ще е text/css, но документа ще бъде неправилен по стандарта на W3C.

Забележка: За етикета style здължителният атрибут type трябва да се зададе дори и когато в документа е зададен стилов език по подразбиране и стила в елемента style е от този вид.

Скриптове

Чрез този етикет към страницата може да се добави скрипт (малка програма). Този елемент може да се намира в главата на документа и най-често се поставя там, но е позволено да бъде и в тялото. Ако се използва за да свърже външен файл обаче, се поставя задължително в главата.

XHTML не е обвързан с който и да е език за скриптове/програмиране. Ограничението е в това какъв език се поддържа от браузърите. Повечето браузъри разбират някаква версия на езика JavaScript.

Атрибути:

id
Уникално за документа име
charset
Кодировката на свързания документ (когато скрипта е в отделен документ). Обикновено не се налага да се задава този атрибут, освен, може би, ако кодировката на HTML документа не е различна.
type*
MIME тип на съдържанието. Този атрибут е задължителен.
src
Адреса на свързания документ (когато скрипта е в отделен документ). Ако зададете този атрибут, всякакво съдържание на етикета би трябвало да бъде игнорирано от браузъра.
defer
Стойността може да бъде само defer. Подсказва на браузъра че скрипта няма да генерира никакво съдържание за страницата, така че той може да продължи зареждането на страницата преди изпълнението на скрипта да е приключило. (Работи в IE 6, не работи в Mozilla FF 1 и в Opera 7.54).
xml:space
Стойността е preserve и не може да бъде променяна.

Пример за свързване на отделен файл:
<script type="text/javascript"
src="script.js"></script>

В XHTML ако скрипта съдържа символите (<) или (&) той трябва или да бъде поставен в отделен файл, или да бъде маркиран като CDATA с <[!CDATA[ и ]]>

Пример:
<script type="text/javascript">
// <[!CDATA[

// JavaScript код тук

// ]]>
</script>

Забележка: в XHTML е забранено скриптовете да пишат по документа, както това става с JavaScript функцията document.write(). Съдържанието на документа може да бъде променяно по друг начин.

Браузъри, (много стари браузъри), които не разпознават елемента script, най-вероятно ще покажат съдържанието му като текст. Единствения начин да се предотврати това е скрипта да се поставя в отделен файл и да се свързва чрез атрибута src.

Забележка: В HTML беше разрешено скриптовете да се скриват в HTML коментари. На програмите поддържащи XML обаче им е разрешено да премахват коментарите от XML документи без да ги разглеждат. Ето защо скриптивете в XML/XHTML документи не бива да се крият в коментари.

Скриптов език по подразбиране

Документи които използват атрибути за събития от потребителския интерфейс (events) или атрибутите onfocus и onblur за елементи които могат да получават фокуса (виж атрибутите focus) трябва задължително да задават и скриптов език по подразбиране. Това може да стане по два начина: или чрез HTTP или с meta декларация в главата на документа (което има по-висок приоритет):
<meta http-equiv="Content-Script-Type" content="text/javascript" />
(Където text/javascript е MIME типа на скрипта.)

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

Забележка: За етикета script здължителният атрибут type трябва да се зададе дори и когато в документа е зададен скриптов език по подразбиране и скрипта в елемента script е от този вид.

Един "завършен" XHTML документ

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

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


<head>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" />
<title>Заглавие</title>
</head>


<body>
Съдържане
</body>


</html>

Това е завършен XHTML документ, но без XML декларацията. В този случай според W3C трябва да се използва енкодинг UTF-8, но ако документа е изпратен не като XML, а като text/html, XML правилата за нас не важат. Също така трябва да се отбележи, че meta декларацията не е задължителна, но все пак трябва по някакъв начин да укажем енкодинга.

Тяло на документа

Тялото на документа се обгражда с отварящия и затварящия етикет body. В тази част на документа се поставя това което ще се показва на екрана. Елемента body може да съдържа пряко само елементи на блоково ниво.

Атрибути:

(coreattrs)
Основните атрибути
(i18n)
Атрибутите за интернационализация
(events)
Атрибутите за събития в потребителския интерфейс
onload
скрипт който да бъде изпълнен когато страницата се зареди в браузъра
onunload
скрипт който да бъде изпълнен когато потребителят напусне страницата

Елементи на блоково ниво

Етикетите на всички елементи на блоково ниво, с изключение на script, могат да съдържат атрибутите (coreattrs), (i18n) и (events).

<h1>-<h6>
Заглавията са на шест нива, като h1 е най-главното, а h6 - най-маловажното. Тези елементи могат да съдържат само елементи на текстово ниво.
<p>
Огражда отделните параграфи в текста. Този елемента може да съдържа само елементи на текстово ниво.
<hr />
(хоризонтална линия) може да се използва за разделител между различни части на документа. Този елемент не може да съдържа други елементи.
<blockquote>
блоков цитат. Използва се за цитиране на един или повече параграфи. Обикновено се визуализира като отместен надясно текст. Този елемент може да съдържа пряко само елементи на блоково ниво. Има един допълнителен атрибут - cite със стойност която трябва да е адрес в Интернет (URI) указващ откъде е взет цитата. Този атрибут обаче няма никакво приложение в браузърите.
<address>
Информация за автор според W3C. Използва се за информацията която стои на дъното на повечето страници в Уеб - Copyright, информация за контакти, и т. н. Този елемента може да съдържа само елементи на текстово ниво.
<div>
използва се за да обгражда елементи на които искаме да поставим някакъв атрибут или стил (CSS). Може да съдържа елементи на блоково или текстово ниво.
<pre>
(предварително форматиран текст) Оказва на браузъра че даден текст трябва да се покаже с всичките си интервали и без да се смесват редовете. Същото нещо може да се постигне с CSS за който и да е друг блоков елемент. Елементът pre може да съдържа елементи на текстово ниво с изключение на img, object, big, small, sub и sup
<noscript>
Съдържанието на този елемент ще бъде показано в браузъра ако той не поддържа скриптове. По стандарт съдържанието на този елемент трябва да бъде показано ако браузъра не разбира езика на елемента script, който се намира по-нагоре в документа, но IE6 и MFF 1 не го разбират по този начин. (Работи в Opera 7.54). Може да съдържа пряко само други елементи на блоково ниво.

Списъци

Списъците биват три вида: номерирани, неномерирани и дефиниционни.

При номерираните (<ol>) и неномерираните (<ul>) списъци точките се означават с <li>.

Примерен код:
<ol>
<li>HTML</li>
<li>XHTML</li>
<li>XML</li>
</ol>

Където <ol> ще бъде <ul> ако искаме списъка да не е номериран.

При дефиниционните списъци (<dl>) всяка точка е съставена от термин (<dt>) и определение (<dd>).

Пример:
<dl>
<dt>world-wide</dt><dd>световна</dd>
<dt>web</dt><dd>паяжина</dd>
</dl>

Елемента dt може да съдържа само елементи на текстово ниво, а dd и li могат пряко да съдържат елементи както на текстово, така и на блоково ниво (включително други списъци).

Етикетите на всички елементи за списъци могат да съдържат атрибутите (coreattrs), (i18n) и (events).

Елементи на текстово ниво

Етикетите на всички елементи от текстово ниво, с изключение на br, могат да съдържат атрибутите (coreattrs), (i18n) и (events).

Всички елементи от текстово ниво, с изключение на br, object, img и script, могат да съдържат (само) текст и елементи от текстово ниво.

<br />
Принудително прекъсване на реда. Не бива да се използва като алтернатива на започването на нов абзац. (Този елемент е премахнат от XHTML 2.0 в полза на нов елемент за ред).
<span>
Огражда текст върху който искаме да приложим стилове (CSS).
<bdo>
(BiDi Over-ride) използва се за да укаже посоката на текста, например за да се изпише дума на писменост която се изписва в посока обратна на посоката по подразбиране за документа. Атрибута dir* (който е задължителен) има две възможни стойности ltr (от ляво на дясно) и rtl (от дясно на ляво). (Този елемент е премахнат от XHTML 2, където всички елементи могат да имат атрибута dir със същия резултат). Пример: <bdo dir="rtl">Добре Дошли!</bdo>
<map>
Използва се за изображения-карти.
<object>
Използва се за вграждане на обекти в страницата - например Flash, Java аплети, различни видове файлове.
<img>
Използва се за вграждане на картинки в страницата.
<em>
emphasis - ударение, подчертаване, наблягане. Пример: Napster <em>беше</em> страхотна програма.
<strong>
по-силно наблягане.
<dfn>
дума или израз която следва да бъде дефинирана. Пример: <dfn>HTTP</dfn> означава "протокол за прехвърляне на хипертекст".
<code>
програмен код. Елемент на текстово ниво е, но ако е написан на повече от един ред в кода повечето браузъри го показват както биха показали pre. (Дали работи така във всички браузъри, въпреки че е елемент на текстово ниво?) В XHTML 2.0 вече имаме елемент за код на блоково ниво.
<q>
Трябва да поставя текста в кавички, но не се поддържа от IE (версия 6). Този елемент е заменен с нов в XHTML 2, където текста не би трябвало да бъде автоматично обграждан с кавички, това може да се промени и при q чрез CSS. Пример: <q>Този текст в кавички ли е?</q>
<samp>
примерен резултат от програма (??).
<kbd>
нещо което потребителят би написал.
<var>
променлива, като в програмен код. Пример: <var>i</var>.
<cite>
цитат. Пример: <cite>Това тук е някакъв цитат</cite>.
<abbr>
съкращение. Използва се с атрибута title за да се покаже какво означава съкращението. В някои браузъри думата се подчертава с прекъсната линия и когато се посочи с мишката се появява малко прозорче с текст (tool tip). IE (версия 6) не разпознава този етикет. Пример: <abbr title="страница">стр.</abbr> 15694. Съвет: Не разчитайте особено на елементите abbr и acronym, те нямат никакъв ефект в по-старите браузъри. Все още сигурен начин за даване на обяснение е чрез текст в скоби: WWW (World Wide Web).
<acronym>
дума, образувана от началните букви на други думи. Вижте abbr за начин на ползване. В XHTML 2.0 този елемент отпада в полза на abbr. Пример: <acronym title="World Wide Web">WWW</acronym>
<sub>
Показва текста малко по-надолу от останалия, като индекс. Пример: H2O
<sup>
Показва текста малко по-нагоре от останалия, като степен. Пример: 22 = 4
<ins>
Обозначава текст или част от документа която е била добавена в последствие. Пример: На сайта ще намерите много полезни неща <ins>и отскоро - безплатни уроци по XHTML!</ins>
<del>
Обозначава текст или част от документа която все едно е била изтрита (вече не е валидна). Пример: На сайта ще намерите много полезни неща и <del>безплатни</del> уроци по XHTML! (Промоцията свърши!)
<script>
Вижте секция "Скриптове".

С елемента a можете да поставяте в страниците препратки (още наричани "връзки") към други страници или към части в същата страница.

Елемента a може да съдържа други елементи от текстово ниво, в това число изображения, но не бива да съдържа други елементи a.

Забележка: Текста в елемента a в това ръководство ще наричаме "надпис на препратката". Надписът на препратките изпъква в страниците, обикновено е подчертан, има различен цвят и т. н. За улеснение на навигацията за посетителите, както и за евентуално по-добро представяне пред търсещите машини, се препоръчва надписът на препратките (или ако е картинка - картинката и атрибута ѝ alt) да отговаря на целта на препратката. Също така на една страница не бива да има две препратки с един надпис, но с различни цели и разбира се, препратки с една цел е добре да имат еднакъв надпис. Не използвайте надписи на препратките от вида: "тук", "щракнете тук", "вижте тук", "click here" и т. н. Посочените примери не подсказват по никакъв начин какво има на другия край на препратката. Понякога за да се избегнат такива феномени е необходимо да се промени малко изречението което съдържа връзката, но това не би трябвало да бъде голям проблем.

Атрибути:

(coreattrs)
Основните атрибути
(i18n)
Атрибутите за интернационализация
(events)
Атрибутите за събития в потребителския интерфейс
(focus)
Атрибутите за елементи които могат да получават фокуса
charset1
Подсказва на браузъра каква кодировка на символите да използва за да покаже документа към който сочи връзката. Това обикновено няма да е необходимо (виж забележката под този списък).
type1
MIME тип - например за HTML е text/html. Подсказва на браузъра какъв е вида файла към който сочи връзката. Това обикновено няма да е необходимо, защото сървъра ще му каже какъв е вида на файла (виж забележката под този списък).
name
Уникално за документа име. Това име би трябвало да съвпада със стойността на атрибута id (вижте секцията Основни атрибути). (Атрибутът name на елемента a отпада от XHTML 1.1 в полза на атрибута id).
href
Адреса до който да води препратката
hreflang1
Езика на страницата или елемента към който води препратката (виж забележката под този списък).
rel
Relationship - Вид на връзката между този и свързания документ. (Не служи за нищо тук?)
rev
Вид на връзката между този и свързания (предишен в поредицата) документ. (Не служи за нищо тук?)
shape
rect, circle, poly или default. Стойността по подразбиране е rect. Използва се за изображения-карти.
coords
разделен със запетайки списък от дължини (в пиксели или проценти, пр.: "50%,9,70%,4"). Използва се за изображения-карти.

1 Забележка: charset, type и hreflang имат по-нисък приоритет в сравнение със стойностите зададени чрез HTTP или от самия свързан документ. Можете да видите страницата HREFLANG and TYPE considered harmful> за коментари защо не трябва да се използват тези атрибути.

Пример:
<a href="http://www.w3.org/"
title="Сайта на W3C">w3.org</a>

Препратки към елементи в HTML документ

Цел на препратка може да бъде всеки елемент с зададено id. (В миналото само a елементи със зададен атрибут name са можели да бъдат цел на препратки).

За да се направи препратка към даден елемент използваме релативния или пълния адреса на документа + знака диез (#) + id-то на елемента-цел на препратката.

Пример: (препратка към елемент с id="links" в същия документ)

<a href="#links">Препратки</a>

Вграждане на изображения

Чрез елемента img могат да се вграждат изображения в HTML документ. В HTML 4 е въведен нов, универсален елемент за включване на обекти в HTML-документа: object. Основният недостатък на стария, но все още широко използван метод - чрез елемента img, е че за алтернативно съдържание може да се използва само прост текст. (Елементът img е премахнат от XHTML 2, където всеки елемент може да бъде картинка).

Формати за изображения които работят в повечето браузъри и на повечето операционни системи са GIF, JPG и PNG, като PNG е сравнително нов формат.

Атрибути:

(coreattrs)
Основните атрибути
(i18n)
Атрибутите за интернационализация
(events)
Атрибутите за събития в потребителския интерфейс
src*
Адрес на изображението. Този атрибут е задължителен
alt*
Алтернативно описание на изображението. Този атрибут е задължителен. За изображения за които няма практически смисъл да се предоставя алтернативен текст, стойността на alt атрибута може да се остави празна. Пример: alt="".
longdesc
Адрес на дълго алтернативно описание на изображението. Този атрибут не се поддържа от (повечето? от) браузърите.
height
Височината на изображението в пиксели или проценти (като процент от наличното пространство в прозореца).
width
Широчината на изображението в пиксели или проценти (като процент от наличното пространство в прозореца).
usemap
Адрес на map елемент. Използва се за изображения-карти.
ismap
Използва се за изображения-карти от страна на сървъра и единствената възможна стойност е ismap.

Размер на изображенията

Ако размера на изображението е известен, то може да е добра идея той да се зададе чрез атрибутите width и height. Това улеснява браузърите които могат тогава да заделят необходимото пространство на страницата и да покажат всичко останало там където трябва да бъде преди още да са се заредили целите изображения.

Чрез атрибутите за размера можете също така да окажете изображението да се покаже по-голямо от колкото е в действителност. Това разбира се най-вероятно ще развали качеството му.

Забележка: не указвайте по-малък размер на изображението от действителния. Ако искате изображението да се покаже по-малко, променете размера му чрез редактор за изображения, в противен случай хабите напразен трафик.

Изображения-карти

[Тази секция не е завършена все още]

За сега можете да видите секцията Image maps> в ръководството за HTML 4 на сайта на W3C.

Елементът map задава изображение-карта от страна на клиента, която може да бъде свързана с елемент img, object (ако обекта е изображение) или input (също ако е изображение). Изображение-карта се асоциира с елемент чрез атрибута usemap на елемента.

Елемента map може да съдържа елементи на блоково ниво както и area елементи.

Атрибути за етикета map:

(coreattrs), id*
Основните атрибути, като атрибута id е задължителен.
(i18n)
Атрибутите за интернационализация
(events)
Атрибутите за събития в потребителския интерфейс
name
Уникално за документа име. Това име би трябвало да съвпада със стойността на атрибута id (вижте секцията Основни атрибути). (Атрибутът name на елемента map отпада от XHTML 1.1 в полза на атрибута id).

Елемента area (регион) не може да съдържа други елементи или текст.

Атрибути за елемента area:

(coreattrs)
Основните атрибути.
(i18n)
Атрибутите за интернационализация
(events)
Атрибутите за събития в потребителския интерфейс
(focus)
Атрибутите за елементи които могат да получават фокуса
shape
Формата на региона. Стойността може да бъде rect (правоъгълник), circle (кръг), poly (списък от координати) или default ("определя целия регион"?). По подразбиране е rect.
coords
Координати на региона. Разделен с запетайки списък от координати или дължини в пиксели или проценти. За форма rect - ляв x, горен y, десен x, долен y, за circle - център x, център y и радиус, за poly - x1, y1, x2, y2, ..., xN, yN, като последните x и y трябва да са същите като първите за да затворят областта.
href
Адрес
nohref
Показва че този регион не е активен. Единствената възможна стойност е nohref.
alt*
Алтернативен текст. Този атрибут е задължителен.

Изображения-карти от страна на сървъра

Изображенията-карти от страна на сървъра (server-side image maps) изискват специална програма която работи на сървъра и не се препоръчва заради случаите в които браузъра не може да покаже изображението - например при текстови браузъри или когато визуализирането на изображения е забранено от опциите на браузъра. Когато потребителя щракне в/у изображение с атрибут ismap което се намира в a елемент, към адреса на връзката се прибавят координатите върху които е щракнато с мишката, като горният ляв ъгъл на изображението е с координати 0,0.

Вграждане на обекти

Чрез елемента object в HTML документа могат да се вграждат различни файлове (включително други HTML файлове). Понякога тези файлове изискват допълнителни добавки към браузъра наречени плъгини.

За вграждане на различни видове обекти се използват различни атрибути. В ръководството за HTML 4.01 на W3C може да бъде намерена подробна информация за стандарта за елемента object> (en). За вграждане на определен вид файлове обаче може да се наложи да потърсите повече информация другаде.

Елемента object може да съдържа всякакви други елементи, включително други object елементи, като алтернативно съдържание. Ако обекта не може да бъде показан по някаква причина - например ако изисква плъгин който не е инсталиран или този вид обекти са забранени от опциите на браузъра, браузъра трябва да покаже алтернативното съдържание. За съжаление това не работи в някои браузъри. Например Internet Exploer (6) ще се опита да покаже и двата обекта при всички случаи.

Атрибути:

(coreattrs)
Основните атрибути
(i18n)
Атрибутите за интернационализация
(events)
Атрибутите за събития в потребителския интерфейс
declare
Този атрибут не се поддържа от браузърите (?). Указва на браузъра да не показва обекта преди той да е повикан (може да бъде повикан например с връзка към него). Единствената възможна стойност е declare.
classid
Адрес на имплементация.
codebase
Базов адрес за classid, data, archive.
data
Адрес на данните на обекта.
type
MIME тип за data.
codetype
MIME тип за classid. Ако липсва, стойността по подразбиране ще е тази на атрибута type.
archive
Списък от адреси на архивирани/компресирани файлове разделени с интервал.
standby
Съобщение което да бъде показвано от браузъра докато обекта се зарежда.
height
Височината на обекта в пиксели. Може да се зададе също и чрез стилове.
width
Широчината на обекта в пиксели. Може да се зададе също и чрез стилове.
usemap
Адрес на map елемент. Използва се за изображения-карти, ако обекта е изображение.
name
Име (когато се праща като част от формуляр).
tabindex
Номер в реда за табулация (за обекти които могат да получават фокуса). Този атрибут не е широко поддържан.

Допълнителни параметри могат да се задават към обекта чрез етикета param. param етикетите трябва да бъдат непосредствено след отварящия етикет object. Тези параметри би трябвало да може да се задават и като атрибути в етикета object.

Атрибути на param:

id
Уникално за документа име
name
Име на параметъра. Този атрибут е задължителен.
value
Стойност на параметъра.
valuetype
Тип на стойността на атрибута value. Има три възможни стойности: data (текст - по подразбиране), ref (адрес) и object (id на друг обект в страницата).
type
Само ако valuetype е ref: MIME тип на документа, чиито адрес е посочен във value.

Пример: (за вграждане на друг html документ)

<object data="doc.html"
width="400" height="100">
Грешка. Документа не може да бъде вграден.
</object>

Таблици

тази секция предстои да бъде написана

(caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))

Елементи:
caption  %Inline;
thead    (tr)+
tfoot    (tr)+
tbody    (tr)+
colgroup (col)*
col      EMPTY
tr       (th|td)+
th       %Flow;
td       %Flow;

Атрибути на table
  %attrs;
  summary     %Text;
  width       %Length;
  border      %Pixels;
  frame       %TFrame;
  rules       %TRules;
  cellspacing %Length;
  cellpadding %Length;

Формуляри

Формулярите са части от документа, които съдържат нормални HTML етикети, специални етикети, наредчени контроли и надписи за тези контроли. След като попълнят формуляр, потребителите обикновено изпращат формуляра към уебсървър за обработка.

Атрибути за form

(coreattrs)
Основните атрибути
(i18n)
Атрибутите за интернационализация
(events)
Атрибутите за събития в потребителския интерфейс
action*
адрес към който информацията от формуляра да бъде изпратена. Ако стойността се остави празна (""), информацията се изпраща към документа съдържащ формуляра. Този атрибут е задължителен.
method
Начин на изпращане - може да бъде post или get. По подразбиране е get. Вижте секцията "Изпращане на формуляр".
enctype
MIME тип с който информацията се праща на сървъра. По подразбиране е application/x-www-form-urlencoded, но ако формуляра съдържа input елемент тип file трябва да се използва multipart/form-data.
onsubmit1
Скрипт, който да бъде изпълнен преди формуляра да бъде изпратен.
onreset1
Скрипт, който да бъде изпълнен преди формуляра да бъде изчистен (например чрез натискане на бутон reset).
accept
Списък от MIME типове, разделени с запетайки, които сървъра може да обработи правилно. Браузърите могат да използват тази информация, като филтрират файловете когато позволяват на потребителя да избере файл за елемент input от тип file.
accept-charset
Списък от енкодинги, разделени с интервали или запетайки, които сървъра приема. Сървъра може да приеме само един от тези енкодинги за един обект. По подразбиране браузърите могат да използват енкодинга използван за трансфера на документа съдържащ формуляра.

1 Документи които използват атрибутите onsubmit и/или onreset трябва задължително да задават и скриптов език по подразбиране. Вижте секцията "скриптов език по подразбиране" за повече информация.

Контроли

Елементите за контроли са:

textarea
Кутия в която може да се въвежда текст. Първоначалната стойност може да се зададе между отварящия и затварящия етикет textarea. С атрибутите rows* и cols*, които са задължителни се задава големината на кутията (броя на редовете и колоните). Другите атрибути са: (coreattrs), (i18n), (events), (focus), name, disabled, readonly, onselect и onchange. Те са със същото значение като съответните атрибути за елемента input.
select
Меню с опции. Този елемент може да съдържа (само) елементите optgroup и option. Изборите се представят с елемента option. Атрибутите за елемента select са: (coreattrs), (i18n), (events), tabindex, onfocus, onblur, name, size, multiple, disabled и onchange. С атрибута size се задава колко от опциите да бъдат видими наведнъж (обикновено се използва заедно с атрибута multiple). Атрибута multiple, с единствена възможна стойност "multiple", позволява на потребителя да избира повече от една опция наведнъж. Не всички потребители обаче може да знаят как да направят това. Например в Windows трябва да се задържи бутона Ctrl докато се правят изборите.
optgroup
Този елемент разделя опциите на подгрупи. Може да съдържа само елемента option. Атрибутите са: (coreattrs), (i18n), (events), disabled и label* (заглавие което да бъде показано в менюто) - този атрибут е задължителен.
option
С този елемент се задава опция. Заглавието което да се показва в менюто може да се зададе или с атрибута label (не се поддържа от IE6, FF1 и Opera7 / Win) или между отварящия и затварящия етикет на елемента. Стойността която да бъде изпратена на сървъра ако тази опция бъде избрана се задава чрез атрибута value. С атрибута selected, с единствена възможна стойност "selected", се указва, че тази опция трябва да бъде предварително избрана от браузъра. Ако в етикета на елемента select не е зададен атрибута multiple само една опция от менюто може да бъде предварително избрана. Когато не използвате multiple за предпочитане е винаги да задавате опция по подразбиране.
button
Бутон, който може да бъде три вида: button, submit или reset, които имат същата функция като бутони от същите видове задавани чрез елемента input. Типа се задава чрез атрибута type, по подразбиране е submit. Другите възможни атрибути са name, value и disabled със същите значения като за елемента input. Преимуществото на елемента button е, че той може да съдържа и други елементи (на текстово или блоково ниво, с изключение на a, form и form-контроли).
input
Чрез този елемент могат да се задават няколко различни видове контроли (Вида се задава чрез атрибута type):
text
Текстово поле позволяващо въвеждането на един ред текст.
password
Същото като текстовото поле, но скрива въвеждания текст. Реалната стойност си остава въведения от потребителя текст, а не това което браузъра показва на екрана.
checkbox
Кутийка със стойност "включено" или "изключено". С атрибута checked кутийката може да бъде включена по подразбиране. Атрибута checked може да има само една възможна стойност - "checked". Няколко checkbox контроли могат да се групират като им се зададе едно и също име (стойност на атрибута name).
radio
"Радиобутон". Могат да бъдат "включени" или "изключени". Когато няколко от тях имат еднакво име (стойността на атрибута name) те са взаимно изключващи се - когато един бъде включен, другите се изключват. Радиобутон може да бъде включен по подразбиране с атрибута checked със стойност "checked", Ако никой радиобутон от една група не е включен по подразбиране, браузърите трябва да избират първия бутон в групата. Не всички браузъри обаче спазват това правило, затова винаги изрично задавайте един бутон от всяка група като "включен".
submit
Бутон, чрез който се изпраща формуляра.
reset
Бутон, който връща стойностите по подразбиране на всички контроли във формуляра.
file
Позволява на потребителя да избере файл, който да бъде изпратен на сървъра.
hidden
Скрито поле. Използва се за информация която искаме да бъде изпратена към сървъра, но не искаме потребителя да може да променя.
image
Изображение, алтернатива на бутона submit. С атрибута src се задава адрес на файла с изображението, а с alt - алтернативен текст.
button
Бутон, който няма никакво зададено действие по подразбиране. Използва се за да стартира скрипт, който може да се зададе например в стойността на атрибута onclick.
object
На теория разни обекти също могат да бъдат контроли във формуляр, но не е ясно точно коя е тяхната "стойност".

Атрибути за input

(coreattrs)
Основните атрибути
(i18n)
Атрибутите за интернационализация
(events)
Атрибутите за събития в потребителския интерфейс
(focus)
Атрибутите за елементи които могат да получават фокуса
type
Вид на контролата (text, password, checkbox, radio, submit, reset, file, hidden, image или button). По подразбиране е text.
name(*)
Име, което се изпраща към сървъра заедно със стойността. Този атрибут е задължителен за всички input контроли с изключение на submit и reset.
value
Първоначална стойност. За checkbox и radio - постоянна стойност (потребителят не може да я променя). За бутоните това е текста, който се показва на бутона.
checked
Само за checkbox и radio бутони - определя дали опцията е включена по подразбиране. Стойността може да бъде само "checked".
disabled
(Забранен). Стойността може да бъде само "disabled".
readonly
(Само за четене). За text и password. Стойността може да бъде само "readonly".
size
Дължина на контролата в пиксели. За text и password - дължина в брой символи.
maxlength
За текстови полета - максимален брой символи които потребителя да може да въведе.
src
Само за image. Адреса на изображението.
alt
Само за image. Алтернативен текст.
usemap
Само за image. Адреса на карта. Вижте секцията за изображения-карти.
onselect
Скрипт, който да бъде изпълнен когато текст в контролата бъде избран от потребителя.
onchange
Скрипт, който да бъде изпълнен когато стойността на контролата бъде променена от потребителя.
accept
Само за file - списък от MIME типове, които формуляра приема.

Какво се изпраща към сървъра?

Към сървъра в повечето случаи се изпращат двойките име-стойност (name-value) на контролите. Изключение са контроли които са забранени (disabled), неизбрани checkbox и radio контроли, select контроли в които не е избрана нито една опция, reset бутони и, ако формуляра има повече от един, ненатиснати submit бутони (или натиснат submit бутон без name атрибут). Имената и стойностите на тези контроли не се изпращат към сървъра. За input елемент file, към сървъра се изпраща съдържанието на файловете чиито адреси са въведени.

Надпис на контроли

С изключение на бутоните (където надписа се задава с атрибута value), за контролите може да се зададе надпис с етикета label. Има два начина надписа да се асоциира към дадена контрола. Единия начин е контролата да се напише като съдържание на елемента label, като самия надпис се постави преди или след контролата. Пример:
<label>Име: <input type="text" name="name" /></label>
Другия начин е да се използва атрибута for, чиято стойност трябва да бъде идентична със стойността на атрибута id на контролата. Пример:
<label for="comments">Коментари:</label><br />
<textarea id="comments" name="comments" ></textarea>

Един label елемент може да съдържа всякакви елементи от текстово ниво, но само една контрола и не може да съдържа други label елементи. Атрибутите са (coreattrs), (i18n), (events), for, accesskey, onfocus и onblur. Когато елемента label получи фокуса на клавиатурата, той трябва да го предаде на асоциираната с него контрола.

Групиране на контроли

Елемента fieldset позволява тематично групиране на контролите. Атрибутите са (coreattrs), (i18n) и (events). Заглавието на групата се задава чрез елемента legend. Атрибутите му са същите като за fieldset, плюс accesskey. Само един legend елемент е позволен в fieldset елемент и той не може да бъде предхождан от текст или други елементи.

Изпращане на формуляр

Начина на изпращане на формуляр се задава чрез атрибута method на елемента form. Стойността на този атрибут може да бъде get или post. При "get", информацията от формуляра се изпраща заедно с адреса. Ако във формуляра има дълъг текст (напр. от textarea), парола или файл, използвайте post. Също така ако информацията от формуляра се използва за да се правят промени на сървъра (напр. записване на файл) препоръчително е да се използва post.

кодировка и формуляри> (en)

Примерен код за формуляр

<form action=""> <fieldset> <legend> Лична информация </legend> <label> Име:<br /> <input name="fname" /> </label> <br /> <label> Фамилия:<br /> <input name="lname" /> </label> </fieldset> <fieldset> <legend>Предпочитан шрифт</legend> <label> <input type="radio" name="font" value="serif" checked="checked" /> Serif </label> <label> <input type="radio" name="font" value="sansserif" /> Sans-serif </label> </fieldset> <fieldset> <legend>Други предпочитания</legend> <label>Цветове:<br /> <select name="color" multiple="multiple" size="5"> <optgroup label="Светли"> <option value="white">бял</option> <option value="yellow">жълт</option> </optgroup> <optgroup label="Тъмни"> <option value="blue">син</option> <option value="black">черен</option> </optgroup> </select> </label> <br /> <label>Размер на текста:<br /> <select name="textsize"> <option value="14" selected="selected">14 px</option> <option value="16">16 px</option> </select> </label> <br /> <label> <input type="checkbox" name="onesizeforall" /> Използвай този размер за всички елементи </label> </fieldset> <fieldset> <input type="submit" value="Изпрати" /> <input type="reset" value="Изчисти" /> </fieldset> </form>

Къде са Frames?

Frames позволяват на една страница да се покажат два или повече HTML документа. Frames не могат да се използват в XHTML 1.0 Strict, ако искате да ги използвате ще трябва да използвате XHTML 1.0 Frameset - за самия документ който обединява останалите, и XHTML 1.0 Transitional - за останалите.

XHTML 1.0 Transitional поддържа атрибута target на препратките, с който може да се определя в коя рамка да се зареди свързания документ. Например ако имате две рамки и искате препратките от документа в едната рамка да се отварят в другата, ще трябва да използвате този атрибут. Също така ако имате препратки към външен сайт, най-вероятно няма да искате да отворите новия сайт в една от вашите рамки (не се препоръчва) и пак ще трябва да използвате атрибута target.

Преди да решите дали да използвате Frames обаче, помислете дали наистина са ви необходими. Frames могат да бъдат полезни например ако имате един голям индекс който не искате да се зарежда с всяка страница по отделно.