Re: [xsl] Keys (easy one) match on name()

Subject: Re: [xsl] Keys (easy one) match on name()
From: Karl Stubsjoen <kstubs@xxxxxxxxx>
Date: Wed, 1 Jun 2005 06:26:09 -0700
Maybe that is where I have gone wrong, I assumed that the key
definition is context aware.  So to write the select expression as I
have as "field" would suffice in the case that my context is record;
the immediate context from record is field.
I have written keys, and use them quite a bit, but this one's twist is
the fact that I am driving off on the name attribute.

> key_fld of 'NeedCode'. Your expression that uses the predicate directly
only
> selects the field elements that are children of the context node. Without

So, If the current context is "record", where "record" has a bunch of
"field"(s) for child elements, shouldn't this key lookup work?
<xsl:key name="key_fld" match="field" use="@name"/>


On 6/1/05, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> Using key() returns all the field elements in the document that have a
> key_fld of 'NeedCode'. Your expression that uses the predicate directly
only
> selects the field elements that are children of the context node. Without
> knowing what the context node (or anything else in your source document)
> looks like, one can't be sure that's the problem, but it seems likely.
>
> Michael Kay
> http://www.saxonica.com/
>
> > -----Original Message-----
> > From: Karl Stubsjoen [mailto:kstubs@xxxxxxxxx]
> > Sent: 01 June 2005 06:05
> > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> > Subject: Re: [xsl] Keys (easy one) match on name()
> >
> > I have this key:
> >     <xsl:key name="key_fld" match="field" use="@fieldname"/>
> >
> >
> > I set this variable:
> > <xsl:variable name="current_need" select="key('key_fld','NeedCode')"/>
> >
> > I get:
> > HI
> >
> > Without the key, I get the correct value of:
> > MD
> >
> > Here is the definition without the key:
> > <xsl:variable name="current_need"
> > select="field[@fieldname='NeedCode']"/>
> >
> > What am I doing wrong?
> >
> >
> > On 5/31/05, Mukul Gandhi <mukul_gandhi@xxxxxxxxx> wrote:
> > > Would it be -
> > >
> > > <xsl:key name="key_fld" match="field" use="@name"/>
> > >
> > > Regards,
> > > Mukul
> > >
> > > --- Karl Stubsjoen <kstubs@xxxxxxxxx> wrote:
> > > > I have a bunch of <field/> elements who all contain
> > > > the attribute
> > > > name.  How do I set up a key to return the field
> > > > element passing given
> > > > name?
> > > >
> > > > I've tried this, but doesn't seem to work:
> > > >
> > > >     <xsl:key name="key_fld" match="field"
> > > > use="name()"/>
> > > >
> > > > I've also tried:
> > > >
> > > >     <xsl:key name="key_fld" match="field"
> > > > use="@*[name()]>
> > > >
> > > > Thanks for the help.
> > > >
> > > >
> > >
> > > __________________________________________________
> > > Do You Yahoo!?
> > > Tired of spam?  Yahoo! Mail has the best spam protection around
> > > http://mail.yahoo.com

Current Thread