Объектная модель документа (DOM - Document Object Model) является независимым от платформы реализации языком. С точки зрения программиста он представляется в виде Интерфейса Прикладного Программирования (API - Application Programming Interface), который предоставляет программам доступ и манипулирование содержанием и структурой XML.
С точки зрения DOM, XML документ после обработки его анализатором (parser) представляется в памяти компьютера в виде дерева, которое состоит из иерархически связанных узлов (nodes). Структура иерархии дерева XML документа соответствует структуре самого XML документа.
Возьмем простой XML документ, описывающий состав книг в библиотеке.
<library>
<book>
<title>Программирование</title>
<author>Иванов И.И.</author>
</book>
<book>
<title>Информатика</title>
<author>Петров П.П.</author>
</book>
</library>
Примечание. Поскольку в примерах будут использоваться символы кириллицы, то с точки зрения правильности синтаксиса в начале каждого XML документа мы должны использовать тег <?xml version="1.0" encoding="windows-1251" ?>. Однако, для простоты и ясности изложения в примерах может опускаться.
На рисунке 1 представлено дерево, представленного выше XML документа.
Узлы дерева находятся в определенном взаимном отношении друг к другу. Введем понятия этих отношений, которые будем использовать в дальнейшем.
Корневой узел – самый верхний узел дерева, соответствующий корневому элементу XML документа. На рис.1 – это элемент library.
Родительский узел (parent node) – узел из которого наследуются узлы более низкого уровня дерева. Соответствует понятию контейнера в структуре XML документа. На рис.1, например, узел book является родительским по отношению к узлам title и author.
Дочерний узел (child node) – узел, который наследуется из узла более высокого уровня. Соответствует, в структуре XML документа, понятию вложенного в контейнер элемента. На рис.1, например, узлы title и author является дочерними относительно узла book.
Узлы братья (siblings) – одноуровневые узлы, принадлежащие одному родителю. В структуре XML документа это узлы непосредственно вложенные в контейнер. На рис.1, например, узлы title и author является братьями.
Рис.1. Дерево документа
Для того чтобы построить дерево XML документа, он должен быть обработан анализатором. Следует отметить, что построение дерева далеко не единственная задача анализатора, но в данном документе именно эта возможность будет нас интересовать.
В настоящее время существует большое количество различных анализаторов XML документов, ориентированных на различные операционные среды. Мы, в ходе дальнейшего рассмотрения, будем использовать анализатор фирмы Microsoft – MSXML. Выбор объясняется следующими факторами:
· постоянно развивается и по своим возможностям является одним из наиболее мощных анализаторов;
· входит в состав новых версий Windows и устанавливается как компонент Internet Explorer;
· может быть бесплатно загружен с узла фирмы Microsoft – www.microsoft.com/xml .
Данный документ опирается на возможности версии MSXML 3.0.
Реализация модели DOM в MSXML базируется на использовании общего подхода, применяемого в Windows, а именно спецификации COM. Поэтому для работы с деревом DOM следует использовать соответствующие интерфейсы СОМ. Это не представляет большой сложности, по названию объектов достаточно просто установить соответствия. Например, интерфейс IXMLDOMNode представляет объект DOM Node, а интерфейс IXMLDOMNodeList соответственно NodeList. Перечень объектов DOM и соответствующих интерфейсов СОМ представлены ниже в разделе "Объекты DOM".