|
cvs: pear /XML_Transformer Transformer.php package.xml /XML_Transformer/Tr: msg#00676php.cvs.pear
sebastian Mon Sep 30 06:46:41 2002 EDT Removed files: /pear/XML_Transformer/Transformer/Driver DocBook.php Modified files: /pear/XML_Transformer Transformer.php package.xml /pear/XML_Transformer/Transformer Namespace.php /pear/XML_Transformer/Transformer/Namespace DocBook.php Log: Remove DocBook driver in favour of a more general solution to transformations that require a second pass. Index: pear/XML_Transformer/Transformer.php diff -u pear/XML_Transformer/Transformer.php:1.103 pear/XML_Transformer/Transformer.php:1.104 --- pear/XML_Transformer/Transformer.php:1.103 Mon Sep 30 04:08:39 2002 +++ pear/XML_Transformer/Transformer.php Mon Sep 30 06:46:40 2002 @@ -13,7 +13,7 @@ // | license@xxxxxxx so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // -// $Id: Transformer.php,v 1.103 2002/09/30 08:08:39 sebastian Exp $ +// $Id: Transformer.php,v 1.104 2002/09/30 10:46:40 sebastian Exp $ // require_once 'XML/Transformer/CallbackRegistry.php'; @@ -28,7 +28,7 @@ * * @author Sebastian Bergmann <sb@xxxxxxxxxxxxxxxxxxxxx> * @author Kristian Köhntopp <kris@xxxxxxxxxxxx> -* @version $Revision: 1.103 $ +* @version $Revision: 1.104 $ * @access public */ class XML_Transformer { @@ -120,6 +120,12 @@ */ var $_lastProcessed = ''; + /** + * @var boolean + * @access public + */ + var $_secondPassRequired = false; + // }}} // {{{ function XML_Transformer($parameters = array()) @@ -245,6 +251,10 @@ ); if ($result === true) { + if ($object->secondPassRequired) { + $this->_secondPassRequired = true; + } + // Call initObserver() on the object, if it exists. if (method_exists($object, 'initObserver')) { @@ -374,16 +384,6 @@ return $xml; } - // Clean up, if needed. - - if (!empty($this->_elementStack)) { - $this->_attributesStack = array(); - $this->_cdataStack = array(''); - $this->_elementStack = array(); - $this->_level = 0; - $this->_lastProcessed = ''; - } - // Create XML parser, set parser options. $parser = xml_parser_create(); @@ -429,11 +429,33 @@ return ''; } + $result = $this->_cdataStack[0]; + + // Clean up. + xml_parser_free($parser); + $this->_attributesStack = array(); + $this->_cdataStack = array(''); + $this->_elementStack = array(); + $this->_level = 0; + $this->_lastProcessed = ''; + + // Perform second transformation pass, if required. + + $secondPassRequired = $this->_secondPassRequired; + + if ($secondPassRequired) { + $this->_secondPassRequired = false; + + $result = $this->transform($result); + } + + $this->_secondPassRequired = $secondPassRequired; + // Return result of the transformation. - return $this->_cdataStack[0]; + return $result; } // }}} Index: pear/XML_Transformer/package.xml diff -u pear/XML_Transformer/package.xml:1.60 pear/XML_Transformer/package.xml:1.61 --- pear/XML_Transformer/package.xml:1.60 Mon Sep 30 04:09:51 2002 +++ pear/XML_Transformer/package.xml Mon Sep 30 06:46:40 2002 @@ -67,7 +67,6 @@ <dir name="Transformer"> <dir name="Driver"> <file role="php" name="Cache.php"/> - <file role="php" name="DocBook.php"/> <file role="php" name="OutputBuffer.php"/> </dir> Index: pear/XML_Transformer/Transformer/Namespace.php diff -u pear/XML_Transformer/Transformer/Namespace.php:1.16 pear/XML_Transformer/Transformer/Namespace.php:1.17 --- pear/XML_Transformer/Transformer/Namespace.php:1.16 Sun Sep 29 06:27:59 2002 +++ pear/XML_Transformer/Transformer/Namespace.php Mon Sep 30 06:46:41 2002 @@ -13,7 +13,7 @@ // | license@xxxxxxx so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // -// $Id: Namespace.php,v 1.16 2002/09/29 10:27:59 sebastian Exp $ +// $Id: Namespace.php,v 1.17 2002/09/30 10:46:41 sebastian Exp $ // require_once 'XML/Transformer/Util.php'; @@ -63,17 +63,23 @@ * * @author Sebastian Bergmann <sb@xxxxxxxxxxxxxxxxxxxxx> * @author Kristian Köhntopp <kris@xxxxxxxxxxxx> -* @version $Revision: 1.16 $ +* @version $Revision: 1.17 $ * @access public */ class XML_Transformer_Namespace { // {{{ Members /** - * @var boolean + * @var string * @access public */ var $defaultNamespacePrefix = ''; + + /** + * @var boolean + * @access public + */ + var $secondPassRequired = false; /** * @var array Index: pear/XML_Transformer/Transformer/Namespace/DocBook.php diff -u pear/XML_Transformer/Transformer/Namespace/DocBook.php:1.17 pear/XML_Transformer/Transformer/Namespace/DocBook.php:1.18 --- pear/XML_Transformer/Transformer/Namespace/DocBook.php:1.17 Mon Sep 30 04:48:39 2002 +++ pear/XML_Transformer/Transformer/Namespace/DocBook.php Mon Sep 30 06:46:41 2002 @@ -13,7 +13,7 @@ // | license@xxxxxxx so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // -// $Id: DocBook.php,v 1.17 2002/09/30 08:48:39 sebastian Exp $ +// $Id: DocBook.php,v 1.18 2002/09/30 10:46:41 sebastian Exp $ // require_once 'XML/Transformer/Namespace.php'; @@ -68,9 +68,83 @@ * * * <xref> * +* Example +* +* <?php +* require_once 'XML/Transformer/Driver/OutputBuffer.php'; +* $t = new XML_Transformer_Driver_OutputBuffer( +* array( +* 'autoload' => 'DocBook' +* ) +* ); +* ?> +* <article> +* <artheader> +* <title> +* An Article +* </title> +* <author> +* <firstname> +* Sebastian +* </firstname> +* <surname> +* Bergmann +* </surname> +* </author> +* </artheader> +* +* <section id="foo"> +* <title> +* Section One +* </title> +* </section> +* +* <section id="bar"> +* <title> +* Section Two +* </title> +* +* <para> +* <xref linkend="foo" /> +* </para> +* </section> +* </article> +* +* Output +* +* <html> +* <head> +* <title> +* Sebastian Bergmann: An Article +* </title> +* </head> +* <body> +* <h1 class="title"> +* Sebastian Bergmann: An Article +* </h1> +* <div class="section"> +* <a id="foo"></a> +* <h2 class="title"> +* 1. Section One +* </h2> +* </div> +* <div class="section"> +* <a id="bar"></a> +* <h2 class="title"> +* 2. Section Two +* </h2> +* <p> +* <a href="#foo"> +* 1. Section One +* </a> +* </p> +* </div> +* </body> +* </html> +* * @author Sebastian Bergmann <sb@xxxxxxxxxxxxxxxxxxxxx> * @author Kristian Köhntopp <kris@xxxxxxxxxxxx> -* @version $Revision: 1.17 $ +* @version $Revision: 1.18 $ * @access public */ class XML_Transformer_Namespace_DocBook extends XML_Transformer_Namespace { @@ -81,6 +155,12 @@ * @access public */ var $defaultNamespacePrefix = '&MAIN'; + + /** + * @var boolean + * @access public + */ + var $secondPassRequired = true; /** * @var string -- PEAR CVS Mailing List (http://pear.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | cvs: pear /XML_Transformer/Transformer/Driver DocBook.php /XML_Transformer/Transformer/Namespace DocBook.php: 00676, Sebastian Bergmann |
|---|---|
| Next by Date: | cvs: pearweb /weeklynews 20020929.pl.html: 00676, Robert Janeczek |
| Previous by Thread: | cvs: pear /XML_Transformer/Transformer/Driver DocBook.php /XML_Transformer/Transformer/Namespace DocBook.phpi: 00676, Sebastian Bergmann |
| Next by Thread: | cvs: pearweb /weeklynews 20020929.pl.html: 00676, Robert Janeczek |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |