Bonjour,

Thanks Sebastian, you put me in the right direction.

I turns out that the newest XSLT API will NOT pass the parameters array when 
xslt_process() uses URIs for the XML source and the XSL sheet, like it used to with 
the previous versions "xslt_run()". One must use arguments for the XML and XSL content.

In other words:
$xslt_args = array( '/_xml' => $xml, '/_xsl' => $xsl ) ;
$result = xslt_process( $xh, 'arg:/_xml', 'arg:/_xsl', NULL, $xslt_args, $xslt_params 
) ==> good


$xslt_args = array() ;
$result = xslt_process( $xh, 'xml_content.xml', 'xsl_sheet.xsl', NULL, $xslt_args, 
$xslt_params ) ==> bad
    (the transformation works correctly, but parameters are not passed)

Fortunately it did not prove necessary to turn register_globals ON.

Ignatius Reilly


--------------------------------------------------------------------------------

  ----- Original Message ----- 
  From: Ignatius Reilly 
  To: [EMAIL PROTECTED] 
  Sent: Saturday, August 17, 2002 6:10 PM
  Subject: Re: [Sab] Problem passing variables with PHP 4.2


  Thanks Mattes,

  That's in fact what I am doing. My script is conform to the documentation. However, 
my <xsl:value-of select="{$VAR_NAME}" /> fills empty string values for the variable.

  The really strange thing here is that it used to work with PHP 4.0, but not any more.

  Could it be a variable scoping problem? Anything to do with register_globals = off 
(in php.ini) ?

  I am really puzzled


------------------------------------------------------------------------------

    ----- Original Message ----- 
    From: Matthes 
    To: [EMAIL PROTECTED] 
    Sent: Saturday, August 17, 2002 7:35 PM
    Subject: Re: [Sab] Problem passing variables with PHP 4.2


    You can call your vars simply by defining <xsl:param name="lang" /> at
    the top of your script (after xsl headers but before templates
    definitions - see php online documentation, there's some comment
    about this) and then access them in your xsl script by calling them
    like <xsl:value-of select="{$VAR_NAME}" /> or so.

    try this:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
    <xsl:output method="html" indent="yes"/>
    <xsl:param name="lang" />

    ...

    <xsl:value-of select="$lang" />

    ...

    it should work ;)

    Matthes


    IR> Hi,

    IR> Since upgrading from PHP 4.0 to 4.2, I do not manage any longer to pass 
parameters from the PHP script. The XSLT transformations is performed allright, 
though, and use empty values for the
    IR> parameters defined.

    IR> I tried to kludge by passing parameters in the form of string arguments:
    IR> $xslt_args["lang"] = "<a>French</a>" ;
    IR> and  <xsl:param name="lang" select="document('arg:/lang0')/a"/>
    IR> ... but here again I get a 'arg:/lang' not found error

    IR> I use Apache 1.3.14 on a W2K machine

    IR> Anybody has encountered the same problem?
     
    IR> Ignatius
    IR> ------------------------------------------------------------------------

    IR> Archives and info: http://www.gingerall.org/charlie/ga/xml/m_ml.xml

    IR> Mailing list maintained by Ginger Alliance

    ------------------------------------------------------------------------

    Archives and info: http://www.gingerall.org/charlie/ga/xml/m_ml.xml

    Mailing list maintained by Ginger Alliance


Reply via email to