O'Reilly logo

XML Publishing with AxKit by Kip Hampton

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

XPathScript Cookbook

Just as we concluded our look at XSLT with a few recipes that offer solutions to common tasks, we will do the same here with XPathScript. Since most XSLT tips are easy to re-create using XPathScript, I will not repeat the same recipes but will focus instead on things unique to XPathScript (or simply not possible with vanilla XSLT 1.0).

Accessing Client Request and Server Data

Problem

You need to access information about the current request (POSTed form data, cookies, etc.) or other parts of the Apache HTTP server API from within your stylesheet.

Solution

Use the Apache object that is passed as the first argument to the top level of every XPathScript stylesheet transformation.

<%
# at the top lexical level of your XPathScript stylesheet:
my $r = shift;
# $r now contains the same Apache object passed to mod_perl handler scripts.
%>

Discussion

One benefit of running XPathScript inside of AxKit is that each stylesheet can directly access the Apache server environment via the same Apache object that gives mod_perl its power and flexibility. This object can be used to examine (and in many cases, control) virtually every aspect of the Apache HTTP Server, from user-submitted form and query data to outgoing headers and host configurations.

Accessing form and query data

<%
use Apache::Request; 
my $r = shift;
my $cgi = Apache::Request->instance($r);
%>
<html>
  <body>
     <p>
      You said that your favorite fish is <%= $cgi->param('fave_fish') %>
     </p>
  </body>
</html>

Setting cookies

<% use ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required