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

Subject: RE: [xsl] Testing 2 XML documents for equality - a solution
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 31 Mar 2005 13:25:11 +0100
> 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. 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/

Current Thread