Welcome! Log In Create A New Profile

Advanced

Re: Using XSLT and FastCGI together

Michael Nachbaur
April 19, 2009 10:54AM
On 17-Apr-09, at 11:22 AM, Igor Sysoev wrote:

> On Wed, Apr 15, 2009 at 12:26:15PM -0700, Michael Nachbaur wrote:
>
>> On 15-Apr-09, at 11:17 AM, Igor Sysoev wrote:
>>
>>> On Wed, Apr 15, 2009 at 10:10:07AM -0700, Michael Nachbaur wrote:
>>>
>>>> I'm developing a web application that makes heavy use of nginx's
>>>> XSLT
>>>> support (Thank you for that!) About half of the content is in
>>>> static
>>>> XML files that describes the application's state. But when people
>>>> click on and interact with the forms and links on the page, those
>>>> make
>>>> calls to URLs which get dispatched to fastcgi daemons using
>>>> fastcgi_pass.
>>>>
>>>> What I'd like to do is output XML from my FastCGI daemon and feed
>>>> that
>>>> through nginx's XSLT stylesheets in order to render the
>>>> dynamically-
>>>> generated page. But I'm finding that even though my fastcgi_pass
>>>> directive lives in the same location block where my xslt is
>>>> defined,
>>>> nginx is sending the raw XML to the browser.
>>>>
>>>> Is there a way to tell nginx to process the output of my FastCGI
>>>> script with XSLT?
>>>
>>> By default nginx processes only "text/xml" with XSLT. Probably you
>>> send some different type. You may add it in xslt_types.
>>
>> I'm generating my response with XML::LibXML, and am printing the
>> content verbatim. My content-type is text/xml, and the content of
>> the
>> request has the <?xml version=... preamble all properly set.
>>
>> Have you ever seen FastCGI + XSLT working?
>
> I did not test this, but it should work as XSLT is just a filter that
> should work with any output. Could you show the confiration part
> related
> to FastCGI and XSLT ?

location ^~ /replies/ {
root /persist/cluster/;
index message.xml;
if ($uri ~ /replies/(......../././././([^/]+))) {
set $message_path '/persist/cluster/replies/$1';
set $reply_token $2;
}
if ($uri ~ header.*$) {
error_page 404 /templates/default/header.gif;
}
if ($uri ~ footer.*$) {
error_page 404 /templates/default/footer.gif;
}
include /opt/nginx/etc/fastcgi_params;

if ($uri ~ /send$) {
fastcgi_pass unix://var/run/sock/fcgi-reply.sock;
}

xslt_stylesheet /var/www/layouts/layout1/template.xsl
reply_token
='$reply_token':message_path='$message_path':status='$arg_status';
xslt_stylesheet /var/www/layouts/layout2/template.xsl
reply_token
='$reply_token':message_path='$message_path':status='$arg_status';

xslt_types text/xml;
}


And my FastCGI daemon that listens to that socket uses XML::LibXML to
create its response, and its content-type is text/xml. And all I get
is the plain XML back, unaltered by XSLT. Any ideas?
Subject Author Posted

Using XSLT and FastCGI together

Michael Nachbaur April 15, 2009 01:10PM

Re: Using XSLT and FastCGI together

mike April 15, 2009 01:30PM

Re: Using XSLT and FastCGI together

Michael Nachbaur April 15, 2009 02:23PM

Re: Using XSLT and FastCGI together

Igor Sysoev April 15, 2009 02:18PM

Re: Using XSLT and FastCGI together

Igor Sysoev April 15, 2009 02:17PM

Re: Using XSLT and FastCGI together

Michael Nachbaur April 15, 2009 03:26PM

Re: Using XSLT and FastCGI together

Igor Sysoev April 17, 2009 02:22PM

Re: Using XSLT and FastCGI together

Michael Nachbaur April 19, 2009 10:54AM

Re: Using XSLT and FastCGI together

Igor Sysoev May 12, 2009 02:04AM

Re: Using XSLT and FastCGI together

Michael Nachbaur May 12, 2009 03:36PM

Re: Using XSLT and FastCGI together

Maxim Dounin April 15, 2009 02:27PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 156
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready