From: Farrel Lifson Date: 2006-03-08T19:50:21+09:00 Subject: Re: [newbie] REXML, each_element and XPath It seems that when xpathing with an attribute @doc.each_element returns an array containting the attributes: irb(main):009:0> @doc = REXML::Document.new(< irb(main):011:1" EOF irb(main):012:1> ) irb(main):016:0> @doc.each_element("doc/element/@attribute") => [attribute='value', attribute='value'] Not sure if this is a bug. I'm using the version of REXML that comes with 1.8.2 on Windows. Farrel On 3/8/06, Thibaut Barr�re wrote: > Hi! > > while playing with REXML I try to use each_element with an x-path > expression involving an attribute (doc/element/@attribute) but can't > get it to work this way (it works perfectly fine with both XPath.each > and each_element applied on doc/element without @attribute). > > here's my test suite to illustrate this, is there some obvious mistake > that I cannot see ? I've read in older posts that each_element did not > recurse, would it be the explanation ? > > any insight most welcome! > > kind regards > > Thibaut > > ============ > > require "test/unit" > require "rexml/document" > include REXML > > class XmlTests < Test::Unit::TestCase > > # fail > def test_each_element_with_attribute > count = 0 > @doc.each_element("doc/element/@attribute") { |n| count = count+1 } > assert_equal 1,count > end > > # pass > def test_each_element_without_attribute > count = 0 > @doc.each_element("doc/element") { |n| count = count+1 } > assert_equal 1,count > end > > # pass > def test_xpath > count = 0 > XPath.each(@doc,"doc/element/@attribute") { |n| count = count+1 } > assert_equal 1,count > end > > def setup > @doc = Document.new(< > > > EOF > ) > end > > end > > >