17
XML-технологии Лекция 6 Технология DOM

XML- технологии Лекция 6

  • Upload
    jolie

  • View
    68

  • Download
    0

Embed Size (px)

DESCRIPTION

XML- технологии Лекция 6. Технология DOM. DOM. DOM — Document Object Model — объектная модель документа, стандартизованная консорциумом W3C DOM — программный интерфейс доступа к структуре и содержимому размеченных документов для создания, ведения и анализа структуры и контента - PowerPoint PPT Presentation

Citation preview

Page 1: XML- технологии Лекция 6

XML-технологииЛекция 6

Технология DOM

Page 2: XML- технологии Лекция 6

DOM DOM — Document Object Model — объектная модель

, W3C документа стандартизованная консорциумом

DOM — программный интерфейс доступа к структуре и содержимому размеченных документов для

,   создания ведения и анализа структуры и контента

DOM — кэш для хранения экземпляра XML- документа

Page 3: XML- технологии Лекция 6

Дерево DOM

DOM создает в памяти древовидную версию документа из XML-источника данных

Page 4: XML- технологии Лекция 6

Стандарты DOM

(Уровень level) — версия DOM- спецификации отW3C

Page 5: XML- технологии Лекция 6

Типы узлов DOMНаименование Описание

Document Корень древовидной структуры DOMDocumentFragment , Набор элементов относящийся к

дереву DOM или подготовленный для добавления к его структуре

Element Элемент документаAttr Атрибут элемента документаText Текстовое содержимое элементов

и значения атрибутовComment Комментарий в документеCDATASection Раздел CDATAProcessingInstruction Инструкция по обработкеEntity , Сущность объявленная в разделе DTDEntityReference Ссылка на сущность из раздела DTDDocumentType Заголовок DTD- схемы документаNotation , Нотации объявленные в разделе DTD

Page 6: XML- технологии Лекция 6

Типы узлов DOM. ПримерDocument

Elementстудент

Attrкод

Texts01

Attrфио

TextИванов

Attrрейтинг

Text20

Elementсдача

Attrоценка

Text5Attr

датаText

21-янв

Elementпредмет

Attrкод

Textp03

Attrназв

TextКриптография

Attrобъем

Text120

Elementсдача

Attrоценка

Text3

Attrдата

Text25-янвElement

предметAttr

кодText

p04Attr

назвText

Базы данныхAttr

объемText

140

Elementстудент

Attrкод

Texts02

Attrфио

TextПетров

Attrрейтинг

Text10

Elementсдача

Attrоценка

Text4Attr

датаText

11-янв

Elementпредмет

Attrкод

Textp01

Attrназв

TextТеория систем

Attrобъем

Text120

Elementсдача

Attrоценка

Text5

Attrдата

Text15-янвElement

предметAttr

кодText

p02Attr

назвText

МатлогикаAttr

объемText

170

DocumentFragment

ElementСтуденты-атр

Page 7: XML- технологии Лекция 6

Способы применения DOM DOM на сервере

DOM на клиенте

Веб-серверСерверные сценарии

DOM

HTML-страницы

Экземпляры DOM-объектов

Браузер

Клиент URL с параметрами запроса

ХML-данные

Веб-сервер

Серверные сценарии

HTML-страницы

Браузер

Клиент URL с параметрами запроса

ХML-данные

Клиентские сценарии

DOM

Экземпляр DOM-объекта

Page 8: XML- технологии Лекция 6

Создание объекта DOM

Основной объект — Document

PHP — модуль DOM XML, класс DOMDocument

$dom = new DOMDocument ();

$dom = new DOMDocument ('1.0');

Page 9: XML- технологии Лекция 6

Загрузка документа в DOM

:Варианты Загрузка из файла Загрузка из строки Загрузка из потока

В PHP- DomDocument 2 :классе метода Load LoadXML

Примеры $dom->load (' .xml');СтудАтр $textXML = "< >СтудАтр

< = 's01' = ' ' = '20' студент код фио Иванов рейтинг

= ' '>< = '4' = '25- '>кафедра АСУ сдача оценка дата дек

< = 'p01' = ' ' предмет код название Теория систем

= ' ' = '120' = ' '/>цикл ОПД объем кафедра АСУ

</ ></ ></ >«;сдача студент СтудАтр

$dom -> loadXML ($textXML);

Page 10: XML- технологии Лекция 6

Создание узлов DOM:Этапы

,   , Определить что должно быть добавлено в дерево и создать соответствующий новый узел

, , Указать куда в дереве должен быть помещен новый узел и выполнить добавление узла

Методыобъекта Document create Element — создание элемента createAttribute — создание атрибута createTextNode — создание текстового узла create CDATA Section — создание секции CDATA reateCommentс — создание комментария

:Расположение нового узла в дереве Привязка к существующему узлу дерева Привязка к отношению иерархии между узлами

Page 11: XML- технологии Лекция 6

Создание узлов DOM с помощью PHP createProcessingInstruction:

$pi = $dom -> createProcessingInstruction

("xml", "version = '1.0' encoding = 'windows-1251'");

reateElementс :

$student = $dom -> createElement (" ");студент

reateAttributeс : $fio = $dom -> createAttribute (" ");фио

$fio -> Value = " ";Иванов

setAttribute:

$student-> setAttribute (" ", " ");фио Иванов

appendChild$student -> appendChild ($kod);

insertBefore$student -> insertBefore ($kaf, $reit);

Page 12: XML- технологии Лекция 6

Удаление узлов DOM removeChild:

$xml -> removeChild ($xml -> documentElement); removeAttribute

$stud = $xml -> getElementsByTagName (" ") -> item (0);студент$stud -> removeAttribute (' ');фио

removeAttributeNode$stud = $xml -> getElementsByTagName (" ") -> item (0);студент$fio = $stud -> getAttributeNode (" ");фио$stud -> removeAttributeNode ($fio);

removeAttributeNS-1-$stud = $xml -> getElementsByTagName (" ") -> item (0);студент$stud -> removeAttributeNS ('http:asu', ' ');фио

-2-$stud = $xml -> getElementsByTagName (" ") -> item (0);студент$sdacha = $stud -> getElementsByTagName (" ") -> item (0); сдача$stud -> removeChild ($sdacha);

Page 13: XML- технологии Лекция 6

Редактирование узлов DOM cloneNode — :копирование узла

$clone = $student -> cloneNode (true);

replaceChild — замена узла дерева в DOM: $dom -> replaceChild ($clone, dom -> DocumentElement);

removeChild — удаление узла дерева в DOM: $student -> removeChild ();

removeAttribute removeAttributeNode — и удалениеатрибутов

Page 14: XML- технологии Лекция 6

Обход узлов дерева DOM

nodeType — :определение типа узла Node -> nodeType

tagName — , имя элемента name — имя атрибута

removeChild — удаление узла дерева в DOM: $student -> removeChild ();

removeAttribute removeAttributeNode — и удалениеатрибутов

Page 15: XML- технологии Лекция 6

Обход узлов дерева DOM parentNode — :предок контекстного узла

$node -> parentNode -> tagName; firstChild — :первый дочерний узел

$node -> firstChild -> tagName; lastChild — : последний дочерний узел

$node -> lastChild -> tagName; previousSibling — , узел предыдущий контекстному

  : в иерархии предка $node -> previousSibling -> tagName;

nextSibling — , узел следующий за контекстным в :иерархии предка

$node -> nextSibling -> tagName hasAttributes — проверка наличия атрибутов hasChildNodes — проверка наличия дочерних узлов

Page 16: XML- технологии Лекция 6

XPath-адресация PHP- DOMXPath:класс

$xpath = new DOMXPath ($dom);

Запросы: query:

$query1 = "//студент [@фио = 'Иванов']/сдача [предмет/@название = 'Базы данных']/@оценка";echo $xpath -> query ($query1) -> item (0) -> value;

evaluate:

$query2 = "count (//студент [@фио = 'Иванов']/сдача)";echo $xpath -> evaluate ($query2, $dom);

getElementsByTagName:

$result = $dom -> getElementsByTagName ("студент");

Page 17: XML- технологии Лекция 6

XSL- трансформация с помощью DOM Базовый класс в PHP — XsltProcessor:

$xp = new XsltProcessor(); Загрузка таблицы стилей— метод Load:

$xsl = new DomDocument; $xsl -> load ("stylesheet.xsl");

Привязка таблицы стилей — метод importStylesheet: $xp->importStylesheet($xsl);

Преобразование:  transformToXml:

echo $xp -> transformToXml ($xml); transformToUrl:

$xp -> transformToURI ($xml, 'file:///result.html'); transformToDoc:

$result = $xp -> transformToDoc ($xml); echo $result -> saveXML ();