Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы_отредактированные.docx
Скачиваний:
30
Добавлен:
21.09.2019
Размер:
3.19 Mб
Скачать
  1. Интерфейсы анализаторов xml

Существуют 2 главных вида анализаторов

  1. Интерфейс анализатора XML DOM описан в этом билете

  2. Интерфейс анализатора XML SAX(Про него написано в следующем билете)

Document Object Model (DOM)

  • DOM supports navigating and modifying XML documents

– Hierarchical tree representation of document

– Tree follows standard API

– Creating tree is vendor specific

  • DOM is a language-neutral specification

– Bindings exists for Java, C++, CORBA, JavaScript

  • DOM Versions

– DOM 1.0 (1998)

– DOM 2.0 Core Specification (2000)

DOM (от англ. Document Object Model — «объектная модель документа») — это не зависящий от платформы и языка программный интерфейс, позволяющий программам и скриптам получить доступ к содержимому HTML, XHTML и XML-документов, а также изменять содержимое, структуру и оформление таких документов.

Модель DOM не накладывает ограничений на структуру документа. Любой документ известной структуры с помощью DOM может быть представлен в виде дерева узлов, каждый узел которого представляет собой элемент, атрибут, текстовый, графический или любой другой объект. Узлы связаны между собой отношениями родительский-дочерний.

Изначально различные браузеры имели собственные модели документов (DOM), не совместимые с остальными. Для того, чтобы обеспечить взаимную и обратную совместимость, специалисты международного консорциума W3C классифицировали эту модель по уровням, для каждого из которых была создана своя спецификация. Все эти спецификации объединены в общую группу, носящую название W3C DOM.

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

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

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

<html>

<head><title>DOM</title></head>

<body>

<h1>It's a header<h1>

<p align="center">And it is a content</p>

</body>

&lthtml>

Модель 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.