Comparing xml

this is a rough start

care to improve?

kind regards.

a @ http://codeforpeople.com/

···

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

ara.t.howard wrote:

this is a rough start

83721’s gists · GitHub

care to improve?

Use LibXML-Ruby, Nokogiri, or REXML, read both documents, and convert them to DOMs.

Recursively compare each node, and all its children, to the matching node in the other document, and fault if anythings out of tolerance.

err - that is precisely what that code is doing?

a @ http://codeforpeople.com/

···

On Mar 23, 2009, at 1:22 PM, Phlip wrote:

ara.t.howard wrote:

this is a rough start
83721’s gists · GitHub
care to improve?

Use LibXML-Ruby, Nokogiri, or REXML, read both documents, and convert them to DOMs.

Recursively compare each node, and all its children, to the matching node in the other document, and fault if anythings out of tolerance.

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

ara.t.howard wrote:

Recursively compare each node, and all its children, to the matching node in the other document, and fault if anythings out of tolerance.

err - that is precisely what that code is doing?

I should have explored that. Isn't the code simply printing out both XMLs, with consistent blanks and indenting, and then comparing their strings for pure equality?

If so, would that break over details like attributes out of order?

I should have explored that. Isn't the code simply printing out both XMLs, with consistent blanks and indenting, and then comparing their strings for pure equality?

it *is* comparing strings, but strings built up inside rexml using the approach you outlined.

If so, would that break over details like attributes out of order?

ah - good catch - i'll check on that. my alternate approach, comparing xmlsimple data structures will not, i believe, suffer from that, but i wanted to avoid a dependancy.

i'll check and report back

cheers.

a @ http://codeforpeople.com/

···

On Mar 23, 2009, at 3:42 PM, Phlip wrote:
--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

If so, would that break over details like attributes out of order?

ah - good catch - i'll check on that. my alternate approach, comparing xmlsimple data structures will not, i believe, suffer from that, but i wanted to avoid a dependancy.

I caught it because I just recently solved a subset of your problem. assert_xhtml uses Nokogiri to match a subset of HTML within a page. The code is too weird for you to use, but I indeed had to defeat all the issues you will encounter!

next version is up

   83721’s gists · GitHub

a @ http://codeforpeople.com/

···

On Mar 23, 2009, at 5:07 PM, Phlip wrote:

I caught it because I just recently solved a subset of your problem. assert_xhtml uses Nokogiri to match a subset of HTML within a page. The code is too weird for you to use, but I indeed had to defeat all the issues you will encounter!

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

ara.t.howard wrote:

···

On Mar 23, 2009, at 5:07 PM, Phlip wrote:

I caught it because I just recently solved a subset of your problem. assert_xhtml uses Nokogiri to match a subset of HTML within a page. The code is too weird for you to use, but I indeed had to defeat all the issues you will encounter!

next version is up

   83721’s gists · GitHub

2kewt. Now you are using XmlSimple.==, so it will walk the object model for you, recursively. It takes care of the attribute order issue, and you then only need to tell XmlSimple to normalize blanks.

What about excess spaces in attributes? And what about class='foo bar' matching class='bar foo'? (Feel free to ignore them!..)

latest version handles the first and i'm ok with the later. feeling like this is reasonably complete now. crazy none of the ruby xml libs offer a good doc==other.

cheers.

a @ http://codeforpeople.com/

···

On Mar 23, 2009, at 6:26 PM, Phlip wrote:

What about excess spaces in attributes? And what about class='foo bar' matching class='bar foo'? (Feel free to ignore them!..)

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama

ara.t.howard wrote:

latest version handles the first and i'm ok with the later. feeling like this is reasonably complete now. crazy none of the ruby xml libs offer a good doc==other.

That is _supposed_ to be XSLT's space. Don't hold your breath. I'm beginning to suspect XSLT just might be a mission-statement without a company for it to guide! (-:

that is the one with 'bacon' isn't it?

a @ http://codeforpeople.com/

···

On Mar 23, 2009, at 8:26 PM, Phlip wrote:

That is _supposed_ to be XSLT's space. Don't hold your breath. I'm beginning to suspect XSLT just might be a mission-statement without a company for it to guide! (-:

--
we can deny everything, except that we have the possibility of being better. simply reflect on that.
h.h. the 14th dalai lama