Loading:


    xslt_set_sax_handlers

    void xslt_set_sax_handlers ( resource $processor , array $handlers )

    xslt_set_sax_handlers () rejestruje obsługę SAX do dokumentu, XSLT zasobów procesora.

    Korzystanie xslt_set_sax_handlers () nie bardzo różni się od uruchamiania parsera SAX jak xml_parse () na skutek xslt_process () transformacji.

    Parametry:

    procesor-XSLT odnośnik do indentyfikatora procesora, utworzonego z xslt_create ()

    handlers- powinien być tablicą w następującym formacie:

    <?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"

    );
    ?>

    Każdy z poszczególnych SAX funkcji obsługiwane są w formacie poniżej:

    • 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 )


    Zwracane wartości

    żadna wartość nie jest zwracana.




    Napisz Artyku³

    Listing

    //LISTING 1.0 ##############################


    <?php

    $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()
    {
      // zaczyna odczyt pliku
    }

    function end_document()
    {
      // kończy odczyt pliku
    }

    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;
    }

    // Transformacja :
    $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);
    ?>

    //LISTING 2.0 ##############################


    <?php
    // To jest wersja obiektowa z poprzedniego przykładu
    Klasa 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()
      {
            // odczyt dokumentu
      }

      function end_document() {
            // zakończenie odczytu dokumentu
      }

      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);

    ?>

     




    Dodano przez: igor
    Ranga: Administrator serwisu Punktów: 0
    Komentarze użytkowników
      • Tre¶æ komentarza
        Kod do komentarza (opcjonalnie)
        PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
        Autor
        Token
        token

         

         








    funkcje.net
    Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-2025 v.1.5 | design: diviXdesign & rainbowcolors