
| Домой | Новости | О проекте | Статьи | Ссылки | Форум | Ресурсы | |
| На главную страницу ресурса. | > Обновлен DOM Level 3 > Бизнес реестр UDDI |
Общие сведения о проекте |
UDDI |
XML Parsers |
Добро пожаловать... | Все ресурсы в афавитном порядке | |
DOM это специальная, языково-независимая интерфейсная модель разбора XML и HTML документов. В этой статье мы будем разсматривать основную и самая важную часть DOM DOM Core описывающую модель XML. Существует три уровня моделей DOM: DOM Level 1 описывает основные интерфейсы, DOM Level 2 вводит дополнение XML Namespaces, DOM Level 3 определяет методы Load и Save.
''<![CDATA[Символьные данные]]>''Чтобы понять это представте себе такую структуру напоминающую дерево как файловая структура в Проводнике Windows. Каждый элемент дерева имеет определенный тип. Некоторые элементы дерева являются своеобразными листьями, то есть не могут иметь дочерних элементов. К таким относятся: text, CDATASection, Comment, Attr... Всего основных интерфейсов 10 (см. список выше). Доступ к ним можно осущестлять через соответствующий им интерфейс. Например ниже приведен интерфейс Element:
| Тип элемента | Тип возвращаемых данных | Имя элемента | Описание |
|---|---|---|---|
| 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.
Модель 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. Спецификация этой модели состоит из трех частей: 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. Все права защищены, По всем вопросам обращайтесь к администрации ресурса. |