HTML_документы имеют иерархическую структуру вложенных тегов, которая в DOM представлена в виде дерева объектов. Узлы дерева представляют различ_ ные типы содержимого документа. В первую очередь, древовидное представле_ ние HTML_документа содержит узлы, представляющие элементы или теги, та_ кие как <body> и <p>, и узлы, представляющие строки текста. HTML_документ также может содержать узлы, представляющие HTML_комментарии.1 Рассмот_ рим следующий простой HTML_документ:
<html>
<head>
<title>Sample Document</title> </head>
<body>
<h1>An HTML Document</h1>
<p>This is a <i>simple</i> document. </body>
</html>
DOM_представление этого документа приводится на рис. 15.1.
Тем, кто еще не знаком с древовидными структурами в компьютерном програм_ мировании, полезно знать, что они заимствуют терминологию у генеалогиче_ ских деревьев. Узел, расположенный непосредственно над данным узлом, назы_
Рис. 15.1. Древовидное представление HTML'документа
1 Модель DOM может также использоваться для представления XML_документов, которые имеют значительно более сложный синтаксис, чем HTML_документы. Древовидное представление таких документов может содержать узлы, являю_ щиеся ссылками на XML_сущности, инструкции по обработке, разделы CDATA и пр. Дополнительные сведения об использовании DOM с XML_документами можно найти в главе 21.
15.4. Обзор объектной модели W3C DOM
вается родительским по отношению к данному узлу. Узлы, расположенные на один уровень ниже другого узла, являются дочерними по отношению к данному узлу. Узлы, находящиеся на том же уровне и имеющие того же родителя, назы_ ваются братьями. Узлы, расположенные на любое число уровней ниже другого узла, являются его потомками. Родительские, прародительские и любые дру_ гие узлы, расположенные выше данного узла, являются его предками.
Узлы
Древовидная структура DOM, изображенная на рис. 15.1, представляет собой де_ рево объектов Node различных типов. Интерфейс Node1 определяет свойства и ме_ тоды для перемещения по дереву и манипуляций им. Свойство childNodes объек_ та Node возвращает список дочерних узлов, свойства firstChild, lastChild, next_ Sibling, previousSibling и parentNode предоставляют средство обхода узлов дерева. Такие методы, как appendChild(), removeChild(), replaceChild() и insertBefore(), позволяют добавлять узлы в дерево документа и удалять их. Далее в этой главе мы встретим примеры применения этих свойств и методов.