[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: Sun, 20 Jun 2021 07:52:17 -0000
Re:  user-defined XSLT functions and stylesheet variabl
But a lot of that stuff is assuming procedural languages, where global
variables are mutable. An immutable global variable is essentially equivalent
to a zero-arity function. With XSLT, the only real difference between a global
variable and a zero-arity function is that a global variable has access to the
global context item - and it's there, I think, that the potential for evil
lies. The implicit static and dynamic context is the cause of a lot of XSLT
bugs, and programmiing good practices need to take that into account.

Michael Kay
Saxonica

> On 20 Jun 2021, at 01:12, Christophe Marchand cmarchand@xxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> All the responses given by Eliot and Liam respect Clean Code[1] best
practises. Many principles must be respected if you expect your code may
evolve :
>
> DRY : Don't Repeat Yourself ; sometime in opposition with Single
Responsability principle
> YAGNI : You Ain't Gonna Need It
> SOLID, with only some of them applicable to XSLT :
> S : Single Responsability Principle: There must have no more than One reason
to modifiy this piece of code
> O : Open Close Principle: Open to Extension, Closed to Modification
> All of these principles try to avoid use of global variables, even if it's
not clearly written in the details of pirinciples. As Mike says, Evil is in
the detail, but Evil is also in global variables.
>
> HTH,
> Christophe
>
> [1] : clean Code, Bob Martin, Pearson Addison-Wesley, 2009
>
> Le 18/06/2021 C  20:28, Eliot Kimber ekimber@xxxxxxxxxxxx
<mailto:ekimber@xxxxxxxxxxxx> a C)crit :
>> If I was given a style sheet with a function that used a global variable I
would immediately rewrite the function to take that variable as a parameter.
>>
>> Cheers,
>>
>> E.
>> --
>> Eliot Kimber
>> http://contrext.com <http://contrext.com/>
>>
>>
>>
>> From: "Liam R. E. Quin liam@xxxxxxxxxxxxxxxx
<mailto:liam@xxxxxxxxxxxxxxxx>" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
<mailto:xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
>> Reply-To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
<mailto:xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
>> Date: Friday, June 18, 2021 at 12:56 PM
>> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
<mailto:xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
>> Subject: Re:  user-defined XSLT functions and stylesheet variables?
>>
>> On Fri, 2021-06-18 at 17:42 +0000, David Birnbaum djbpitt@xxxxxxxxx
<mailto:djbpitt@xxxxxxxxx>
>> wrote:
>> Dear XSLT-list,
>>
>> Is there agreement about Best Practice with respect to using
>> stylesheet
>> (global) variables inside user-defined functions?
>>
>> Tommie once gave a talk about best practice considered hamrful... :)
>>
>> You've identified some of the issues, but for me the most important
>> ones are this:
>> (1) locality of reference: can i understand thefunction without having
>> to look elsewhere?
>> (2) maintainability: how easy will it be to fix problems in this
>> function in the future, or for someone else to change it, perhaps to
>> workslightly differently on edge cases. Assume they are in a hurry.
>> (3) can i take the function and reuse it in another stylesheet later?
>>
>> Overall the use of global variables is likely to be an impediment to
>> each of these.
>>
>>
>> Liam
>>
>> --
>> Liam Quin, https://www.delightfulcomputing.com/
<https://www.delightfulcomputing.com/>
>> Available for XML/Document/Information Architecture/XSLT/
>> XSL/XQuery/Web/Text Processing/A11Y training, work & consulting.
>> Barefoot Web-slave, antique illustrations:  http://www.fromoldbooks.org
<http://www.fromoldbooks.org/>
>>
>>
>>
>> XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
>> EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/2837134> (by
email <applewebdata://6D466B86-AE20-4712-9D20-19DD634C166F>)
> 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.