xsl-list
[Top] [All Lists]

Re: Convert paramter to a sequence

2006-02-17 04:57:46
"Michael" == Michael Kay <mike(_at_)saxonica(_dot_)com> writes:

    >> > Pass the parameter as the Xpath value "(1, 2, 3)".
    >> 
    >> If the system allows xpath expressions to be specified
    >> externally.  Unless I've missed something, saxon (for example)
    >> only allows (on the command line) parameters to be specified by
    >> a string value or be specified as a document node by passing in
    >> a file name/uri.

    Michael> Yes. Some products allow you to specify an XPath
    Michael> expression as the parameter value. With Saxon you always
    Michael> pass a value, not an expression.

I too always pass a value, not an expression.
But I get round this for passing XPath parameter expressions from the
command line by converting them to a value first.

I do this by:

1) Saving the static context of the xsl:tranform/stylesheet element of
   the principal stylesheet module in the executable stylesheet. I can
   then use this to parse the parameter into a parsed XPath
   expression.
2) I create a dynamic context based on the initial context node and
   evaluate the expression using that context.
3) The resulting value is then set as the parameter.

The sharp-eyed amongst you will notice that there is no initial
context node if only an initial template is requested. In this case I
disallow XPath expression strings as parameters.
But in fact passing (1,2,3) as a parameter is quite likely to be of
great use in just such a scenario. So one day I intend to remove this
limitation. It should be fairly easy - I just have no time right now.

I think Saxon could easily be adapted to use such a scheme.
-- 
Colin Adams
Preston Lancashire

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



<Prev in Thread] Current Thread [Next in Thread>