Php xslt set sax handlers () function
Write your php code
(PHP 4 >= 4.0.6)
xslt_set_sax_handlers --
Set the SAX handlers to be called when the XML document gets processed
Syntax 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:
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 )
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.
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>
Php xslt set sax handlers Function syntax tag
xslt set sax handlers php code on this is provided for your study purpose, it will guide you to know how create and design a website using php. use it to practice and train your self online
Php xslt set sax handlers syntax tutorial
php tutorial guide and code design are for easy learning and programming. The code practice section provided at the top is for practising of this syntax. Use the code section up to practice your php programming online. Learning php is very easy, all you need is to use the examples on this site and practice them to perfect your skills.
Function index
Variables
Expressions
Operators
Control-Structures
Cookies
Array
Date & Time
Directory function
File
Image
Operators
Form data handling
Mathematics operators
Mail
Php Mysql
Network Functions
Strings