Subject: RE: [xsl] Defining a key on a RTF inside a Template From: Mukul Gandhi <mukul_gandhi@xxxxxxxxx> Date: Wed, 8 Dec 2004 04:19:13 -0800 (PST) |
Sorry for writing while Mike is explaining.. I have found the following technique to work: 1) Define xsl:key as a direct child of xsl:stylesheet, like this.. <xsl:key name="countDetail" match="temp/projectsum" use="@id"/> 2) Create RTF like this.. <xsl:variable name="projectSum"> <temp> <xsl:for-each select="//project"> <!-- other code --> </xsl:for-each> </temp> </xsl:variable> Please note the use of extra tag <temp>. This name I have used in the <xsl:key definition.. It is this use of a temporary tag(temp), which makes the scope of xsl:key the RTF.. 3) Now use key() function.. key('countDetail','id-value') .. The id-value can be hardcoded or can come from the context.. Regards, Mukul --- "Ranjan K. Baisak" <ranjanbaisak@xxxxxxxxx> wrote: > Michael, > I am afraid if I understood your suggestion > correctly. > My key is associated with RTF "projectSum". The I am > wodering how I can use "projectSum" RTF in my key. > "projectsum" is a node in "projectSum" RTF variable. > > regards, > Ranjan > --- Michael Kay <mike@xxxxxxxxxxxx> wrote: > > > The value of the match attribute must be a valid > > pattern > > > > match="exslt:node-set($projectSum)/projectsum" > > > > should simply be > > > > match="projectsum" > > > > The xsl:key declaration doesn't define which > > document the key is referring > > to; that's decided at the time you use the key() > > function. > > > > Michael Kay > > http://www.saxonica.com/ > > > > > -----Original Message----- > > > From: Ranjan K. Baisak > > [mailto:ranjanbaisak@xxxxxxxxx] > > > Sent: 08 December 2004 09:05 > > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > > Subject: RE: [xsl] Defining a key on a RTF > inside > > a Template > > > > > > I am quite agree with Michael because my key > > depends > > > upon an RTF. So I can take that RTF is the > context > > > node for declaring key. > > > > > > In either case, I am getting error during > > processing. > > > In XALAN : "Incorrect place of defining key" > > > In SAXON 8.1.1: XPath syntax error at char 0 in > > > {exslt:node-set($}:; The only functions > > allowed in > > > a pattern are id() and key() > > > > > > I too tried to declare the key at the top of my > > > stylesheet but it still throw error. > > > > > > > > > regards, > > > Ranjan > > > > > > --- Michael Kay <mike@xxxxxxxxxxxx> wrote: > > > > > > > > According to XSLT 1.0 specificatoion ( > > > > > http://www.w3.org/TR/1999/REC-xslt-19991116 > ), > > > > xsl:key is a > > > > > top-level element. Therefore you cannot > place > > it > > > > outside a > > > > > xsl:stylesheet/xsl:transform . > > > > > The easiest solution: do not use keys. > > > > > > > > No, it's perfectly OK to use keys to search > > within > > > > an RTF. > > > > > > > > Michael Kay > > > > http://www.saxonica.com/ > > > > > > > > > > > > > > --- "Ranjan K. Baisak" > > <ranjanbaisak@xxxxxxxxx> > > > > wrote: > > > > > > > > > > > I am creating a key inside a template > with > > RTF > > > > as > > > > > > below: > > > > > > <xsl:variable name="projectSum"> > > > > > > <xsl:for-each select="//project"> > > > > > > <xsl:variable name="projectname" > > > > select="./@name"/> > > > > > > <xsl:variable name="projectid" > > select="@id"/> > > > > > > <xsl:variable name="projectref" > > > > > > select="projectelement/@ref"/> > > > > > > <xsl:copy> > > > > > > <xsl:copy-of select="./@name"/> > > > > > > <xsl:copy-of select="./@id"/> > > > > > > <projectsum> > > > > > > <xsl:copy-of > > > > > > > > > > > > > > > > select="count(key('ProjectPartNumber',$projectref))"/> > > > > > > </projectsum> > > > > > > </xsl:copy> > > > > > > </xsl:for-each> > > > > > > </xsl:variable> > > > > > > > > > > > > <xsl:key name="countDetail" > > > > > > > > match="exslt:node-set($projectSum)/projectsum" > > > > > > use="./@id"/> > > > > > > > > > > > > In XALAN it throws error with message > > "Incorrect > > > > place > > > > > > of defining Key". > > > > > > I am not sure whether it is possible to > > create a > > > > key > > > > > > with RTF within a template? > > > > > > If not possible, is there any otherway to > > achive > > > > the > > > > > > same functionality? > > > > > > > > > > > > regards, > > > > > > Ranjan > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > __________________________________ > > > > > > Do you Yahoo!? > > > > > > Yahoo! Mail - now with 250MB free storage. > > Learn > > > > more. > > > > > > http://info.mail.yahoo.com/mail_250 > > > > > > > > > > > > > > > > > > > > > > > > > > > ===== > > > > > Marian > > > > > http://www.utdallas.edu/~mgo031000/ > > > > > > > > > > > > > > > > > > > > __________________________________ > > > > > Do you Yahoo!? > > > > > Yahoo! Mail - Find what you need with new > > enhanced > > > > search. > > > > > http://info.mail.yahoo.com/mail_250 > > > > > > > > > > > > > > > > > > __________________________________________________ > > > Do You Yahoo!? > > > Tired of spam? Yahoo! Mail has the best spam > > protection around > > > http://mail.yahoo.com > > > > > > === message truncated === > > > > > __________________________________ > Do you Yahoo!? > The all-new My Yahoo! - Get yours free! > http://my.yahoo.com > > __________________________________ Do you Yahoo!? Check out the new Yahoo! Front Page. www.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Defining a key on a RTF i, Ranjan K. Baisak | Thread | Re: [xsl] Defining a key on a RTF i, David Carlisle |
Re: [xsl] Same XPath expression wit, xptm | Date | RE: [xsl] Defining a key on a RTF i, Ranjan K. Baisak |
Month |