Домой Новости О проекте Статьи Ссылки Форум Ресурсы
На главную страницу ресурса. > Обновлен DOM Level 3
> Бизнес реестр UDDI
Общие сведения о проекте

XML
DOM
HumanML
SAX API

UDDI
SMIL
ebXML
WSDL

XML Parsers
XML ресурсы
Другие языки

Добро пожаловать... Все ресурсы в афавитном порядке

Что такое DOM?

DOM – это специальная, языково-независимая интерфейсная модель разбора XML и HTML документов. В этой статье мы будем разсматривать основную и самая важную часть DOM – DOM Core описывающую модель XML. Существует три уровня моделей DOM: DOM Level 1 – описывает основные интерфейсы, DOM Level 2 – вводит дополнение XML Namespaces, DOM Level 3 – определяет методы Load и Save.

 

DOM Level 1. Как это работает?

DOM представляет документ как иерархию узлов. DOM определяет стандартный набор интерфейсов узлов которые может использовать XML-анализатор для анализа документа. Существуют узлы таких типов:
  1. Text (простой текст). Например: "<tag>Простой текст</tag>"
  2. CDATASection (Character data – также символьные данные). Например: ''<![CDATA[Символьные данные]]>''
  3. Element (обычный элемент дерева – тег). Например: "<tag></tag>"
  4. Comment (комментарий). Например: "<!-- This is a comment --!>"
  5. Attr (аттрибут). Например: "<goods prise="$10"></goods>"
  6. DocumentType (определяет тип документа). Например: "<!DOCTYPE HTML PUBLIC>"
  7. Notation – этот интерфейс пердает нотацию определенную в DTD.
  8. Entity
  9. EntityReference
  10. ProcessingInstruction – специальная инструкция вставляемая в документ. Помещяется в такие скобки "<? ?>"Например стандартной для XML является инструкция "<?xml version="1.0"?>"

Чтобы понять это представте себе такую структуру напоминающую дерево как файловая структура в Проводнике Windows. Каждый элемент дерева имеет определенный тип. Некоторые элементы дерева являются своеобразными листьями, то есть не могут иметь дочерних элементов. К таким относятся: text, CDATASection, Comment, Attr... Всего основных интерфейсов – 10 (см. список выше). Доступ к ним можно осущестлять через соответствующий им интерфейс. Например ниже приведен интерфейс Element:

interface Element : Node
Тип элемента Тип возвращаемых данных Имя элемента Описание
readonly attribute DOMString tagName Возвращает имя данного элемента
method DOMString getAttribute(in DOMString name); Возвращяет значение аттрибута за его именем
method   setAttribute(in DOMString name,
in DOMString value)
Устанавливает значение аттрибута за именем
method   removeAttribute(in DOMString name) Удалает значение аттрибута за именем
method Attr getAttributeNode(in DOMString name); Возвращает елемент Attr за именем
  Attr setAttributeNode(in Attr newAttr) Создает новый аттрибут
  Attr removeAttributeNode(in Attr oldAttr) Удаляет аттрибут
  NodeList getElementsByTagName(in DOMString name); Возвращает список элементов за именем
 

Но все интерфейсы объеденяются интерфейсом Node.

Итак представим себе такой фрагмент языка HTML:

<html>
<head><title>DOM</title></head>
<body>
<h1>It's a header<h1>
<p align="center">And it is a content</p>
</body>
<html>

Модель DOM должна интетпретировать этот код так:

Самый верхний элемент получившегося дерева – узел типа Document. Этот оъект должен присутствовать во всех DOM документах. В нём содержатся значения: типа документа, корневого элемента (в данном случае это нижестоящий элемент "HTML"). Следующий узел "HTML" – объект типа Element. Это основной тип узлов. В вышеприведенном примере к узлам Element также относятся: "Head", "Body", "Title", "H1", "P". Узел "DOM" принадлежит к текстовым (text). Объекты Element могут также содержать аттрибуты – узлы типа Attribute. Например:

<h1 align="left">It is a header</h1>

В данном примере элемент "H1" содержит дочерние элементы "align" типа Attribute и "It is a header" типа Text. Как уже вам известно все эти интерфейсы определены в DOM Level 1.

Что такое Namespaces? DOM Level 2.

Модель DOM Level 2 вводит использование стилевых таблиц, определяет модель сообщений и XML Namespaces. Одним из самых важных в DOM Level 2 было введение XML Namespaces. В сущности namespaces (пространства имен) используются для того чтобы разрешить многократный доступ к словарям XML при этом используясь в одном XML документе. Например вы хотите использовать описания книг находящиеся в XHTML документе. Каждая книга в своем описании использует элемент <title>. Но элемент <title> уже используется в заголовке документа XHTML. В таком случае будет тяжело сделать различие между этими элементами. Для решения этой проблемы, каждому элементу <title> надо присвоить идентификатор. Для этого служит URI (Unified Resource Indentefier). Итак для того чтобы присвоить какому либо элементу универсальный идентификатор нужно к тегу стоящему выше его по иерархии DOM добавить параметр вида "xmlns:indentefier="URI", где indentefier это имя индентификатора, а URI – сам индентификатор. Для его использования надо к используемуму элементу добавить спереди имя идентификатора indentefier и двоеточие.

<?xml version="1.0"?>
<html xmlns:xhtml="www.w3c.org/tr/xhtml" xmlns:books="www.piter-press.ru">
<xhtml:title>Это заголовок документа XHTML</xhtml:title>
<book><books:title>А здесь должен быть заголовок книжки</books:title></book>
</html>

В даном случае в корневом теге <html> описано два пространства имен – xhtml и books. Теперь в этом документе можно использовать одни и те же элементы, но с разным значением, ставя перед ними имя пространства имен и двоеточие. Вы можете также применить пространство имен для всех элементов данного блока напрмер:

<xml xmlns:abc="http://www.allxml.h1.ru/abc">
<abc:element><subelement attr="value">Some text</subelement></abc:element>
</xml>

...эквивалентно:

<xml xmlns:abc="http://www.allxml.h1.ru/abc">
<abc:element><abc:subelement abc:attr="value">Some text</abc:subelement></abc:element>
</xml>

Использование пространств имен DOM 2 обеспечивается введением нескольких дополнительных функций.

DOM Level 3 ...

...На данный момент это последняя версия DOM. Спецификация этой модели состоит из трех частей: DOM3-ASLS, DOM3-Core, DOM3-Events, DOM3-XPath.

DOM ASLS (Abstract Schemas and Load and Save specification) – эта спецификация определяет схемы DTD и XML Schemas, а также методы Load and Save. Что такое DTD и XML Schemas вы можете узнать в документах по XML. Методы Load and Save, как можно догадаться из названия должны загружать и сохранять содержимое DOM-модели. Спецификация DOM3 Events – описывает модель сообщений и в основном базируется на DOM2 Events. Особенного внимания заслуживает спецификация DOM3-XPath. Эта спецификация определяет простой набор интерфейсов для доступа к дереву DOM через XPath 1.0.


При копировании материалов ссылка на наш ресурс обязательна!
Copyright ©: 2001. Все права защищены, По всем вопросам обращайтесь к администрации ресурса.

Rambler's Top100