Tuesday, 23 July 2002
Early tomorrow I'll be leaving the Netherlands for my 12-day
vacation on Malta with my girlfriend. I will probably not have Net access
there, so don't send me too much messages while I'm gone...
The light on the Jabber World
Map will be located appropriately, and you might want to try
hovering over the light. Cya!
Monday, 22 July 2002
Here is some english coverage on the event.
Well, it's official. Jan Peter
Balkenende, a.k.a. Harry Potter has been sworn in as the new
Prime Minister of The Netherlands by Queen Beatrix, along with the rest
of the new government. I haven't found any coverage in English yet, so
I'll post that later on.
Monday, 15 July 2002
I use PHP almost
exclusively for all my web stuff. Because I am a firm believer of
separation of concerns I also use a template engine with PHP called
Smarty, the Compiling Template
Engine. My website has content coming from several places
(database, html files, jabber) and it would be nice to have some common
data format: XML.
XML has been getting a lot of attention by me lately, mostly
because of my interest in Jabber. A few weeks ago I got Perl & XML, a
great O'Reilly book. Among all useful stuff about, you guessed it, Perl
and XML, there was a reference to AxKit. AxKit is a Perl based XML
Application Server for Apache and one of it's features is
a XML stylesheet language called XPathScript which combines aspects of
XSLT with the
scriptability of Perl. Really cool stuff!
So what do we have? I use PHP now, but the ideas of AxKit are
really appealing. What to do? What most people in this business do: hack
up something which scratches that itch. Enter SmartyPath. In Smarty it is
really easy to make new template functions, modifiers, filters and other
stuff, so I put together some Compiler Functions to use Smarty templates
for translating XML documents, similar to XSLT, in a procedural as well
as a declarative manner. It still needs a lot of work, I think, but
pretty much works already. Here is an example:
<webpage>
<head>
<title>Who is ralphm?</title>
</head>
<body>
<section>
<title>Who is ralphm?</title>
<p>That would be me. <em>Ralph Meijer</em> .... </p>
<subsection>
<title>Pictures?</title>
<p><img src="/images/ralphm1.jpg"/><img src="/images/ralphm2.jpg"/></p>
</subsection>
</section>
</body>
</webpage>
XML document
{template match="section"}{apply_templates}{/template}
{template match="subsection"}{apply_templates}{/template}
{template match="p"}{element}{apply_templates}{/element}{/template}
{template match="img"}{empty_element}{/template}
{template match="em"}<b>{apply_templates}</b>{/template}
{template match="title"}
{if ($node->findvalue("name(..) = 'section'"))}
<h1>{apply_templates}</h1>
{else}
<h2>{apply_templates}</h2>
{/if}
{/template}
<html>
<head>
<title>{findvalue xpath="/webpage/head/title/text()"}</title>
</head>
<body>
{apply_templates match='/webpage/body/*'}
</body>
</html>
Smarty Template
I'll hack on it some more and make it available for download later
on. Drop me a note if you are interested in this little project.