Implementation of xpath in ruby?

Dear Friends,

i need to implement xpath in my parser class. I have implemented a new
parser which parses xml document. I have used token types to parse xml
like,

  while parser.next

         if parser.token_type == tag_start
            parser.tag
         end

         if parser.token_type == tag_end
            parser.tag_end
         end
    end

so a token_type method returns token types like tag_start, tag_end,
comment, pi etc and tag method returns the tag start and tag_end method
returns the tag end of an xml document.

now i need to implement xpath in my parser class. I need to navigate the
xml document using xpath like,

   while parser.next!

  parser.path( 'book/book-name' ) do

  end

    end

could anyone help me with some solution to implement xpath in my parser
class.I don't want to use REXML or HPRICOT. i want to create my own
methods which does the above.

Thanks in advance

Regards,
Martin

···

--
Posted via http://www.ruby-forum.com/.

I'm not sure about your interface, anyway:
You probably need to keep info about the current path from the root
(stack is usually handy for this), and
have an xpath parser that says yes/no for an xpath expression and current path.
then you yield the current node.

···

On Thu, May 22, 2008 at 1:08 PM, dare ruby <martin@angleritech.com> wrote:

Dear Friends,

i need to implement xpath in my parser class. I have implemented a new
parser which parses xml document. I have used token types to parse xml
like,

while parser.next

        if parser.token_type == tag_start
           parser.tag
        end

        if parser.token_type == tag_end
           parser.tag_end
        end
   end

so a token_type method returns token types like tag_start, tag_end,
comment, pi etc and tag method returns the tag start and tag_end method
returns the tag end of an xml document.

now i need to implement xpath in my parser class. I need to navigate the
xml document using xpath like,

  while parser.next!

parser.path( 'book/book-name' ) do

end

   end

could anyone help me with some solution to implement xpath in my parser
class.I don't want to use REXML or HPRICOT. i want to create my own
methods which does the above.

Why are you intentionally reinventing the wheel? Is it because you
want a stream parser (like SAX) rather than building a DOM?
Unfortunately, XPath requires building a DOM. Is it that you need it
to be fast? A fast implementation of XPath is in libxml. Perhaps you
can try the ruby binding to libxml. It's a work in progress but I have
used it successfully to parse XML (and it's lightning-fast).

Mark Thomas wrote:

Why are you intentionally reinventing the wheel?

Learning exercise, for example.

- --
Phillip Gawlowski
Twitter: twitter.com/cynicalryan
Blog: http://justarubyist.blogspot.com

~ The dame was hysterical. Dames Usually are. -- Calvin as Tracer Bullet