PHP-Fusion
v.7.01
AP-Fusion
v7.02.04
Pimped-Fusion-AP
v0.09.03
мая 25 2012 15:22:56
Навигация
· Новости
· Статьи
· Скачать
· Форум
· Ссылки
· Категории новостей
· Обратная связь
· Галерея
· Поиск
· Гостевая
· Коллекция аватар
· CMS AP-Fusion. Отличия от PHP-Fusion
· Javascript справочник
· Разное
· Техника
Сейчас на сайте
· Гостей: 4

· Пользователей: 0

· Всего пользователей: 445
· Новый пользователь: vesuvius
Информеры
Загрузка файлов  +  -
Бытовая техника:  +  
Лента alipapa.ru
Карпаты. Верховина.
Карпаты. Драгобрат.
Карпаты. Яремче, Яблунецкий перевал.
dbForge Studio for MySQL вместо PHPMyAdmin
Облачные технологии - насколько это серьезно?
Как распределяется вес по сайту

Совместимость CMS
Solomono.ru - сервис для веб-мастера
Микроразметка веб-страниц.
АГС - не приговор.

Немного о политике.
Что такое АГС и как с ним бороться?
Долгожданный АП PR

PR Google: 9 месяцев без апдейта
Поведенческий фактор - модная тенденция?
Wi-Fi дома. Что делать, если 192.168.0.1 занято?

Ускоренная переиндексация страниц в Яндексе
Как я ставил винду на нетбук.
ROOKEE - инструмент оптимизатора.
Строим рейтинг-каталог
Ссылки  +  -
Блоги
Alipapa
» Блог Алипапы
lom
» Блог Лома

xslt_set_sax_handlers

(PHP 4 >= 4.0.6)

xslt_set_sax_handlers --  Set the SAX handlers to be called when the XML document gets processed

Description

void xslt_set_sax_handlers ( resource processor, array handlers )

xslt_set_sax_handlers() registers the SAX handlers for the document, given a XSLT processor resource.

handlers should be an array in the following format:

<?php

$handlers
= array(

  
"document" => array(
    
"start_doc" ,
    
"end_doc" ),

  
"element"   => array(
    
"start_element" ,
    
"end_element" ),

  
"namespace" => array(
    
"start_namespace" ,
    
"end_namespace" ),

  
"comment"    => "comment" ,

  
"pi"         => "pi" ,

  
"character" => "characters"

);
?>

Where the functions follow the syntax described for the scheme handler functions.

Замечание: The given array does not need to contain all of the different sax handler elements (although it can), but it only needs to conform to "handler" => "function" format described above.

Each of the individual SAX handler functions are in the format below:

  • start_doc ( resource processor )

  • end_doc ( resource processor )

  • start_element ( resource processor, string name, array attributes )

  • end_element ( resource processor, string name )

  • start_namespace ( resource processor, string prefix, string uri )

  • end_namespace ( resource processor, string prefix )

  • comment ( resource processor, string contents )

  • pi ( resource processor, string target, string contents )

  • characters ( resource processor, string contents )

Using xslt_set_sax_handlers() doesn't look very different than running a SAX parser like xml_parse() on the result of an xslt_process() transformation.

Примеры

Пример 1. xslt_set_sax_handlers() Example

<?php
// From ohlesbeauxjours at yahoo dot fr
// Here's a simple example that applies strtoupper() on
// the content of every <auteur> tag and then displays the
// resulting XML tree:

$xml = '<?xml version="1.0"?>
<books>
<book>
  <title>Mme Bovary</title>
  <author>Gustave Flaubert</author>
</book>
<book>
  <title>Mrs Dalloway</title>
  <author>Virginia Woolf</author>
</book>
</books>'
;

$xsl = '<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" encoding="ISO-8859-1" indent="no" omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:for-each select="books/book">
  <livre>
   <auteur><xsl:value-of select="author/text()"/></auteur>
  </livre>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>'
;

// Handlers :
function start_document ()
{
  
// start reading the document
}

function
end_document ()
{
  
// end reading the document
}

function
start_element ( $parser , $name , $attributes )
{
  global
$result , $tag ;
  
$result .= "<" . $name . ">" ;
  
$tag = $name ;
}

function
end_element ( $parser , $name )
{
  global
$result ;
  
$result .= "</" . $name . ">" ;
}

function
characters ( $parser , $data )
{
  global
$result , $tag ;
  if (
$tag == "auteur" ) {
    
$data = strtoupper ( $data );
  }
  
$result .= $data ;
}

// Transformation :
$xh = xslt_create ();
$handlers = array( "document" => array( "start_document" , "end_document" ),
   
"element" => array( "start_element" , "end_element" ),
   
"character" => "characters" );

xslt_set_sax_handlers ( $xh , $handlers );
xslt_process ( $xh , 'arg:/_xml' , 'arg:/_xsl' , NULL , array( "/_xml" => $xml , "/_xsl" => $xsl ));
xslt_free ( $xh );
?>

You can also use xslt_set_object() if you want to implement your handlers in an object.

Пример 2. Object oriented handler

<?php
// This is the object oriented version of the previous example
class data_sax_handler {

  var
$buffer , $tag , $attrs ;

  var
$_xh ;

  function
data_sax_handler ( $xml , $xsl )
  {
      
// our xslt resource
      
$this -> _xh = xslt_create ();

      
xslt_set_object ( $this -> _xs , $this );

      
// configure sax handlers
      
$handlers = array(
        
"document" => array( 'start_document' , 'end_document' ),
        
"element" => array( 'start_element' , 'end_element' ),
        
"character" => 'characters'
      
);

      
xslt_set_sax_handlers ( $this -> _xh , $handlers );
    
      
xslt_process ( $this -> _xh , 'arg:/_xml' , 'arg:/_xsl' , NULL , array( "/_xml" => $xml , "/_xsl" => $xsl ));
      
xslt_free ( $this -> _xh );


  }

  function
start_document ()
  {
        
// start reading the document
  
}

  function
end_document () {
        
// complete reading the document
  
}

  function
start_element ( $parser , $name , $attributes ) {
        
$this -> tag = $name ;
        
$this -> buffer .= "<" . $name . ">" ;
        
$this -> attrs = $attributes ;
  }

  function
end_element ( $parser , $name )
  {
        
$this -> tag = '' ;
        
$this -> buffer .= "</" . $name . ">" ;
  }

  function
characters ( $parser , $data )
  {
    if (
$this -> tag == 'auteur' ) {
          
$data = strtoupper ( $data );
    }
    
$this -> buffer .= $data ;
  }
  
  function
get_buffer () {
    return
$this -> buffer ;
  }

}

$exec = new data_sax_handler ( $xml , $xsl );

?>

Both examples will output:

<livre>
   <auteur>GUSTAVE FLAUBERT</auteur>
</livre>
<livre>
   <auteur>VIRGINIA WOOLF</auteur>
</livre>
Все функции PHP:
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Мини-чат
Вы должны авторизироваться, чтобы добавить сообщение.

12/04/2012 22:03
Это, в общем-то, нехороший признак

29/03/2012 18:52
Иногда хочется написать большими красными буквами, чтобы доходило быстрее Smile

29/03/2012 16:29
На форуме вопросы в основном ко мне, а я дальтоник

29/03/2012 15:31
Alipapa, а почему на форуме не включены цвета текста?

24/03/2012 18:38
Мультиблогом люди интересуются. Что имеется у нас?

02/03/2012 14:34
Как их запретить? Что-то в админке я не нашел, придется код править

23/02/2012 04:21
А ещё в голосованиях невозможно отредактировать опцию

23/02/2012 04:18
Alipapa, посмотри ГОЛОСОВАНИЯ НА ФОРУМЕ - почему у тебя там стоят по две кнопки "Обновить"?

23/02/2012 04:16
Желательно. Прилично.

21/02/2012 20:48
а это обязательно?

21/02/2012 19:23
Почему нет логотипа вверху на шапке? [img]http://ap-fus
ion.ru/images/news
_cats/ap-fusion.gi
f[/img]

13/02/2012 15:04
Всех влюблённых с праздником!!!

04/02/2012 09:08
Еще раз прошу всех. Если вопрос не личный, пишите в форум. В личке, аське, скайпе, мейле и т.д. не консультирую

14/01/2012 18:45
avisei, пиши в форум, а не шли мне личные посланья

31/12/2011 16:01
С праздником Нового Года! Успехов, счастья, богатства!

08/12/2011 16:13
MySQL нужен. Инструкция вот: [url]http://ap-fus
ion.ru/downloads.p
hp?download_id=58[
/url]

08/12/2011 16:03
Я канеш дико извиняюсь, но где на этом сайте статья по установке fusion, нужен ему MySql или нет? Smile

07/12/2011 11:03
ОК)

07/12/2011 11:02
этот - для 7.0

07/12/2011 11:00
Я устанавливаю, как в инструкции. Куча ошибок. Не могу сделать upgrade!

Анонс
Последние статьи
· О стабилизаторах нап...
· СМС и Вебмани
· TinyMCE для пользова...
· PCRE (Perl Compatibl...
· PCRE (Perl Compatibl...
4,796,721 уникальных посетителей Iceberg by Harly