From: Casimir Date: 2008-05-17T18:40:14+09:00 Subject: Re: REXML XPath bug? On Wed, 14 May 2008 15:00:47 -0500, Andy Watts wrote: > I'm having trouble with a particular XPATH in REXML and would greatly > appreciate any help. (rest of it quoted below) Ok, I tested this with JEdits XPATH tool and indeed, the xpath "//div [@class='summary']/following-sibling::div" returns the span-element with string-value yyy, xml fragment yyy. Is it a bug? I must admit I would need to read more references etc before being able to say definately - or is it just different interpretation of the following-sibling -axis. Dont have the time to see the rfc atm. But I played around a bit: irb(main):046:0> puts root.elements["//div[@class='summary']/following- sibling::div/span"] nil * So, it doesnt work like that. irb(main):047:0> puts root.elements["//div[@class='summary']/following- sibling::div"]
yyy
* hmm.... irb(main):049:0> puts root.elements["//div[@class='summary']/ following::div/span"] yyy ** Would this work in your case? ALSO - you could include the rexml namespace by adding the line include REXML after the rexml requires. This way you wont have to use the long ::- syntax, but can refer to document or elements directly, and use xpaths simply as above inside [""]. I also played around with this http://www.zvon.org:9001/saxon/cgi-bin/ XLab/XML/xpatut_15.html and following seems to accomplish what you need. Finally, just plain-jane /div/span would select the span but maybe there can be many and you only want the one after the summary div. Out of time, gtg Casimir Pohjanraito > Given this simple document.. > >
xxx
>
> yyy >
> > > The xpath "//div[@class='summary']/following-sibling::div/span" is > failing to return 'yyy'. > > > Here's a console dump that also shows a simplier xpath working. > >>> REXML::XPath.match(doc, >>> "//div[@class='summary']/following-sibling::div/span").to_s > => "" >>> REXML::XPath.match(doc, >>> "//div[@class='summary']/following-sibling::div").to_s > => "
\nyyy\n
" >>> puts doc.to_s > >
xxx
>
> yyy >
> > > The xpath works fine in firefox's xpath checker, so it seems like an > issue with rexml. > Any help greatly appreciated. > > - Andy