Subject: Re: 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.
Cheers,
Dimitre Novatchev.
> It should also help to convince
> Mukul that he's taken on a more difficult problem than he realised.
>
> Michael Kay
> http://www.saxonica.com/
|