[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: user-defined XSLT functions and stylesheet variabl

Subject: Re: user-defined XSLT functions and stylesheet variables?
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 18 Jun 2021 21:42:57 -0000
Re:  user-defined XSLT functions and stylesheet variabl
First, I'd suggest that it's bad practice to have global variables whose value
depends on the global context item. If you have such variables, it makes it
much harder to reuse the code, e.g. as part of a pipeline. (If you want, you
can use the xsl:global-context-item declaration to enforce this.)

If your global variables satisfy that constraint, I think there are cases
where referencing global variables within functions is a perfectly reasonable
thing to do. Referring to variables that represent manifest constants is
obviously harmless. Referring to the values of stylesheet parameters can also
make sense, though I'd look at each case on its merits. For example, if you
have a stylesheet parameter that's a set of currency exchange rates, having a
set of functions that acts as an API to this parameter document
(f:getExchangeRate('USD', 'GBP')) might be entirely sensible.

Michael Kay
Saxonica

> On 18 Jun 2021, at 18:41, David Birnbaum djbpitt@xxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> Dear XSLT-list,
>
> Is there agreement about Best Practice with respect to using stylesheet
(global) variables inside user-defined functions?
>
> If I want to be able to reuse my function in different contexts, passing in
everything the function needs as an explicit parameter ensures that it won't
have expectations about the global context. There may also be philosophical
reasons that functions should be entirely self-contained, and should not
depend on variables available in the execution context.
>
> Meanwhile, since XSLT does not allow variables to be modified, the concern
(in other languages) about modifying global variables inside functions does
not obtain in XSLT, and my use of stylesheet variables would be read-only. If
I've written a one-off function intended for use only in a single stylesheet,
passing global variables into it as explicit parameters is more verbose than
relying on the fact that the function, like everything else in the stylesheet,
has access to stylesheet variables. Passing everything in explicitly does make
the function more self-documenting (since everything the function uses is
declared as a parameter inside the body) and perhaps also more convenient to
test, but what do other developers think about how to balance those advantages
against the added verbosity?
>
> Best,
>
> David
> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/293509> (by
email <>)

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.