RE: [xsl] Defining a key on a RTF inside a Template

Subject: RE: [xsl] Defining a key on a RTF inside a Template
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Wed, 8 Dec 2004 10:15:20 -0000
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 

Current Thread