Дерево документа HTML

На этой странице:

Дерево до­ку­мен­та (do­cu­ment tree) — это схе­ма, на ко­то­рой на­гляд­но пред­став­ле­ны от­но­ше­ния меж­ду эле­мен­та­ми в до­ку­мен­те HTML: вло­жен­ность од­них эле­мен­тов в дру­гие, по­ря­док сле­до­ва­ния элементов.

Дерево до­ку­мен­та по­мо­га­ет ори­ен­ти­ро­вать­ся в до­ку­мен­те HTML, осо­бен­но при раз­ра­бот­ке таб­лиц сти­лей и сце­на­ри­ев на сто­ро­не кли­ен­та (на­при­мер, на JavaScript).

Пример документа HTML

Рассмот­рим при­мер простого документа HTML, ко­то­рый бу­дет ис­поль­зо­ван в даль­ней­ших объ­яснениях:

<!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="ru" xml:lang="ru">

<head>
  <title>Моя страница</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" type="text/css" href="index.css" media="all" />
</head>(1)

<body>

<h1>Добрый день!</h1>
<p>Эту страницу сделал Пупкин Василий Эдуардович.</p>

</body>

</html>

Графическое представление дерева документа

Сущест­ву­ет два наи­бо­лее рас­про­стра­нён­ных гра­фи­че­ских пред­став­ле­ния де­ре­ва до­ку­мен­та. Пер­вое пред­став­ле­ние — с го­ри­зон­таль­ным рас­по­ло­же­ни­ем уров­ней (рис. 1). Оно на­гляд­но в прос­тых слу­ча­ях, од­на­ко вы­зы­ва­ет слож­но­сти при боль­шом ко­ли­чест­ве уров­ней вло­жен­но­сти эле­мен­тов или при боль­шом ко­ли­чест­ве эле­мен­тов на од­ном уровне.

Рис. 1. Графическое представление дерева документа HTML с горизонтальным расположением уровней
Рис. 1.
Графическое представление дерева документа HTML с горизонтальным расположением уровней

Второе пред­став­ле­ние де­ре­ва до­ку­мен­та — с вер­ти­каль­ным рас­по­ло­же­ни­ем уров­ней (рис. 2). Оно ме­нее на­гляд­но, но удоб­но для прак­ти­че­ских за­дач и лег­ко фор­ми­ру­ет­ся про­грамм­ны­ми средствами.

Рис. 1. Графическое представление дерева документа HTML с вертикальным расположением уровней
Рис. 2.
Графическое представление дерева документа HTML с вертикальным расположением уровней

Корневой элемент html

Элемент html, на­хо­дя­щий­ся в ос­но­ва­нии де­ре­ва до­ку­мен­та, на­зы­ва­ет­ся кор­не­вым эле­мен­том (root или root ele­ment). Эле­мент html не вло­жен ни в ка­кой дру­гой эле­мент; все ос­таль­ные эле­мен­ты вло­же­ны в эле­мент html.

Элемент html обо­зна­ча­ет весь до­ку­мент HTML. В лю­бом язы­ке раз­мет­ки, по­доб­ном HTML, так­же опре­де­лён свой кор­не­вой эле­мент — на­при­мер, эле­мент svg в язы­ке SVG или эле­мент score-partwise в язы­ке MusicXML.

Имя кор­не­во­го эле­мен­та ука­зы­ва­ет­ся в объ­яв­ле­нии ти­па до­ку­мен­та пос­ле сло­ва DOCTYPE.

Иерархические отношения между элементами

Если эле­мент B вло­жен в эле­мент A, то эле­мент B на­зы­ва­ет­ся по­том­ком (de­scen­dant) эле­мен­та A, а эле­мент A пред­ком (an­ces­tor) эле­мен­та B (рис. 3).

Например, в до­ку­мен­те (1) эле­мен­ты h1 и p по­том­ки эле­мен­та body; эле­мент head пре­док эле­мен­та title; лю­бой эле­мент, кро­ме html,— по­то­мок эле­мен­та html; эле­мент html пре­док всех ос­таль­ных элементов.

Рис. 3. Отношения «предок» и «потомок»
Рис. 3.
Отношения «предок» и «потомок»

Если эле­мент B не­по­средст­вен­но вло­жен в эле­мент A (то есть B вло­жен в A, и нет та­ко­го эле­мен­та C, что­бы B был вло­жен в C, а C был вло­жен в A) — то эле­мент B на­зы­ва­ет­ся до­чер­ним эле­мен­том (child) эле­мен­та A, а эле­мент A ро­ди­тель­ским эле­мен­том (parent) эле­мен­та B (рис. 4). Мож­но ска­зать, что до­чер­ний эле­мент — это бли­жай­ший по­то­мок, а ро­ди­тель­ский эле­мент — это бли­жай­ший предок.

Например, в до­ку­мен­те (1) эле­мент h1 до­чер­ний эле­мент эле­мен­та body; эле­мент head ро­ди­тель­ский эле­мент эле­мен­та meta. Эле­мент h1 не яв­ля­ет­ся до­чер­ним по от­но­ше­нию к эле­мен­ту html, так как он вло­жен не­по­средст­вен­но не в эле­мент html, а в эле­мент body.

Рис. 4. Отношения «родительский элемент» и «дочерний элемент»
Рис. 4.
Отношения «родительский элемент» и «дочерний элемент»

Если эле­мен­ты A и B яв­ля­ют­ся до­чер­ни­ми эле­мен­та­ми од­но­го и то­го же эле­мен­та, то они на­зы­ва­ют­ся смеж­ны­ми эле­мен­та­ми (sibling) по от­но­ше­нию друг к дру­гу (рис. 5).

Например, в до­ку­мен­те (1) эле­мен­ты h1 и p смеж­ные по от­но­ше­нию друг к дру­гу; эле­мен­ты head и body так­же смеж­ные по от­но­ше­нию друг к другу.

Рис. 5. Отношение «смежный элемент»
Рис. 5.
Отношение «смежный элемент»