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
XML-технологииЛекция 6
Технология DOM
DOM DOM — Document Object Model — объектная модель
, W3C документа стандартизованная консорциумом
DOM — программный интерфейс доступа к структуре и содержимому размеченных документов для
, создания ведения и анализа структуры и контента
DOM — кэш для хранения экземпляра XML- документа
Дерево DOM
DOM создает в памяти древовидную версию документа из XML-источника данных
Стандарты DOM
(Уровень level) — версия DOM- спецификации отW3C
Типы узлов DOMНаименование Описание
Document Корень древовидной структуры DOMDocumentFragment , Набор элементов относящийся к
дереву DOM или подготовленный для добавления к его структуре
Element Элемент документаAttr Атрибут элемента документаText Текстовое содержимое элементов
и значения атрибутовComment Комментарий в документеCDATASection Раздел CDATAProcessingInstruction Инструкция по обработкеEntity , Сущность объявленная в разделе DTDEntityReference Ссылка на сущность из раздела DTDDocumentType Заголовок DTD- схемы документаNotation , Нотации объявленные в разделе DTD
Типы узлов 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Студенты-атр
Способы применения DOM DOM на сервере
DOM на клиенте
Веб-серверСерверные сценарии
DOM
HTML-страницы
Экземпляры DOM-объектов
Браузер
Клиент URL с параметрами запроса
ХML-данные
Веб-сервер
Серверные сценарии
HTML-страницы
Браузер
Клиент URL с параметрами запроса
ХML-данные
Клиентские сценарии
DOM
Экземпляр DOM-объекта
Создание объекта DOM
Основной объект — Document
PHP — модуль DOM XML, класс DOMDocument
$dom = new DOMDocument ();
$dom = new DOMDocument ('1.0');
Загрузка документа в DOM
:Варианты Загрузка из файла Загрузка из строки Загрузка из потока
В PHP- DomDocument 2 :классе метода Load LoadXML
Примеры $dom->load (' .xml');СтудАтр $textXML = "< >СтудАтр
< = 's01' = ' ' = '20' студент код фио Иванов рейтинг
= ' '>< = '4' = '25- '>кафедра АСУ сдача оценка дата дек
< = 'p01' = ' ' предмет код название Теория систем
= ' ' = '120' = ' '/>цикл ОПД объем кафедра АСУ
</ ></ ></ >«;сдача студент СтудАтр
$dom -> loadXML ($textXML);
Создание узлов DOM:Этапы
, , Определить что должно быть добавлено в дерево и создать соответствующий новый узел
, , Указать куда в дереве должен быть помещен новый узел и выполнить добавление узла
Методыобъекта Document create Element — создание элемента createAttribute — создание атрибута createTextNode — создание текстового узла create CDATA Section — создание секции CDATA reateCommentс — создание комментария
:Расположение нового узла в дереве Привязка к существующему узлу дерева Привязка к отношению иерархии между узлами
Создание узлов 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);
Удаление узлов 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);
Редактирование узлов DOM cloneNode — :копирование узла
$clone = $student -> cloneNode (true);
replaceChild — замена узла дерева в DOM: $dom -> replaceChild ($clone, dom -> DocumentElement);
removeChild — удаление узла дерева в DOM: $student -> removeChild ();
removeAttribute removeAttributeNode — и удалениеатрибутов
Обход узлов дерева DOM
nodeType — :определение типа узла Node -> nodeType
tagName — , имя элемента name — имя атрибута
removeChild — удаление узла дерева в DOM: $student -> removeChild ();
removeAttribute removeAttributeNode — и удалениеатрибутов
Обход узлов дерева DOM parentNode — :предок контекстного узла
$node -> parentNode -> tagName; firstChild — :первый дочерний узел
$node -> firstChild -> tagName; lastChild — : последний дочерний узел
$node -> lastChild -> tagName; previousSibling — , узел предыдущий контекстному
: в иерархии предка $node -> previousSibling -> tagName;
nextSibling — , узел следующий за контекстным в :иерархии предка
$node -> nextSibling -> tagName hasAttributes — проверка наличия атрибутов hasChildNodes — проверка наличия дочерних узлов
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 ("студент");
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 ();