Save this file in your web server document root (e.g.,
/home/httpd/httpd_perl/htdocs/) as
firstxml.xml.
Now we need a stylesheet to transform the XML to HTML. For this first
example we are going to use XPathScript, an XML transformation
language specific to AxKit. Later we will give a brief introduction
to XSLT.
Create a new file and type the code shown in Example E-2.
Now to get the original file, firstxml.xml, to
be transformed on the server by text.xps, we
need to somehow associate that file with the stylesheet. Under AxKit
there are a number of ways to do that, with varying flexibility. The
simplest way is to edit your firstxml.xml file
and, immediately after the <?xml
version="1.0"?> declaration, add the following:
Now assuming the files are both in the same directory under your
httpd document root, you should be able to make
a request for text.xml and see server-side
transformed XML in your browser. Now try changing the source XML
file, and watch AxKit detect the change next time you load the file
in the browser.
E.2.1. If Something Goes Wrong
If you don't see HTML in your browser
but
instead get the source XML, you will need to check your error log.
(In Internet Explorer you will see a tree-based representation of the
XML, and in Mozilla, Netscape, or Opera you will see all the text of
the document joined together.)
AxKit sends out varying amounts of debug information depending on the
value of AxDebugLevel (which we set to the maximum
value of 10). If you can't
decipher the contents of the error log, contact the AxKit
user's mailing list at
axkit-users@axkit.org with details of your problem.
E.2.2. How it Works?
The stylesheet above specifies how
the
various tags work. The ASP <% %>syntax
delimits Perl code from HTML. You can execute any code within the
stylesheet.
In this example, we use
the special XPathScript
$t hash reference, which specifies the names of
tags and how they should be output to the browser. There are several
options for the second level of the hash, and here we see two of
those options: pre and post.
pre and postspecify
(respectfully) what appears before the tag and what appears after it.
These values in $t take effect only when we call
the apply_templates( ) function, which iterates
over the nodes in the XML, executing the matching values in
$t.
E.2.3. XPath
One of the key specifications being used in XML technologies is XPath.
This is a little language used within other languages for selecting
nodes within an XML document (just as regular expressions is a
language of its own within Perl). The initial appearance of an XPath
is similar to that of a Unix directory path. In Example E-2 we can see the XPath
/dromedaries/species, which starts at the root
of the document, finds the dromedaries root
element, then finds the species children of the
dromedaries element. Note that unlike Unix
directory paths, XPaths can match multiple nodes; so in the case
above, we select all of the species elements in
the document.
Documenting all of XPath here would take up many pages. The grammar
for XPath allows many constructs of a full programming language, such
as functions, string literals, and Boolean expressions.
What's important to know is that the syntax we are
using to find nodes in our XML documents is not just
something invented for AxKit!