Re: Xpath query of XPathResult?

"hairbo" <[email protected]> 2 Jun 2006 09:43:21 -0700
Newsgroups gmane.comp.mozilla.devel.xml
Organization http://groups.google.com
Message-ID <[email protected]>
Hi Axel,

Thanks for the response.  I think I sort of get what you're suggesting,
but what if the results XML looks like this:

<results>
   <firstname>John</firstname>
   <lastname>Doe</lastname>
</results>

You see the difference here between this example and my previous one,
right?  There's no containing "<person>" element, only two sibling
nodes.  In that case if I iterate over the XpathResult, as you suggest,
I'll get each sibling one at a time, rather than both together.  So, in
this case, is what I want to do more or less impossible, or do I need
to build a new XMLDocument on the fly somehow?

Thanks again,
Ben



Axel Hecht wrote:
> hairbo wrote:
> > Not sure if this is the best place for this question, so apologies if
> > it is not.
> >
> > I would like to be able to run an Xpath query on the results returned
> > by the XPathResult "evaluate" function.  I have a shell of XML, like
> > this:
> >
> > <results>arbitrary results here</results>
> >
> > ...where the "arbitrary results" could be a string, or more XML, such
> > as:
> >
> > <results>
> >  <person>
> >   <firstname>John</firstname>
> >   <lastname>Doe</lastname>
> >  </person>
> > </results>
> >
> > If I run an Xpath query to get the contents of the "results" node, I
> > cannot then run another xpath query against those results.
> >
> > I suppose the question is this:  is there any way to "reset" the
> > returned value of "results" from an "XpathResult" back to an
> > "XmlDocument", or something like it?
> >
> > The MSXML parser seems to have no difficulty running an xpath query on
> > a returned nodeset, so I'm struggling to see why this appears to be so
> > difficult in Mozilla's implementation.  However, I'm fairly new to this
> > code, so perhaps I'm missing some basic principle here.
> >
> > Any help would be appreciated.
> >
>
> I don't see why you shouldn't be able to do that, other than that we
> don't take an XpathResult as argument to evaluate, but only dom nodes.
> So you had to make that extra step and iterate over the result, get the
> node, and then evaluate with that.
>
> Not sweet, but works.
>
> E4X allows you do to the thing you want directly, btw, but of course,
> that's gecko only for now.
> 
> Axel