IT. Expert System.

PHP

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


xslt_set_sax_handlers

(PHP 4 >= 4.0.6)

xslt_set_sax_handlersSet 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.

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.

Parameters

processor

The XSLT processor link identifier, created with xslt_create().

handlers

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.

Note:

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 )

Return Values

No value is returned.

Examples

Example #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.

Example #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> 


Content

Android Reference

Java basics

Java Enterprise Edition (EE)

Java Standard Edition (SE)

SQL

HTML

PHP

CSS

Java Script

MYSQL

JQUERY

VBS

REGEX

C

C++

C#

Design patterns

RFC (standard status)

RFC (proposed standard status)

RFC (draft standard status)

RFC (informational status)

RFC (experimental status)

RFC (best current practice status)

RFC (historic status)

RFC (unknown status)

IT dictionary

License.
All information of this service is derived from the free sources and is provided solely in the form of quotations. This service provides information and interfaces solely for the familiarization (not ownership) and under the "as is" condition.
Copyright 2016 © ELTASK.COM. All rights reserved.
Site is optimized for mobile devices.
Downloads: 62 / 158779911. Delta: 0.02940 с