Subject: Re: [xsl] top level params and xsl:attribute magic? From: Dimitre Novatchev <dnovatchev@xxxxxxxxx> Date: Fri, 17 Jan 2003 23:34:56 -0800 (PST) |
Another way to completely avoid both having to use xx:evaluate() or an external API: Instead of using the XPath expression to a node as its unique id, use the pair: (count(ancestor::node()), count(preceding::node()) ) This means that you will be passing as parameter a pair of numbers, e.g.: 3,15 Then you can get these two numbers in two variables and find your node with the following XPath expression: //node()[count(ancestor::node()) = $v1 and count(preceding::node()) = $v2 ] Or you could define a key, so that the node(s) will be found faster. ===== Cheers, Dimitre Novatchev. http://fxsl.sourceforge.net/ -- the home of FXSL --- Dimitre Novatchev <dnovatchev@xxxxxxxxx> wrote: > First, I would stroongly recommend *not* to use any xx:evaluate > function. > > As anyway you are passing the XPath expression through a global > xsl:param (which is done outside of XSLT processing, using some kind > of > API), it would be much better to set the value of the "select" > attribute of this particular xsl:param (again through the API (most > probably XML DOM)) to the string/XPath-expression. > > This is both simple and efficient, it completely eliminates your > current problem. > > > Compare to this (which doesn't work): (2) > > <xsl:param name="StartNode"> > > <xsl:attribute name="select"> > > <xsl:value-of select="dyn:evaluate($StartPointStr)"/> > > </xsl:attribute> > > </xsl:param> > > > > (1) works and (2) doesn't work. > > In the snippet above you're specifying the value of the "select" > attribute to the *string* value of the *first* node in the node-set > returned by dyn:eveluate(). > > This, of course, is completely different to setting the "select" > attribute to the node-set. > > Once again, the best way in your situation is to forget about > extension > functions and to set the "select" attribute totally from outside and > just before the start of the transformation. > > This is the way the XPath Visualiser (both for IE and Mozilla) works > -- > do have a look at its code. > > > ===== > Cheers, > > Dimitre Novatchev. > http://fxsl.sourceforge.net/ -- the home of FXSL > > > > "S Woodside" <sbwoodside@xxxxxxxxx> wrote in message > news:F2CC80BE-2AA0-11D7-8385-000393414368@xxxxxxxxxxxx > > I'm beginning to think that XSLT is a bit like magic. If you think > the > > right way, and use the right magic incantation, it works like a > charm. > > If you don't, no cigar. > > > > I have this top-level param to grab a param from http: > > <xsl:param name="StartPointStr">.</xsl:param> > > > > The param StartPointStr is an Xpath string. Next I have this (which > > > works) (1) > > <xsl:param name="StartNode" > select="dyn:evaluate($StartPointStr)"/> > > > > Compare to this (which doesn't work): (2) > > <xsl:param name="StartNode"> > > <xsl:attribute name="select"> > > <xsl:value-of select="dyn:evaluate($StartPointStr)"/> > > </xsl:attribute> > > </xsl:param> > > > > (1) works and (2) doesn't work. With two, I get nothing, empty node > > > set. They should be equivalent! > > > > OK, wait, I see in the spec "The xsl:attribute element can be used > to > > > add attributes to result elements" ... so this must be an illegal > use > > > of xsl:attribute. But LibXSLT doesn't complain ... maybe this is > just > a > > case of inadequate error detection and reporting the in the > > implementation (I used to see that very often in C++ compilers...) > > > > simon > > > > --- > > www.simonwoodside.com > > > > > > XSL-List info and archive: > http://www.mulberrytech.com/xsl/xsl-list > > > > __________________________________________________ > Do you Yahoo!? > Yahoo! Mail Plus - Powerful. Affordable. Sign up now. > http://mailplus.yahoo.com > __________________________________________________ Do you Yahoo!? Yahoo! Mail Plus - Powerful. Affordable. Sign up now. http://mailplus.yahoo.com XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] top level params and xsl:, S Woodside | Thread | Re: [xsl] top level params and xsl:, S Woodside |
Re: [xsl] top level params and xsl:, Mike Brown | Date | RE: [xsl] top level params and xsl:, Roger Glover |
Month |