П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 177597 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 74934 раз(а).

Учебник HTML.
Просмотров 73701 раз(а).

Руководство по PHP5.
Просмотров 44604 раз(а).

Хостинг через призму DNS.
Просмотров 51369 раз(а).

Подборка текстов стандартных документов.
Просмотров 44735 раз(а).

Учебник PHP - Самоучитель
Просмотров 50981 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 51419 раз(а).

Внешние атаки...
Просмотров 41638 раз(а).

Учебник PHP.
Просмотров 36923 раз(а).

SSI в примерах.
Просмотров 27648 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





ГЛАВА 14. РНР и XML

Подключение пользовательских функций к обработке XML

В РНР существует восемь стандартных функций для регистрации пользовательских функций, обрабатывающих различные компоненты документов XML.

Следует помнить, что вы обязательно должны определить все пользовательские функции; в противном случае произойдет ошибка. В этом разделе перечислены все стандартные функции регистрации и приведены спецификации всех пользовательских функций.

xml_set_character_data_handler()

Функция регистрирует пользовательскую функцию для работы с символьными данными. Синтаксис:


int xml_set_character_data_handler(int анализатор, string обработчик_символьных_данных)

Первый параметр определяет анализатор XML, а второй — имя пользовательской функции, используемой при обработке символьных данных. Определение функции-обработчика должно выглядеть так:

function обработчик_символьных_данных(int анализатор, string данные) { 
   ...
}

Первый параметр определяет анализатор XML, а второй — символьные данные, подлежащие обработке.

xml_set_default_handler()

Функция регистрирует пользовательскую функцию для всех незарегистрированных компонентов документа XML. В частности, к числу таких компонентов относятся пролог XML и комментарии. Синтаксис:


int xml_set_default_handler(int анализатор, string обработчик_по_умолчанию)

Первый параметр определяет анализатор XML, а второй — имя пользовательской функции, используемой по умолчанию. Определение функции-обработчика должно выглядеть так:

function обработчик_по_умолчанию(int анализатор, string данные) { 
  ...
}

Первый параметр определяет анализатор XML, а второй — символьные данные, подлежащие обработке.

xml_set_element_handler()

Функция регистрирует пользовательские функции для обработки открывающих и закрывающих тегов элементов. Синтаксис:


int xml_set_element_handler(int анализатор, string обработчик_открывающих_тегов, string обработчик_закрывающих_тегов)

Первый параметр определяет анализатор XML. Второй и третий параметры определяют имена функций, используемых для обработки, соответственно, открывающих и закрывающих тегов. Определение обработчика открывающих тегов должно выглядеть так:

function обработчик_открывающих_тегов(int анализатор, string имя_тега, 
string атрибуты[ ]) {
  ...
}

Первый параметр определяет анализатор XML, второй — имя открывающего тега для анализируемого элемента, а третий содержит массив атрибутов соответствующего тега.

Обработчик закрывающих тегов определяется следующим образом:

function обработчик_закрывающих_тегов(int анализатор, string имя_тега) { 
  ...
}

Первый параметр определяет анализатор XML, второй — имя закрывающего тега для анализируемого элемента.

xml_set_external_entity_ref_handler()

Функция регистрирует пользовательскую функцию для обработки внешних ссылок на сущности. Синтаксис:


int xml_set_external_entity_ref_handler(int анализатор, string обработчик_внешних_ссылок)

Первый параметр определяет анализатор XML, а второй — имя пользовательской функции, используемой при обработке внешних ссылок. Определение функции-обработчика должно выглядеть так:

function обработчик_внешних_ссылок(int анализатор, string ссылка, 
string база. string системный_идентификатор, string открытый_идентификатор) {
  ...
}

Первый параметр определяет анализатор XML. Второй параметр определяет имя ссылки, четвертый — системный идентификатор ссылки на сущность, а пятый — открытый идентификатор ссылки. Третий параметр, база, в настоящее время не используется, однако его объявление все равно обязательно.

xml_set_notation_decl_handler()

Функция регистрирует пользовательскую функцию для обработки синтаксических объявлений. Синтаксис:


int xml_set_notation_decl_handler(int анализатор, string обработчик_синтаксических_обьявлений)

Первый параметр определяет анализатор XML, а второй — имя пользовательской функции, используемой при обработке синтаксических объявлений. Определение функции-обработчика должно выглядеть так:

function обработчик_синтаксических_обьявлений(int анализатор,
string ссылка, string база, string системный_идентификатор,
string открытый_идентификатор) {
  ...
}

Первый параметр определяет анализатор XML. Второй параметр определяет имя объявления, четвертый — системный идентификатор, а пятый — открытый идентификатор объявления. Третий параметр, база, в настоящее время не используется, однако его объявление все равно обязательно.

xml_set_object()

Функция ассоциирует анализатор XML с некоторым объектом. Синтаксис:


void xml_set_object(int анализатор, object &о6ъект)

Первый параметр определяет анализатор XML, а второй содержит ссылку на объект, методы которого будут использоваться для обработки компонентов XML. Таким образом, функция xml_set_object связывает анализатор с объектом. Как правило, она вызывается в конструкторе объекта перед определениями функций-обработчиков:

class xmlDB { 
  VAR $xmlparser:
  function xmlDB() { 
    $this->xmlparser = xml_parser_create(); 

    // Связать анализатор с объектом 
    xml_set_object($this->xmlparser. &$this); 

    // Определить функции-обработчики
    xml_set_element_handler($this->xmlparser,"startTag","endTag");
    xml_set_character_data($this->xmlparser,"characterData");
  }
... Определения функций-обработчиков startTag. endTag. characterData и т.д. ...
} // class xmlDB

В порядке эксперимента попробуйте закомментировать вызов xml_set_object(). Вы увидите, что при выполнении этого фрагмента выводятся сообщения об ошибках, в которых говорится о невозможности обращения к методам объекта.

xml_set_processing_instruction_handler()

Функция регистрирует пользовательскую функцию для работы с Pi-инструкциями.

Синтаксис:


int xml_set_processing_instruction_handler(int анализатор, string обработчик_инструкций)

Первый параметр определяет анализатор XML, а второй — имя пользовательской функции, используемой при обработке Pi-инструкций. Определение функции-обработчика должно выглядеть так:

function обработчик_инструкций(int анализатор, string приложение, string инструкция) {
  ...
}

Первый параметр определяет анализатор XML, второй — имя приложения, выполняющего инструкции, а третий — инструкцию, передаваемую приложению.

xml_set_unparsed_entity_decl_handler()

Функция регистрирует пользовательскую функцию для необработанных внешних ссылок на сущности. Синтаксис:


int xml_set_external_entity_ref_handler(int анализатор, string обработчик_внешних_ссылок)

Первый параметр определяет анализатор XML, а второй — имя пользовательской функции, используемой для обработки необработанных внешних ссылок. Определение функции-обработчика должно выглядеть так:

function обработчик_внешних_ссылок(int анализатор, string сущность, 
string база, string системный_идентификатор,
string открытый_идентификатор, string имя_объявления) {
 ...
}

Первый параметр определяет анализатор XML. Второй параметр определяет имя ссылки, четвертый — системный идентификатор ссылки на сущность, а пятый — открытый идентификатор ссылки. Третий параметр, база, в настоящее время не используется, однако его объявление все равно обязательно. Наконец, последний параметр определяет имя синтаксического объявления.

На этом завершается наше краткое знакомство с обработчиками и функциями регистрации. Впрочем, для эффективной обработки документов XML вам понадобятся и другие функции. В следующем разделе представлены остальные функции РНР, связанные с обработкой кода XML.

Назад | Содержание раздела | Общее Содержание | Вперед



Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru