XML DOM, XSLT, XPath
1 July 2007 – 14:02Справочные материалы по XML DOM, XSLT, XPath. Запостил для себя, если еще кому пригодится, не стесняйтесь, делайте закладки.
Узлы DOM XML:
* Node - компонент документа
* Document - документ
* Element - элемент
* Attribute - атрибут
* Processing Instruction - инструкции для XML парсера
* Text - текст
* CDATA Section - с разметкой
* Document Fragment - часть документа
* Entity - знак при постановке ссылки
* Entity Reference - ссылка
* Document Type - тип документа
Объекты XMLDOMDocument, XMLDOMNode, XMLDOMNodeList,
[XMLDOMNameNodeMap,] XMLDOMParserError
| Объект XMLDOMNode | |
| Объект XMLDOMNode, реализующий базовый DOM интерфейс Node, предназначен для манипулирования с отдельным узлом дерева документа. Его свойства и методы позволяют получать и изменять полную информацию о текущем узле - его тип (является ли текущий узел элементом, комментарием, текстом и т.д.), название, полное название (вместе с Namespace префиксом), его содержимое, список дочерних элементов и т.д. | |
| Свойства | |
| Общая информация о текущем элементе дерева | |
| nodeName | Возвращает полное название(вместе с Namaspace атрибутом) текущего узла в виде строки. Доступно только для чтения. |
| baseName | Возвращает название элемента без префикса Namespace. Только для чтения. |
| hrefix | Возвращает Namespace префикс. Только для чтения. |
| namespaceURI | Возвращает URI Namespace префикса текущего элемента |
| dataType | Определяет тип содержимого текущего узла(описываемое схемами данных). Доступно для записи и чтения |
| nodeType | Возвращает тип текущего узла.
Свойство доступно только для чтения. |
| nodeTypeString | Возвращает тип узла в виде текста. Только для чтения. |
| attributes | Возвращает список атрибутов текущего узла в виде коллекции XMLDOMNamedNodeMap. Если атрибутов нет, то свойство length будет содержать нулевое значение. Для тех узлов, у которых не может быть атрибутов (в XML документе они могут быть назначены лишь объектам элементов, макроподстановок и нотаций) возвращается null. Для объектов макроподстановок и нотаций содержимым коллекции будут являться атрибуты SYSTEMID, PUBLICID и NDATA. Доступно только для чтения. |
| definition | Возвращает DTD определение для текущего узла дерева. |
| Содержимое текущего узла | |
| text | Возвращает содержимое текущего поддерева(узла и всех его дочерних элементов). Доступно для записи и чтения |
| xml | Возвращает XML-представление текущего поддерева. Доступно только для чтения |
| nodeValue | Возвращает содержимое текущего узла. Доступно для чтения и записи. |
| Работа со списком дочерних элементов | |
| childNodes | Для тех узлов, которые имеют дочерние элементы возвращает их список в виде XMLDOMNodeList. В том случае, если дочерних элементов нет, значение свойства length списка равно нулю . Только для чтения. |
| lastChild | Возвращает последний дочерний элемент или null, если таковых не имеется. Свойство доступно только для чтения. |
| firstChild | Возвращает последний дочерний элемент или null. Только для чтения. |
| nextSibling | Возвращает следующий дочерний элемент. Только для чтения. |
| previousSibling | Возвращает предыдущий дочерний элемент. Доступно только для чтения. |
| parentNode | Содержит ссылку на родительский элемент. В том случае, когда такого элемента нет, возвращает null. Доступно только для чтения. |
| ownerDocument | Возвращает указатель на документ, в котором находится текущий узел. Если в процессе модификации дерева узел будет перенесен в другой документ, то значение этого свойства автоматически изменится. Только для чтения. |
| Методы | |
| Добавление новых элементов в объектную модель документа | |
| appendChild(newChild) | Добавляет текущему узлу новый дочерний элемент. Возвращает ссылку на объект этого нового элемента. То же самое можно сделать и при помощи insertBefore (newChild, null) |
| insertBefore(newChild, refChild) | Вставляет дочерний узел, располагая его в текущем поддереве "левее" узла, указанного параметром refChild. Если последний параметр не задан, то новый узел будет добавлен в конец списка. |
| Модификация и удаление узлов | |
| cloneNode (deep) | Создание копии текущего элемента. Параметр deep определяет, будет ли эта процедура рекурсивно выполняться для всех дочерних элементов. Возвращаемое значение - ссылка на новый элемент |
| replaceChild(newChild, oldChild) | Замена объекта oldChild текущего списка дочерних объектов на newChild. Если newChild=null, то старый объект будет просто удален. |
| removeChild(oldChild) | Удаление объекта oldChild из списка дочерних элементов |
| Поиск узлов (выделение поддеревьев) | |
| selectNodes(patternString) | Возвращает объект XMLDOMNodeList, содержащий поддерево, выбранное по шаблону поиска pattertnString |
| selectSingleNode(patternString) | Аналогичен методу selectNodes, только возвращает первый узел из найденного поддерева |
| Обработка поддеревьев стилевыми таблицами | |
| transformNode(stylesheet) | Назначает стилевую таблицу для поддерева текущего узла и возвращает строку - результат обработки. В качестве параметра передается ссылка на объект DOMDocument, в котором находятся XSL инструкции. |
| transformNodeToObject(stylesheet, outputObject) | То же, что и transformNode, только результат - обработанное дерево передается в объект XMLDocument(другое дерево), задаваемый параметром outputObject |
| Объект XMLDOMDocument | |
| Представляет верхний уровень объектной иерархии и содержит методы для работы с документом: его загрузки, анализа, создания в нем элементов, атрибутов, комментариев и т.д. . Многие свойства и методы этого объекта реализованы также в рассмотренном выше класса Node, т.к. документ может быть рассмотрен как корневой узел с вложенными в него поддеревьями. | |
| Свойства | |
| Получение и информации о текущем состоянии процесса загрузки и анализа документа. | |
| async | Свойство, доступное для записи и чтения, идентифицирующее текущий режим обработки (синхронный или асинхронный) |
| parseError | Возвращает ссылку на объект XMLDOMParseError, при помощи которого можно получить всю необходимую информацию о последней ошибке анализатора. Только для чтения. |
| readyState | Содержит информацию о текущем состоянии анализатора:
Для получения своевременной информации о текущем состоянии анализатора можно воспользоваться обработчиком событий onreadystatechange Только для чтения. |
| ondataavailable | Свойство, доступное только для записи, которое содержит ссылку на обработчик события ondataavailable (вызывается, когда обработчик обрабатывает очередную порцию данных документа) |
| onreadystatechange | Ссылка на обработчик события onreadystatechange (вызывается каждый раз, когда меняется состояние обработчика - свойство readyState) |
| ontransformnode | Ссылка на обработчик события ontransformnode (вызывается перед каждой трансформацией узла стилевыми таблицами) |
| Изменение параметров обработчика. | |
| preserveWhiteSpace | Определяет, должны ли при разборе документа игнорироваться символы разделителей. Если значение свойства ложно, то будут, если истина - то разделители будут сохранены. По умолчанию установлено в false. Доступно для чтения и записи. |
| resolveExternals | Свойство определяет, будут ли в процессе анализа разбираться внешние определения (DTD-описания, макроподстановки и т.д.) - значение true или нет(false). Доступно для чтения и записи. |
| validateOnParse | Включение - выключение верификации документа. Значения true или false. Доступно для чтения и записи. |
| Получение информации о загруженном документе | |
| doctype | Возвращает тип документа, определяемый при его создании тэгом <!DOCTYPE>, включающим DTD. Если в документе нет DTD описаний, возвращается null. Только для чтения. |
| url | Возвращает URL документа(в случае успешной его загрузки, в противном случае возвращает null). Доступно только для чтения. |
| implementation | Возвращет объект XMLDOMImplementation для данного документа. Только для чтения. |
| documentElement | Содержит ссылку на корневой элемент документа в виде объекта XMLDOMElement. Если корневого элемента нет, то возвращается null. Доступно для записи |
| Методы | |
| Загрузка и сохранение документов | |
| load(url) | Загружает документ, адрес которого задан параметром url. В случае успеха возвращает логическое значение true. Необходимо иметь в виду, что вызов этого метода сразу же обнуляет содержимое текущего документа |
| loadXML(xmlString) | Загружает XML - фрагмент, определенный в передаваемой строке |
| save(objTarget) | Сохраняет документ в файле (objTarget - строка, содержащая URL файла) или внутри другого документа (objTarget - объект XMLDOMDoument). |
| abort() | Прерывание процесса загрузки и обработки документа. Обработчик ошибок XMLDOMParseError будет содержать в коде ошибки соответствующее значение. |
| Создание новых объектов. Необходимо отметить, что все методы лишь создают указанные объекты и для включения их в объектную модель документа надо дополнительно использовать методы insertBefore, insertAfter или appendChild. | |
| createAttribute (name) | Создает для текущего элемента новый атрибут с указанным именем. Новый атрибут добавляется в объектную модель документа только после определения его значения методом setAttribute. |
| createNode(Type, name, nameSpaceURI) | Создает узел указанного типа и названия. Namespace префикс задается параметром nameSpaceURI. Возвращаемым значением будет созданный объект указанного типа. |
| createCDATASection(data) | Создает область CDATA - возвращает объект XMLDOMCDATASection |
| createDocumentFragment() | Создает новый пустой фрагмента документа - объект XMLDOMDocumentFragment |
| createComment(data) | Создает комментарий. |
| createElement(tagName) | Создает элемент документа с указанным названием. |
| createEntityReference(name) | Создает ссылку на подстановочные символы |
| createProcessingInstruction(target, data) | Создает новую директиву XML-процессора |
| createTextNode(data) | Создает текст внутри документа |
| Поиск узлов дерева документа | |
| getElementsByTagName(tagname) | Возвращает ссылку на коллекцию элементов документа с заданным именем (или всех элементов, если значение tagname равно "*") |
| nodeFromID(idString) | Поиск элемента по идентификатору |
| hasChildNodes() | Возвращает истину, если текущий узел содержит поддерево. |
| Объект XMLDOMNodeList | |
| Представляет собой список узлов - поддеревья и содержит методы, при помощи которых можно организовать процедуру обхода дерева. | |
| Свойства | |
| length | число элементов списка узлов |
| Методы | |
| item(i) | Выбор i-того элемента из списка. Возвращает объект XMLDOMNode |
| nextNode() | Выбор следующего элемента в списке. Если такого элемента нет, то возвращает null. первый вызов этого метода(после сброса итератора) возвратит ссылку на первый элемент списка. |
| reset() | Сброс внутреннего указателя текущего элемента |
| Объект XMLDOMParserError | |
| Объект позволяет получить всю необходимую информацию об ошибке, произошедшей в ходе разбора документа. Все свойства этого объекта доступны только для чтения. | |
| Свойства | |
| errorCode | Содержит код возникшей ошибки либо 0, если таковой не случилось. |
| url | Возвращает URL обрабатываемого документа |
| filepos | Возвращает смещение относительно начала файла фрагмента, в котором обнаружена ошибка |
| line | Содержит номер строки, содержащей ошибку |
| linepos | Позицию ошибки в строкев которой была обнаружена ошибка |
| reason | Описание ошибки |
| srcText | Содержит полный текст строки, в которой произошла ошибка |
PHP DOM функции:
http://ru2.php.net/manual/ru/ref.dom.php
* DOMAttr
* DOMCharacterData
* DOMComment
* DOMDocument
* DOMDocumentFragment
* DOMDocumentType
* DOMElement
* DOMEntity
* DOMEntityReference
* DOMException
* DOMImplementation
* DOMNode
* DOMNodeList
* DOMNotation
* DOMProcessingInstruction
* DOMText
* DOMXPath

комментарии (1) to “XML DOM, XSLT, XPath”
Павел -- Jun 17, 2008
Спасибо, то что нужно - “выжимки”