Subject: Re: [xsl] [xslt 2.0] Difference betwen functions and templates From: "Abel Braaksma (online)" <abel.online@xxxxxxxxx> Date: Thu, 19 Jul 2007 17:25:59 +0200 (CEST) |
>> <!-- output will then be --> >> mod:dog: Bark! I am a dog >> mod:cat: Meow! I am a cat > > Not quite - that should really be "mod:animal::say-name()" called > twice to be polymorphism - you're calling the "concrete" method > there rather than the abstract. Uhuh, bad example.... I should actually have a list of mod:animal which contains both cats and dogs. Then loop the list and call the fu:say-name() method. Then it would resemble the OO paradigm better. > > So why is this polymorphism? Because the common Animal.xslt will > use the $name variable depending on how the transform was > constructed. You call "sayName" in the Animal stylesheet and that > uses the $name variable in the Dog/Cat stylesheet. I see what you mean and yes, i agree on that it is a (basic form of) polymorphism. > > The Animal stylesheet is kind-of abstract in that it won't run on > it's own because it lacks a declaration for $name. > That is indeed the way I use it now, especially in browser based XSLT 1.0 (not sure why I encounter it less with XSLT 2.0 on the server side). To follow-up on your example using variables, i tend to use the following construction when I *do* use it with XSLT 2.0 (not avail. in 1.0). This raises an error when you fail to 'overload' the variable in your importing stylesheet: <!-- animal.xslt --> <xsl:param name="name" required="yes" /> at least you get an error if the dog.xslt or cat.xslt (i.e., the concrete 'classes' derived from this 'abstract' one) do not specify the $name parameter. Even better, I use a variable instead as a 'best practice', because the param should not be settable or visible from the outside (information hiding, haha): <!-- dog.xslt --> <xsl:variable name="name" select=" 'dog' " /> Cheers, -- Abel Braaksma
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] [xslt 2.0] Difference bet, Andrew Welch | Thread | Re: [xsl] [xslt 2.0] Difference bet, Justin Johansson |
RE: [xsl] PI for associating a samp, Michael Kay | Date | Re: [xsl] [xslt 2.0] Difference bet, Abel Braaksma (onlin |
Month |