It appears source-relative document() URLs are passed to AxKit in absolute
form for the first stylesheet in a multiple-XSLT pipeline, and in relative
form on succeeding stylesheets. To wit, when I call a trivial stylesheet
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
    <xsl:output method="xml"/>

    <xsl:template match="/">
        <output>
            <xsl:copy-of select="."/>
            <xsl:copy-of select="document('../include.xml?query=1',.)"/>
        </output>
    </xsl:template>

</xsl:stylesheet>

twice using, for example,
    AxAddProcessor text/xsl "../ss/test.xsl"
    AxAddProcessor text/xsl "../ss/test.xsl"

in httpd.conf, verbose logs indicate, for the first run,
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] [LibXSLT]
performing transformation
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] LibXSLT
match_uri: file:///etc/xml/catalog
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] LibXSLT
match_uri: /axexp/include.xml?query=1
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] get_provider:
/axexp/include.xml?query=1
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] Content
Provider Override: Apache::AxKit::Provider::File

and for the second,
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] [LibXSLT]
performing transformation
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] LibXSLT
match_uri: ../include.xml?query=1
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] get_provider:
../include.xml?query=1
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] Absolute URI:
/axexp/include.xml
[Thu Dec 18 17:30:51 2003] [warn] [client 127.0.0.1] [AxKit] Content
Provider Override: Apache::AxKit::Provider::File

The effect is the same for my trivial example (the File provider, after
all, doesn't take parameters), but given a target that takes parameters,
get_provider is stripping the query string from my request. Notice
second-to-last log entry in the latter log and

    } elsif (substr($uri,0,1) ne '/') {
          ...
        $uri =~ s/\?.*$//;
          ...
        AxKit::Debug(8,"Absolute URI: ".$uri);
    }

in Apache::AxKit::Provider::get_provider.

This is causing a problem, as I use a relative document() call to a
provider that takes query string parameters in my actual application.

Intellectually, I'm somewhat curious why the differences in path handling
between phases exist at all. Practically, I'm more interested in the
effects of commenting out the substitution shown above from
Apache/AxKit/Provider.pm. Doing this appears to solve my problem and AxKit
still passes the test suite, but I fear the query string is being removed
for a reason. Anyone know what that reason is, or if this step can be
removed safely?

Note that I'm using a recently (today) cvs'd AxKit and that the
above-referenced catalog file (file:///etc/xml/catalog) doesn't exist.

Sincerely,
Jason T. Miller
Shaffstall Engineering

------------------------------------------------------------------------
Shaffstall Corporation     http://shaffstall.com / http://theoneview.com
A Division of One View, Inc.                     [EMAIL PROTECTED]
8531 Bash Street / Indianapolis, IN / 46250            317-842-2077 x302

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to