Subject: RE: [xsl] passing param using value-of From: Geert Josten <geert.josten@xxxxxxxx> Date: Fri, 17 Feb 2012 17:49:49 +0100 |
Funny, you are all assuming the OP is using XSLT 2.0.. :-) > -----Oorspronkelijk bericht----- > Van: Wendell Piez [mailto:wapiez@xxxxxxxxxxxxxxxx] > Verzonden: vrijdag 17 februari 2012 17:32 > Aan: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > Onderwerp: Re: [xsl] passing param using value-of > > Hi again, > > On 2/16/2012 6:03 PM, Andrew Welch wrote: > >>> This works fine. > >>> > >>> <xsl:call-template name="myTemplate"> > >>> <xsl:with-param name="arguments" select="preceding-sibling::*"> > >>> </xsl:with-param> > >>> </xsl:call-template> > >>> > >>> But this doesn't: > >>> > >>> <xsl:call-template name="myTemplate"> > >>> <xsl:with-param name="arguments"> > >>> <xsl:value-of select="preceding-sibling::*" /> > >>> </xsl:with-param> > >>> </xsl:call-template> > >>> > >>> Why ? How do I use value-of to set the value of a parameter ? > >> > >> xsl:value-of generates a (single) text node. Depending on the parameter, > >> that may be okay (or maybe not), even if the cases when a text node is good > >> but a simple string is not even better are fairly rare. > > > > Don't forget in the 2nd option that it's a text node child of a > > document node, whereas in the first option (using select) it's > > sequence type is element()* (i think) > > Indeed. To spell this out: > > <xsl:with-param name="arguments" select="preceding-sibling::*"/> > > binds to $arguments a sequence of nodes, namely the preceding sibling > elements. > > <xsl:with-param name="arguments"> > <xsl:value-of select="preceding-sibling::*" /> > </xsl:with-param> > > binds to $arguments a temporary tree with a single text node, whose > value is determined by evaluating "preceding-sibling::*". > > Probably you want the first of these, not the second. But even if you > wanted a string, not a sequence of nodes, you could specify that more > directly and more efficiently by operating directly on the preceding > siblings (with a function that returns a string) instead of by using > xsl:value-of. > > Cheers, > Wendell > > -- > ================================================================= > ===== > Wendell Piez mailto:wapiez@xxxxxxxxxxxxxxxx > Mulberry Technologies, Inc. http://www.mulberrytech.com > 17 West Jefferson Street Direct Phone: 301/315-9635 > Suite 207 Phone: 301/315-9631 > Rockville, MD 20850 Fax: 301/315-8285 > ---------------------------------------------------------------------- > Mulberry Technologies: A Consultancy Specializing in SGML and XML > ================================================================= > =====
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] passing param using value, Wendell Piez | Thread | Re: [xsl] passing param using value, David Carlisle |
Re: [xsl] passing param using value, Wendell Piez | Date | Re: [xsl] passing param using value, David Carlisle |
Month |