################################################################

$RCSfile: CHANGES.txt,v $

Authors: Chip Morris, Craeg Strong, Philipp von Weitershausen

$Date: 2003/03/30 03:45:47 $

################################################################

1.0.0   3/29/2003 (Craeg)

- Print out which processor is being used in the tests, and
  provide the ability to indicate a preferred processor.  This
  doesn't affect end-user at all, just makes testing a bit
  easier.

- Changed name of project to ZopeXMLMethods, changed name of class
  from XMLTransform to XSLTMethod

- removed unnecessary isCacheDirty flag

- Updated ZMI help texts, tutorial

- FourSuiteProcessor.py: Switched from using InputSources to simply
  providing a custom UriResolver, it is a less heavyweight URN
  resolution mechanism

- Renamed FourSuite12Processor to FourSuiteProcessor

- Implemented XMLCatalog resolver for 4Suite 1.0a

- Upgraded to 4Suite 1.0a, libxslt 1.0.28, Sablotron 0.98RC2.  
  Pyana 0.8 was not yet released as of 3/29/2003.

- Implemented many more unit tests, including tests for all kinds of
  Zope objects: ZPT, File, ParsedXML, XML Document, ExternalFile,
  pipeline tests, and tests for processor features and limitations
  (EXSLT support, import bugs)

- Made DTMLMethod the default Generator instead of File to fix bug
  with XSLT pipelines (the generated source for a File does not have a
  meta_type, because it is simply the result of the index_html() call.
  Any of the other Generators would actually work fine, because they 
  all return real live objects).
  
- Fixed findCacheManager() to work with context acquisition

- Enhanced XMLMethod to work with xslt objects obtained by either
  context or containment acquisition e.g. 'myfolder/fooxsl' works now

0.9.1-Patch     12/25/2002 (Philipp von Weitershausen)

- Removed TransformerRegistry class.

- The output behaviour is now handled by Output Generator plugins. Default
  plugins are provided for DTML Method, DTML Document, Page Template, File
  and ParsedXML.

- Objects not implementing __call__ but index_html can now be used as
  transformers and XML sources as well. These include File and ParsedXML.

- The XML source object now has to be part of the acquisition path. That
  makes one XMLTransform usable for any number of XML documents. It is still
  bound to one XSL transformer, though. URLs now look like::

  http://host/folder/aXmlSource/aXMLTransform

- Heavy interface and schema modifications because of these changes, repair
  method is NOT (yet?) supported!

- Now it _REALLY_ is possible to call XMLTransform from DTML or ZPT directly::

  <dtml-var expr="aXMLSource.aXMLTransform()">,
  <div tal:replace="here/aXMLSource/aXMLTransform">.

- Converted all ZMI forms to ZPT and common Zope styles.

- Improved coding style according to ZC styles:

  * Removed 'self' from the argument list in interface methods.

  * Put CVS $Id: CHANGES.txt,v 1.49 2003/03/30 03:45:47 cstrong Exp $ in module docstrings.

  * Changed docstring formatting.

0.9.1  11/8/2002 (Craeg)

- Added test for relative URL resolution

- Added http scheme resolver for SabPyth

- Added STATUS report for each processor to README file.

0.9.0  11/1/2002 (Craeg)

- Fixed limitation where calling an XMLTransform directly as a DTML
  didn't work.  That is, now::
 
    <dtml-var MyXmlTransform>

    works when only::

    <dtml-var expr="MyXmlTransform(MyXmlTransform)">

    worked before.

- Fixed limitation where calling an XMLTransform directly as a ZPT
  didn't work.  That is, now::
 
    <div tal:replace="here/MyXmlTransform">foo<;/div>

    works when only::

    <div tal:replace="python:here.MyXmlTransform(MyXmlTransform)">foo</div>

    worked before.

- ZSyncing instances across xslt processors -- As of release 0.8, it
  was only possible to ZSync instances of XMLTransform to other Zope
  instances *that had exactly the same set of XSLT processor libraries
  installed*.  This enables one to "upgrade" simply by ZSyncing to a
  machine with a different processor.

- Added Sablotron support (SabPyth 0.52)

- Added Pyana support (Pyana 0.6)

- Upgraded to use 4Suite 0.12.a3 and PyXML 0.8.1

- Upgraded to use libxml 2.4.26 and libxslt 1.0.22

- Upgraded to use ZopeTestCase 0.5.3

- Added ability to switch XSLT Processors on the fly.  XMLTransform
  lists which processor is selected, and the transformer registry
  enables runtime selection among available processors.

- XMLTransform mentions the processor it's bound to on its
  'manage_editForm'.

- If transformer is a ZPT, make the XMLTransform behave_like zpt by
  default.  otherwise, make it behave_like DTMLMethod by default

0.8.1  9/15/2002 (Craeg)

- Removed inconsistencies in docs in spelling of 'XSLparameters'

- Added new Todos for behave_like (to match transformer when transformer is
  DTML or ZPT)

- Fixed relative URL resolution on 4Suite 12

- Fixed relative URL resolution on 4Suite 11

0.8.0  8/27/2002 (Craeg)

- Added more functions to Cache Manager: list up to date, list out of date,
  and regenerate if needed

- Noted potential issue with ZSyncer in README and TODO

- All "if foo:" changed to "if foo is not None:" to guard against len(0)

- Made 4Suite 11 the default processor

- Wrote TUTORIAL.txt

- Fixed bug where editing a transformer did not invalidate the cache

- Ensured compatibility with ExternalFile 1.1, CVSFile 0.8.1 and
  ZSyncer 0.4.5

0.7.0  8/25/2002 (Craeg)

- Refactored factory methods according to new conventions (pure python
  covers return new object, not a string)

- Wrote README file

- Fixed verbiage on all DTML ZMI screens

- Added help text for all screens

- Made FourSuite12Processor.py work with latest 4Suite 0.12alpha2+
  (8/25/2002 CVS version).  URI resolver patch required...

- Implemented LibXsltProcessor.py for compabitility with GNOME libxml2
  and libxslt

0.6.0  8/14/2002 (Craeg)

- Add form now lists whether a cache manager is available or not

- Refactored factory methods for all objects to allow them to be
  created either programmatically or via the ZMI GUI

- Implemented unit tests for all objects

- When you change the debugLevel property, in XMLTransform, it now
  changes the debug level in the underlying XSLTProcessor as well.

- Implemented content_type attribute

- Changed name of XSLTransformerRegistry to TransformerRegistry

- Implemented behave_like functionality so can return either a
  DTMLMethod or a PageTemplate

- Made FTP access work for XMLTransform, but only list the name
  (cannot edit transform nor source contents for security reasons)

0.5.0  8/11/2002 (Craeg)

- Added ability to specify which meta_types can be transformers
  within an XSLTransformerRegistry.  That way it will ignore
  other types of objects.

- Added "omit" attribute.  If an object contained within a registry
  has an "omit" attribute, it will be ommitted from the list of
  transformers regardless of its meta_type.

- Changed XSLTransformerRegistry to be a folder-like object.  All
  non-folder items that do not have an "omit" attribute will be
  considered transformers.  The registry is now finally policy-free.

0.4.0  08/07/2002 (Craeg)

- Created IXSLTProcessor interface, made 4suite 0.11 and 0.12 
  versions of implementation.

- Enhanced CacheManager to check for existance of cache dir
  when cachePrefix property is set

- Enhanced CacheManager to include delete cache functionality

0.3.0  08/04/2002 (Craeg)

- Added separate CacheManager.  Caching is now optional; it is done
  iff an instance of CacheManager is found.

0.2.0  07/29/2002 (Craeg)

- Added separate XSLTransformerRegistry.

0.1.0  07/23/2002 (Craeg)

- Changed name to XMLTransform

- Removed ability to store content.  It is now _only_ a transformer,
  that points to another Zope object from which it obtains the XML
  document to be transformed.

- Made product more modular by separating out Caching and calls to
  XSLT processor into separate Python modules.  These modules could
  ultimately be made pluggable to allow different caching strategies
  or xslt libraries to be specified at run-time.

0.0.13  02/14/2002 (Craeg)

- Refactored for compatibility with new CVSFile (0.7)

0.0.12  01/02/2002 (Craeg)

- Fixed long standing bug where spelling error in self.contents
  silently created a new attribute on the fly

- Integrated edit with ExternalFile to take advantage of edit via
  upload and Taller/Shorter buttons

0.0.11	12/18/2001 (Craeg)

- Cache files now start with 'ZopeCache' and omit the host name and
  port number

0.0.10	12/14/2001 (Chip)

- Changed to _debugLevel. "0" means no debugging, "1" means some
  debugging trace, "3" means full template-by-template execution
  trace.

- Fixed bug that made it impossible to turn off caching.

0.0.9   11/26/2001 (Craeg)

- Cache will refresh itself in response to a modification of the 
  underlying external file (if appropriate)

0.0.8   11/21/2001 (Chip)

- Added ability to cache the result of the XSLT transformations.  This
  dramatically improves performance.

0.0.7   11/18/2001 (Craeg)

- Converted XMLDocument to use the 4Suite 4XSLT processor instead of
  Saxon.  This obviates XML-RPC requirement.

- Added URNResolver for xsl:include, xsl:import, and document()
  commands.  Added ability to define URN namespaces in the ZODB and
  use them for lookup of local or remote objects.  Local object lookup
  will use acquition.  Remote object lookup uses URL streaming.

0.0.6   11/5/2001 (Chip)

- Added the ability to pass xsl parameters to the transformer.
  See the README.txt file under "XSL Parameters" for more information.

- Fixed bug: missing property_error object now inherits from CVSFile.

0.0.5   10/31/2001 (Craeg & Chip)

- Added Help to Edit and Create screens.

- ClassSecurityInfo now defines security.

- Separated CVS information into separate management tab.

- Added "Cancel Changes" tab to edit screen.

- Fixed FTP get/put for both internal and external files.

0.0.4   10/30/2001

- Incorporated new CVSFile (was 'ZCVSFile') forms and initialization
  functionality. XMLDocument is now an "optional CVSFile".

- Redesigned how transformers are found. XMLDocument now obtains a
  list of transformers and presents them when the user attempts to
  create a new XML Document or edit an old one.

- Changed the organization of the htmlLib to an xslFragments with
  html, pdf, etc. subdirectories. XMLDocument now uses this to
  generate the possible values of outputFormat.

0.0.3	10/23/2001	Incorporated ZCVSFile

- Integrated ZCVSFile to allow the contents of an XMLDocument
  either to be local to Zope (part of ZOBD) or to refer to an external
  CVS-managed file.

- Added a properties management screen to permit users to change certain values.

- Separated notion of RPCServerURL into Server Host and Server Port
  properties. Removed cache property (for now).

0.0.2   10/22/2001	Refined design

- Changed to inherit from SimpleItem to get acquisition working.

- Made "catalog aware" and added indexing to creation method.

- Defined __str__() to return the raw content, not the transformed
  content.

- Removed the dependency on the dtml/xsl.dtml script to find the
  transformer object. Use direct Python calls, instead.

- Wrote a better README.txt.

- Now inherits from ZCVSFile. Edit form adjusted to accommodate.

0.0.1	10/18/2001	Initial Release
