Subject: Re: [xsl] passing a function as a parameter to transform() From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Thu, 13 May 2021 21:20:43 -0000 |
> On 13 May 2021, at 22:05, Graydon graydon@xxxxxxxxx <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: > > Hello -- > > Using Saxon 10.3 and XSLT 3.0 (from inside oXygen 23), can I pass a function as > a parameter to transform()? > > <xsl:sequence select=" > transform(map { > 'stylesheet-location': 'tidy.xsl', > 'source-node': $tableMerge, > 'stylesheet-params': map { > QName('', 'defaultLang'): $defaultLang, > QName('', 'overrideStringMap'): $overrideStringMap, > QName('', 'lang2key2autotextMap'): $lang2key2autotextMap, > QName('local','getString') : local:getString(xs:string,xs:string) > } > })?output" /> > > is syntactically acceptable. yes, but you aren't passing a function, you are passing the result of calling local:getString with parameters child::xs:string and child::xs:string. Unless you have any child elements called xs:string, which is unlikely, the actual parameter values are empty sequences, which is probably why the function is complaining. To pass the function itself, rather than the result of a function call, use local:getString#2. Michael Kay Saxonica > > Inside tidy.xsl, > > <xsl:param as="xs:string" name="defaultLang" /> > <xsl:param as="map(*)" name="overrideStringMap" /> > <xsl:param as="map(*)" name="lang2key2autotextMap" /> > <xsl:param as="function(xs:string,xs:string) as xs:string" name="local:getString" /> > > is syntactically acceptable (though oXygen complains about the actual function calls and not being able to find the function). > > If I run the transform, though, I get: > Engine name: Saxon-EE 10.3 (External) > Severity: error > Description: An empty sequence is not allowed as the first argument of local:getString() > > with a location that tells me the transform call parameter map is where the error happens. > > Is there a way to do this? I can of course duplicate the function definition but that seems improper. > > Thanks! > > > -- > Graydon Saunders | graydonish@xxxxxxxxx > CC&s oferC)ode, C0isses swC! mC&g. > -- Deor ("That passed, so may this.")
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] passing a function as a param, Graydon graydon@xxxx | Thread | Re: [xsl] passing a function as a p, Graydon graydon@xxxx |
[xsl] passing a function as a param, Graydon graydon@xxxx | Date | Aw: [xsl] passing a function as a p, Martin Honnen martin |
Month |