Re: [xsl] Testing 2 XML documents for equality - a solution

Subject: Re: [xsl] Testing 2 XML documents for equality - a solution
From: Dimitre Novatchev <dnovatchev@xxxxxxxxx>
Date: Fri, 1 Apr 2005 14:14:17 +1000
On Mar 31, 2005 10:25 PM, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> > Whenever one defines "equality", this means a symmetric, reflexive and
> > transitive relation on the set of X^2 of pairs of values from a set X.
> Which reminds me (thank you) that the definition of deep-equal() in F+O
> still has a bug, in that it is not transitive. Specifically, it states that
> two elements are equal if (among other things)
> <quote>
> One of the following conditions holds:
>    * Both element nodes have a type annotation that is either a simple type
> or a complex type with simple content, and the typed value of $i1 is
> deep-equal to the typed value of $i2.
>    * One or both of the element nodes has a type annotation that is neither
> a simple type nor a complex type with simple content, and the sequence
> $i1/(*|text()) is deep-equal to the sequence $i2/(*|text()).
> </quote>
> This means that if you have three elements:
> 1.  <e>1.0</e>    of type xs:decimal
> 2.  <e>1</e>      of type xs:integer
> 3.  <e>1</e>      of type xs:anyType
> Then 1=2, 2=3, and 1!=3.
> Perhaps the fact that we still haven't got this function right will convince
> people finally to ditch it from the spec.

This is like saying that for the following three objects:

1. Red cube

2. Red pyramid

3. Green pyramid

the following "equalities" (defined as "has the same shape or has the
same colour") are true:

  1 = 2, 2 = 3, and 1 != 3

This is due to the fact that the superposition of two equivalence
relations results in a set of subsets, which are not mutually
exclusive (have intersection) in general.

Yes, such "equality" is not too useful and in fact is misleading.

Dimitre Novatchev.

>  It should also help to convince
> Mukul that he's taken on a more difficult problem than he realised.
> Michael Kay

Current Thread