################################################################
$RCSfile: README.txt,v $
Authors: Chip Morris and Craeg Strong, Ariel Partners LLC
Philipp von Weitershausen, philiKON Valley
$Date: 2003/03/30 03:45:47 $
################################################################
Contents
1. Successor project to XMLTransform
2. Quick Start
3. Prerequisites
4. Description
5. Known Limitations
6. Contributions
7. Schema Migration
8. XSLT Processor Support Status
9. Notes
10. Unit Testing on Win32
Synopsis: ZopeXMLMethods 1.0 released
ZopeXMLMethods provides methods to apply to Zope objects for XML/XSLT
processing. XSLTMethod associates XSLT transformers with XML
documents. ZopeXMLMethods succeeds XMLTransform. It features
file-system caching and works with many XML/XSLT libraries.
Successor Project to XMLTransform
ZopeXMLMethods release 1.0 represents a fundamental change in
paradigm. Rather than pointing directly to both the XML source and
the XSLT source, an XSLTMethod now points at the XSLT source and is
*applied* to the XML source like a python script or DTML method.
This is good news, as it makes XSLTMethod much more Zope-ish and
completely obviates the XML Transformer Registry. However, the down
side is that there is no easy upgrade path from previous releases.
Summary of changes
- Removed DTML GUI pages, replaced with Zope Page Templates
- Zope Page Templates now required
- XMLTransform module: renamed to ZopeXMLMethods
- XMLTransform class: enhanced and renamed to XSLTMethod
- TransformerRegistry class: removed
- FourSuite/Pyana/LibXslt/SabPythProcessor classes: upgraded to
support newer releases, but otherwise unchanged
- CacheManager class: enhanced to use the transformation path (URL)
as the caching key
Quick Start
**Don't forget to read the Prerequisites section below!**
ZopeXMLMethods consists of a set of methods that can be applied to
Zope objects to perform various types of XML processing. In general
each type of method is applied to a Zope object in the same manner
that a standard DTML Method or Python Script might be applied. The
only requirement for the source Zope object is that it must somehow
produce XML. Currently, this XML must be in ASCII form, but in the
future additional formats such as DOM or SAX events will be
supported. ZopeXMLMethods includes a Cache Manager that is
specialized to notice changes to the XML source files and to store
cached contents in files in the filesystem, rather than the Zope
object database.
ZopeXMLMethods is the successor project to XMLTransform.
Unfortunately it is not backward compatible due to the change in
usage paradigm and increased project scope. Some upgrade hints are
included in the documentation, however. The XMLTransform project is
now considered obsolete. ZopeXMLMethods is now hosted on
SourceForge. The project page is located
"here":http://zopexmlmethods.sourceforge.net
As of today, ZopeXMLMethods includes XSLTMethod, which enables Zope
users to associate an XSLT transformer with an XML document that
automatically renders the result of the transformation when called.
It is applied to another Zope object in the same manner that a DTML
Method or Python Script is applied. The XSLTMethod can behave like
a number of standard Zope objects, so that the output of a
transformation can be used in place of a normal Zope object. There
are no constraints on the type of Zope objects used for the XML or
XSLT. In fact, the content may cobbled together from multiple
sources, as long as the final content may be obtained as well-formed
XML from a single object for each. Future releases of
ZopeXMLMethods will add additional methods to support additional XML
standards such as XPath, XPointer, XMLSchema, RDF, XQuery, XUpdate
etc.
ZopeXMLMethods features a pluggable architecture that makes it
possible to dynamically choose between different XML/XSLT processors
at runtime. It currently works with any of the following: 4suite
(0.11.1 and current), Gnome libxml2/libxslt, Pyana (a Python wrapper
on top of Xalan/C), and SabPyth (a Python wrapper on top of
Sablotron). The library is designed such that it should be
relatively straightforward to support additional processors in
future. It is even possible to ZSync from one Zope instance to
another where the two Zope instances use *different* XML libraries.
This makes it much easier to test or upgrade your XML processing
library or to support heterogeneous platforms.
The ZopeXMLMethods product adds two separate objects to the "Add"
menu in the Zope Management Interface:
- XSLT Method
- XML Method Cache Manager
The quickest way to get started with ZopeXMLMethods is to read the
description below, then follow the directions in TUTORIAL.txt, then
re-read the description below :-) The tutorial includes examples of
increasing complexity that should cover most normal uses of the
product. **Don't forget to read the Prerequisites section below!**
ZopeXMLMethods features a pluggable architecture that makes it
possible to dynamically choose between different XSLT Processors at
runtime. It currently works with any of the following combinations:
- "PyXML 0.6.6":http://www.sourceforge.net/projects/pyxml and
"4Suite 0.11.1":http://www.4suite.org/. For me, on either my
Win2K machine or my Red Hat Linux 8.0 machine, that means
downloading and installing the following::
PyXML-0.6.6.tar.gz
4Suite-0.11.1.tar.gz
**DON'T FORGET TO SPECIFY THE --without-xslt --without-xpath
OPTIONS FOR PYXML**
- "PyXML 0.8.2":http://www.sourceforge.net/projects/pyxml/ and
"4Suite 1.0a":ftp://ftp.4suite.org/pub/4Suite/ For me,
on either my Win2K machine or my Red Hat Linux 8.0 machine, that
means downloading and installing the following::
PyXML-0.8.2.tar.gz
4Suite-1.0a1.tar.gz
**DON'T FORGET TO SPECIFY THE --without-xpath OPTION FOR PYXML**
Note that this release of ZopeXMLMethods is *not* compatible with
4Suite 0.12.0a3, but it should be compatible with the upcoming 1.0
beta and final releases.
- "libxml2 2.5.5":http://www.xmlsoft.org/ and "libxslt
1.0.28":http://www.xmlsoft.org/ (*Python* bindings). For me, on
my Red Hat Linux 8.0 machine, that means downloading and
installing the following::
libxml2-2.5.5-1.i386.rpm
libxml2-python-2.5.5-1.i386.rpm
libxslt-1.0.28-1.i386.rpm
libxslt-python-1.0.28-1.i386.rpm
"Here":http://www.zlatkovic.com/projects/libxml/index.html is a
site with a Win2K port of the base libraries, and you can get the
python bindings "here":http://users.skynet.be/sbi/libxml-python/
My efforts at installing libxslt on windoze have been unsuccessful
so far. *If someone has successfully set up libxslt on Win2K,
please email me the recipe and I will update this document.*
- "Pyana 0.6":http://sourceforge.net/projects/pyana/. This is a
python wrapper around the apache XML parser xercesC++, version 1.4
and XSLT processor xalanC++, version 2.1 **These should not be
confused with the Java products xalanJ and xercesJ. They are
something totally different** For me, on my Red Hat Linux 8.0
machine, that means downloading and installing the following::
Pyana-0.6.0.linux-i686-extras.tar.gz
Pyana-0.6.0.linux-i686-py2.1.tar.gz
On my Win2K machine, that means downloading and installing::
Pyana-0.6.0.win32-py2.1.exe
- "SabPyth 0.52":http://www.gingerall.com/charlie/ga/xml/x_sabpyth.xml.
This is a python wrapper around the Sablotron XSLT