[xsl] user-defined XSLT functions and stylesheet variables?

Subject: [xsl] user-defined XSLT functions and stylesheet variables?
From: "David Birnbaum djbpitt@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 18 Jun 2021 17:41:31 -0000
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

Current Thread