Hi,

As Aron already pointed out, the position() should be of
help. You need to select the descendant-or-self or descendant
axis.
Your expression could look like this:
"//[EMAIL PROTECTED]'2' and parent::instances/parent::[EMAIL PROTECTED]'1']][1]"

But a test revealed that this is not optimized in Libxml2.
Although there's the function xmlXPathNodeCollectAndTestNth(), which
is designed to optimize a "position()" predicate, this function is
also designed to be fired only if there's no previous predicate;
so //instance[1] would be optimized, but not //instance[some
expression][1].

I'll try to look into this.

Regards,

Kasimier

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On 
> Behalf Of Aron Stansvik
> Sent: Thursday, June 01, 2006 4:19 PM
> To: [email protected]
> Subject: Re: [xml] XPath / LibXML question
> 
> On 6/1/06, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
> >
> >
> > Hi,
> >
> > I have a question about XPath and have been pointed in the 
> direction of
> > this mailing list. Hope this is the correct place.
> >
> > I have the following XPath:
> >
> > /base/group/[EMAIL PROTECTED]/instances/[EMAIL PROTECTED]
> >
> > and when used on my XML document it returns multiple items, e.g.
> >
> > /base[1]/group[1]/item[167]/instances[1]/instance[1] - result
> > /base[1]/group[1]/item[195]/instances[1]/instance[1] - result
> > /base[1]/group[1]/item[197]/instances[1]/instance[1] - result
> > /base[1]/group[1]/item[202]/instances[1]/instance[1] - result
> > /base[1]/group[1]/item[216]/instances[1]/instance[1] - result
> >
> > In this particular instance however, I only need to find one of the
> > results, and it doesn't matter which one.
> > For CPU efficiency I would like to find a way to do that.
> > Does anyone know how I can achieve this, ideally by  
> modifying my XPath,
> > but if that is not possible, if there are parameters, or 
> context set up
> > that could be done within LibXML to restrict it to one result.
> 
> You could use a predicate such as [position() = 1] to get the first
> result. I don't know if this saves you anything performance-wise
> though, one of the libxml2 hackers will have to answer that.

[...]
_______________________________________________
xml mailing list, project page  http://xmlsoft.org/
[email protected]
http://mail.gnome.org/mailman/listinfo/xml

Reply via email to