From: Eric Armstrong Date: 2006-08-02T10:00:54+09:00 Subject: REXML XPath: bug or misunderstanding? This code looks for a table that matches specific criteria: XPath.each(@doc, '//table') do |tbl| XPath.each(tbl, '//td') do |td| # look for matching data According to the XPath doc, the first argument is the "context" element. So what /should/ happen is that search for td elements occurs in the subtree rooted at the tbl element, using the //td path --which I take to mean "anywhere within the context". But what actually happens is that the search for td elements occurs in the entire document, so the code above returns the first table, regardless of where the matching data is found. The workaround is to dispense with the outer loop. Once matching data is found and keep visiting parents until the table ancestor is found. (That patch simplifies the code, actually.) But if this implementation isn't a bug, it means that the definition of "context" is "the entire tree in which the specified node is found". In that case, the XPath expression that asks for "all elements under the current node" must be something other than what I coded... What might that path be, I wonder?