, ни
1.1).
!!:! httр llреоpl • .орега .сотlbruceUdevJskеletопhtml
I
_ • _Imogo _ Souк.Ropo.
bL.~J
..... ... .. - .......
"
...
.. . . .
... - ..... ......
" "
. ..
II•
11Тh. doOJmerd 15valtdН11lR.5 + /tRjA,(subjedtolhl utter DC'W:l'М1ess otlWs BtМce). lmag.... po" No Iтaga tn the doeum8nt
sou...,. 1.
2.
< !doc~)'Pe h~ <м:tа
З.
cbanl!t-at.f-8>"'
4
TodI.y 1 dranlc coffee for bRakfa.t..
ToteI8I!КUtiof'Itima
1.3 тоИlМCIO"dI
нi
houL'. звеее , 1 went. to bed .<tp>
.......................... .
About lus S ttМce·~
Рис. и
1.1 . ПотрясаlOщий факт: документ без тегов , успешно проходитвалидациlO.
Перед нами, возможно, один из тех моментов «WTF? Какого чертаё», о которых говорилось во Введении . эти три элемента
(авторам XНТML лучше сесть) ЯВЛЯЮТСЯ совершенно необява тельными, поскольку браузеры в любом случае считают, что они
есть. Чтобы найти этому подтверждение, заглянем «под капот» браузера с ПОМОЩЬЮ Орега
То же самое можно (рис.
Dragonfly (рис. 1.2). сделать с ПОМОЩЬЮ IE8 Developer Tools
1.3).
Такое поведение браузеров и привело к тому, ЧТО в
HTML5 эти
теги не требуются. Однако если вы все же не будете их исполь зовать, это может сбить с толку некоторых ваших коллег. Кроме того, пропуск тега вызывает неудобствадля пользова телей программ экранного доступа, поскольку в нем задается
основнойязык документа:
28
•
Глава
1
.
___
, _1a;_
;_·_lIiilol:loiL
l.·_
._~
I~ а
I~
.tt ~
IIЯ
-
ш;-
~OO M
"У
.
.........
510<>..
['''i"' [jj(~;TI&1LflLiI~:X
EmwCOOOOIO
-
SdI11111
. ~Ц
Interlsting ~OO
SввtdI
1'.7:
<М&1>
8: <.head>
'>
ctulr set ....ut f -S.. I nt er est i ns: blOl(/title >
( 8le t 8
~rr~~-:ti§iij1. ~ ... <. р>Тodау
1 dr _
---~c -- --- -
coH~ <О<'
breilkf"ilst . 1"
........
----~-_.-.'::-- ~
181:er. 1
оеnt
••
~ . ( /p)
М_!>
i
Рис. 1.2. С помощью отладчика OperaDragonfly мы видим, что браузеры сами добавляют недостающие элементы ['1' .....-009 _ - _ _ File Find OiS4bIe У- Outl ine lmages
.,
~1 css ~ S(~
хпро
С.кhс
То."
V.lю.tе
j
ВfO'IAIЯf Мode:
IE8 Document Мode IE8 S
-------
Profilot
ЕЭ ~~
г
a ·( l'1t _l>
~· I !··- I nt еr-est inc bloa
~· · < Jtet . с h it гs еt. - ut f'· S-'>
\ОН _у >
"нр> :··· TC!'Kt -
Today 1
а,.а" "
coftee f or breakf ast. 14 hours
L Пеl' .
1 wen t
tc
Ье а .
Рис. 1.3. Internet Explorer 8, как и все друrие браузеры, добавляет недостающие элементы в DOМ (однако IE, похоже , меняет местами элементы и <met a»
Это оказывается важным, так как, например, слово six произ носится по-разному в английском и французском явыкак,
CSS IE требуется
Кроме того, как мы позднее увидим, перед применением
для. оформления новых элементов НТМL5 браузеру элемент < Ь оо у> ,
Поэтому для максимальной надежности добавим эти необява тельные элементы, чтобы добиться по возможности минималь
ной обработки НТМL5-страницы.
< ! do c t yp e html > <meta charse t=ut f-8 > I n t e r es t i n g bl og h e a d>
Основная структура
• 29
Today I drank coffee for breakfast. ~ 14 hours later, I wen t to be d . < /p > b o d y> h t ml>
.
.
ВАЛИДАЦИЯ B~E E~E ИМЕЕТ, 3Н~ЧЕНИ~? При таком свободном синтаксисе мы можем опускать подразумеваемые теги (такие как <г"t;;I.:.~'
c:he:;c:> И <,,"ri :,'~ )' и, что гораздо важнее, поскольку HTML5 создает согласованную объектную модель документа
(DOM) для каждого случая плохой разметки, вам будет простительно за
думаться над тем, имеет ли валидация все еще какое-то значение. Мы тоже задаем себе этот вопрос.
Мы пришли к выводу, что валидация всегда была лишь инструментом, средством для достижения цели, а не самой целью.
Целью же является семантическая разметка: мы пытаемся добиться того, чтобы выбор элемен тов определялся значением содержимого, а не его внешним представлением. Можно создать
веб-страницу в полном соответствии с правилами, используя только элементы 6 i', И "' р с ,, ' но
такая разметка не будет иметь отношения к семантике. И наоборот, один незакодированный амперсандможет сделать прекрасноструктурированнуюи семантическибогатую веб-страницу невалидной, но при этом она останется семантической. По нашему мнению, валидацияостается также полезным средством, позволяющимподдержи
вать качество на высоком уровне. Когда мы руководим группами разработчиков,мы требуем, чтобы код обязательнопроходил валидациюперед любой проверкой,не говоря уже о создании «живого» кода. Это отличный способ убедиться в том, что ваш код работает правильно. Ведь несмотря на то, что браузеры создают объектнуюмодель документов (DOM) и для плохой раз метки, это может быть не та модель, которая вам нужна . Кроме того, парсеры
HTML5 еще не добавлены в рабочие версии браузеров, поэтому забота Java5cript.
о правильности страниц является залогом предсказуемого поведения С55 и
Мы используем валидатор ~!tp:;/~,tmI5.\'alida[')\"'nu;. И мы рассчитываем на то, что в дальнейшем
валидаторы будут развиваться: появятся такие возможности, как усиление требований к син таксису, чтобы при жела нии вы могли получать уведомления о н есоотв етств и и кода, к примеру,
стандартам
XHTML, хотя спецификация этого не требует.
ИСПОЛЬЗОВАНИЕ НОВЫХ СТРУКТУРНЫХ 3ЛЕМЕНТОВ
HTML5
в 2004 году главный редактор спецификации НТМL5 Ян Хиксон
проиндексировал с помощью Google 1 млрд веб-страниц, чтобы посмотреть, из чего сделана «реальная» сеть. Одна из статей,
в которых впоследствии были опубликованы результаты (http:// соdе.gооglе.соm/iпtl/гu-RUIwеЬstаts/2005 -121cIаssеs.html),содержит список самых часто используемыхимен классов в этих HTMLдокументах.
30
•
Глава
1 Совсем недавно. в
2009 году.
поисковая система Орега Щ}4А
(см. http://devfiles.myopera.com/articles/572/idlist-url.ht m) просмо трела атрибуты классов в
2148723
случайно выбранныхURL,
а также атрибуты id различныхэлементов (результатыиндек
сирования Google не содержат аналогичных данных) в 1 806 424 URL (см. табл. 1 и табл. 2). Таблица
1.1. Имена классов
Популярность
3начение
Частота
1
footer
179528
2
menu
146637
3
style1
138308
4
msonormal
123374
5
text
122911
6
content
113 951
7
title
91957
8
style2
89851
9
header
89247
10
copyright
86979
11
button
81503
12
main
69620
13
style3
69349
14
small
68995
15
nav
68634
16
clear
68571
17
search
59802
18
style4
56032
19
logo
48831
20
body
48052
Популярность
3начение
Частота
1
footer
288061
Таблица
1.2. Имена id
2
content
228661
3
header
223726
4
logo
121 352
5
container
119877
6
main
106327
Основная структура ПопУ.nяр-ность
3на !tение
Мастота
7
tabIe1
101677
8
menu
96161
9
layer1
93920
10
autonumber1
77 350
11
search
74887
12
пау
72057
13
wrapper
66730
14
top
66615
15
tabIe2
57934
16
layer2
56823
17
sidebar
52416
18
image1
48922
19
banner
44592
20
navigation
43664
Можно заметить,что если исключитьиз рассмотренияклассы,
явно относящиеся к оформлению,мы можем получить пред ставлениео структурах.которые авторы пытаются реализовать
при создании веб-страниц. Точно так же, как в
HTML 4 обнаруживаются характерные - мира ученых и инженеров
черты раннего поколения Сети
(именно поэтому в нем есть такие элементы, как , <samp>
И
>, НТМL5 служит отражением состояния Сети в период
его разработки: добавлено
28 новых элементов, и выбор многих
из них основан на данных вышеприведенного списка имен клас
сов и i d , поскольку это именно то, что разработчики на самом деле используют.
Пока нас интересуют скорее практические цели, чем философ ские размьппления, давайте будем их использовать. В качестве примера здесь приводится разметка главной страницы блога, выполненная в стиле
HTML4 с использованием семантически
нейтрального элемента
,
My interes ting l i f e hl> d i v>