Tutorial
################################################################
$RCSfile: TUTORIAL.txt,v $
Author: Craeg Strong
$Date: 2002/08/26 19:00:00 $
################################################################
Contents
- Getting Started
- Conventions
- Hello World
- Adding More Transforms
- Creating a Cache Manager
- behave_like Page Template
- Parameterizing Transformations
- URN Resolvers
Getting Started
Before getting started, please make sure you have read and fulfilled the Prerequisites section of the README file. Installation is covered in INSTALL.txt.
You will want to create a scratch folder in your Zope Management Interface (ZMI) where you can work. For the purposes of the example, I am assuming you have created a Zope Folder in the Root Folder called 'scratch':
Root_Folder/scratch
Also, make sure that the Zope objects for XMLTransform appear in the
Add
menu of the Zope Management Interface (ZMI). If they do not,
please check your prerequisites and the error log of your Zope
instance. The following three new options should appear:
XML Transform XML Transform Cache Manager XSL Transformer Registry
Conventions
I will use the ZMI and ZOPE abbreviations throughout the tutorial to mean Zope Management Interface and the directory in which you installed your Zope server, respectively.
I will use the XMLTRANSFORM abbreviation throughout the tutorial to refer to the directory containing the XMLTransform product within your Zope installation. On windows systems that will be:
ZOPE\lib\python\Products\XMLTransform
and on UNIX/Linux systems that will be:
ZOPE/lib/python/Products/XMLTransform
I will use the TESTFILES abbreviation throughout the tutorial to refer to the directory containing the testfiles for the XMLTransform product within your Zope installation. On windows systems that will be:
ZOPE\lib\python\Products\XMLTransform\tests\testfiles
and on UNIX/Linux systems that will be:
ZOPE/lib/python/Products/XMLTransform/tests/testfiles
I will assume that your Zope is running on port 8080 and the name of your company is acme.com, for example:
http://www.acme.com:8080/scratch/hello Please substitute the real values as appropriate in the examples.
Hello World
CREATE A TRANSFORMER REGISTRY
In your scratch folder, select XSL Transformer Registry
from the
ZMI Add menu. Enter registry
for the ID and My Registry
for
the Title. Click the Add TransformerRegistry
button. You
should see a happy message.
INSTALL A TRANSFORMER
Back in your scratch folder, click on the registry to navigate
into it. Select DTML Document
from the ZMI Add menu. Enter
simple
for the ID and click the Browse
button next to the File
field. Browse for the file simple.xsl
in TESTFILES. Click the
Add
button.
ADD AN XML DOCUMENT
Back in your scratch folder, select DTML Document
from the ZMI
Add menu. Enter simple.xml
for the ID and click the Browse
button next to the File field. Browse for the file simple.xml
in TESTFILES. Click the Add
button.
ADD AN XMLTRANSFORM
Back in your scratch folder, select XML Transform
from the ZMI
Add menu. Notice that the Add form indicates that a Cache Manager
is currently NOT available. That is OK. In the "XML
Information" panel, you should see "simple" listed as the one and
only choice in the "Transformer Name" drop down menu. Type in
"simple.xml" in the "Source ID" field. Enter "hello" for the Zope
ID and "Hello, World" in the Title field. Click the "Add
XMLTransform" button. You should see a happy message.
MAKE IT HAPPEN
Back in your scratch folder, click on the "hello" XMLTransform object. You should now be looking at the Edit form. You will notice it looks much like the Add form -- you can change nearly everything. Now click on the View tab. You should see the following:
Hello, world
Congratulations! If this works, you are in business.
Now try viewing the content in another browser window. Open a new browser window and type in the following:
http://www.acme.com:8080/scratch/hello
Adding More Transforms
ALTERNATE
Back in your scratch folder, click on the registry to navigate
into it. Select Page Template
from the ZMI Add menu. If you
don't have Page Templates installed, DTML Document
will work
fine. Enter alternate
for the ID and click the Browse
button
next to the File field. Browse for the file alternate.xsl
in
TESTFILES. Click the Add
button.
DTMLTEST
Back in your scratch folder, click on the registry to navigate
into it. Select DTML Method
from the ZMI Add menu. Enter
dtmltest
for the ID and click the Browse
button next to the File
field. Browse for the file dtmltest.xsl
in TESTFILES. Click the
Add
button.
ZOPE PROPERTY
Back in your scratch folder, click on the properties tab. You are
now viewing properties defined on the scratch folder. Add a new
property of type string
with name who
and value zippy
Back in your scratch folder, click on the "hello" XMLTransform
object. You should now be looking at the Edit form. Check out
the Transformer Name
pulldown menu in the "XML INFORMATION"
panel. You should now see three possibilities:
simple alternate dtmltest
TESTING
Select "alternate" from the list and hit the "Save Changes" button. Click on the View tab. You should see:
Hello, world and goodbye
Select "dtmltest" from the list and hit the "Save Changes" button. Click on the View tab. You should see:
Hello, worldzippy
DTML Tags
Navigate to scratch/registry/dtmltest. You should now be seeing the XSL program text in the Edit tab. Notice that the DTML tag embedded in the code:
<dtml-var who>
The dtmltest transformer transformed simple.xml into a document that included a DTML tag which was automatically resolved to find the "who" property we added to the scratch folder. Kewl.
Creating a Cache Manager
ANOTHER XML DOCUMENT
Back in your scratch folder, select External File
from the ZMI
Add menu. Enter the fully qualified pathname of the param.xml
file in the TESTFILES directory for the "Target Filepath on
Server" field. Don't have ExternalFile installed? No problem --
just use a DTML Document
with ID of param.xml and upload the
contents just like you did in Hello World above.
ANOTHER XMLTRANSFORM
Back in your scratch folder, select XML Transform
from the ZMI
Add menu. Notice that the Add form indicates that a Cache Manager
is currently NOT available. That is OK. In the "XML
Information" panel, you should see all three transformers listed
as choices in the drop down menu. Choose "alternate". Type in
"param.xml" in the "Source ID" field. Enter "bonjour" for the
Zope ID. Click the "Add XMLTransform" button. You should see a
happy message.
CHECK OUTPUT
Try changing the transformers used by each XMLTransform instance ("hello" and "bonjour") and going to their View tabs to see the results. Alternatively you could view the results in a browser.
ADD A CACHE MANAGER
Back in your scratch folder, select XML Transform Cache Manager
from the ZMI Add menu. Enter cacherInTheRye
for the ID. Click
on the "Add XMLTransformCacheManager" button. You should see a
happy message. Now, back in the scratch folder, click on
cacherInTheRye
. You should be in the Cache tab, where there are
several buttons available. Don't click on any of the yet. First,
let's find out where the cacher
is going to store his files!
Click on the "Properties" tab. Notice the cachePrefix Property:
c:\tmp\ZopeCache
The cachePrefix is both a directory and file prefix. The value
above indicates that files will be placed in the c:\tmp
directory and the beginning of every file name will start with
ZopeCache
. Setting the prefix of all cache files the same helps
a great deal in identifying them -- as all UNIX administrators
know, tmp
directories can get quite full of stuff.
Ensure that the prefix is pointing to a valid directory, either by adding the directory or changing the property, or both.
USING THE CACHE MANAGER
Back in the Cache
tab for the cacherInTheRye
, try pressing the
different buttons. Don't be shy. You should find them quite
intuitive. If not, now would be a good time to try the help
system. Click on the Help!
link in the upper right hand corner
of the Cache
tab.
When you navigate back to the Edit
tab of one of the
XMLTransform instances, you will now notice something different.
It will now say "Cache Manager IS Available." Informative little
buggers, aren't they?
behave_like Page Template
This step can only be done if you have Page Templates installed...
TEMPLATETEST
Back in your scratch folder, click on the registry to navigate
into it. Select DTML Method
from the ZMI Add menu.
Enter templatetest
for the ID and click the Browse
button
next to the File field. Browse for the file templatetest.xsl
in
TESTFILES. Click the Add
button.
TEST
Back in your scratch folder, click on the "bonjour" XMLTransform object to navigate to it. Change the "Transformer Name" to "templatetest" and click "Save Changes". Now click on the view tab:
Hello, junk
Now, wait a minute! That's not what we wanted. Click on the Properties tab and change behave_like to "Page Template" and click "Save Changes". Now click on the view tab:
Hello, zippy
Much better! Check out the source code to templatetest.xsl if you are curious.
Parameterizing Transformations
PARAM XSLT
Back in your scratch folder, click on the registry to navigate
into it. Select DTML Document
from the ZMI Add menu. Enter
param
for the ID and click the Browse
button next to the File
field. Browse for the file param.xsl
in TESTFILES. Click
the Add
button.
SCALAR PARAMETERS
Back in your scratch folder, click on the properties tab. You are
now viewing properties defined on the scratch folder. Add a new
property of type lines
with name XSLparameters
. Enter the
value "who". Then save changes and add "message" to the list.
You have just indicated to all XMLTransform instances located
underneath the scratch folder that they should use two parameters,
named "who" and "message". The parameters are grabbed using
acquisition, so they can be properties or Zope objects themselves.
First, let's use (scalar) properties.
Create another Property on the scratch folder called "message" with type "string" and value "Yow! Are we having fun yet?"
TESTING
Back in your scratch folder, click on the "bonjour" XMLTransform
object to navigate to it. Change the "Transformer Name" to
"param" and click "Save Changes". In this case, it does not
matter what behave_like
is set to. Now click on the view tab:
Hello, zippy and Yow! Are we having fun yet?
PROPERTIES FILE XSLT
Back in your scratch folder, click on the registry to navigate
into it. Select Folder
from the ZMI Add menu, and add a
subfolder called prop
. Navigate into the prop
subfolder.
Select DTML Document
from the ZMI Add menu. Enter
propertiesfile
for the ID and click the Browse
button next to
the File field. Browse for the file propertiesfile.xsl
in
TESTFILES. Click the Add
button.
BONJOUR AGAIN
Back in your scratch folder, click on "bonjour" to get to its Edit
form. Select props/propertiesfile
from the Transformer Name
drop down menu.
PROPERTIES FILE XML
Back in your scratch folder, select DTML Document
from the ZMI
Add menu. Enter properties
for the ID and click the Browse
button next to the File field. Browse for the file
properties.xml
in TESTFILES. Click the Add
button.
CHANGE XSL PARAMETERS
Back in your scratch folder, select the Properties tab, and change the XSLparameters to only a single line that says "properties". Now navigate back to the "bonjour" XMLTransform object. Click on the View menu:
url is http://www.acme.com:8080/scratch/properties
URN Resolvers
PROPERTIES FILE XSLT
Back in your scratch folder, click on the registry to navigate
into it. Select Folder
from the ZMI Add menu, and add a
subfolder called urntest
. Navigate into the urntest
subfolder. Select DTML Document
from the ZMI Add menu. Enter
calldocumentfunc
for the ID and click the Browse
button next
to the File field. Browse for the file calldocumentfunc.xsl
in TESTFILES. Click the Add
button.
CREATE PROPERTY FILE
Back in the scratch folder, create a subfolder with the ID "arielpartners". Then create a subfolder within arielpartners called "propfolder". Finally, create a subfolder within propfolder called "foo". Within the foo folder, create a DTMLDocument with ID "properties" by uploading the "properties.xml" file from TESTFILES. You now have a Zope object:
Root_Folder/scratch/arielpartners/propfolder/foo/properties
URN NAMESPACE REGISTRATION
Back in your scratch folder, click on the properties tab. You
are now viewing properties defined on the scratch folder. Add a
new property of type lines
with name URNnamespaces
. Enter
the value "arielpartners". Then save changes. You have just
indicated to all XMLTransform instances located underneath the
scratch folder that the "arielpartners" folder is now available
as a URN namespace. That is, it can be used as the "NID" piece
of a URN (see README.txt for more details). The "NSS" portion
of a URN will be interpreted as a Zope path relative to the NID.
We will see how this works below.
BONJOUR AGAIN
Back in your scratch folder, click on "bonjour" to get to its
Edit form. Select urntest/calldocumentfunc
from the
Transformer Name
drop down menu and save changes, then click
the View tab. You should see:
Hello, sneezy
URN resolution works the same way in xsl:include and xsl:import statements. Have fun!