* Version 2.1.2 (stable) - 2003-12-05

* Bug fixed (thanks Jeff) where badly formed attributes resulted in infinite loop
* Added additional boolean argument to open and close handler calls to spot empty tags like br/ - should not break exising APIs
* Added XML_OPTION_FULL_ESCAPES which (when = 1) passes through the complete content in an XML escape, allowing comment / cdata reconstruction

* Version 2.1.1 (stable) - 2003-10-08

* Reporting of byte index with get_current_position() more accurate on opening tags (thanks to Alexander Orlov at x-code.com)
* All parser options now available to PHP versions lt 4.3.x, using implementation of html_entity_decode in PHP



* Version 2.1.0 (stable) - 2003-09-10

* Well (unit) tested with SimpleTest



* Version 2.0.2 (alpha) - 2003-08-11

* API is backwards compatible apart from the renaming of parser options
* Performance dramatically increased. Not much slower than Expat
* Better handling of XML comments and CDATA
* Option to trigger additional data handler calls for linefeeds and tabs
* Option to trigger additional data handler calls for XML entities and parse them if required.
* Added public get_current_position() and get_length() methods



* Version 1.1 (stable) - 2003-06-26

* Bug fixes to Attribute_Parser to cope with newline, tag, forward slash and whitespace issues.


* Version 1.0 (stable) - 2003-06-08

* Modifications to file structure to place Attributes_Parser.php
  and State_Machine.php in subdirectory HTMLSax
* XML_HTMLSax.php includes Attributes_Parser.php and State_Machine.php
  using require_once()



* Version 0.9.0rc2 (beta) - 2003-05-18

*First release under PEAR
*Changed package name to XML_HTMLSax
*Added patch from John Luxford to parse single quoted attributes
*Modified State_Machine to be a simple variable store





* Version 0.9.0rc1 (beta) - 2003-05-09

A summary of the main differences between this version
      of HTML_Sax and HTMLSax2002082201 are as follows;
      *Instead of extending HTMLSax with your own "handlers" class,
       you now use the set_object() method to pass an instance of the
       class to HTMLSax.
      *Class method callbacks are specified using the following methods;
      *set_element_handler('startHandler','endHandler') <tag> and </tag>
      *set_data_handler('dataHandler') for contents of an element
      *set_pi_handler('piHandler') for <?php ?>, <?xml ?> etc.
      *set_escape_handler(') for anything beginning with <!
      *set_jasp_handler() - set listener for <% %> tags
      *Attributes which no value are created and set to true
      *Comments are handled and may contain entities; < >
      *The callback handlers will all be passed an instance of HTMLSax
       in the same way as the native PHP XML Expat extension
      *Setting of parser options is handled specifically by the set_option()
       method. Available options are;
      *skipWhiteSpace; instruct the parser to ignore whitespace characters
      *trimDataNodes; trim whitespace inside character data
      *breakOnNewLine; newline characters found in character data are treated
       as new events triggering another data callback
      *caseFolding; converts element names to uppercase



