W3C home > Mailing lists > Public > xmlschema-dev@w3.org > November 2007

RE: Check two elements are not deep equal

From: Michael Kay <mike@saxonica.com>
Date: Wed, 28 Nov 2007 12:40:59 -0000
To: "'Andrew Welch'" <andrew.j.welch@gmail.com>, <xmlschema-dev@w3.org>
Message-ID: <010701c831bb$eeb1e360$9a32320a@turtle>

In 1.1 - as implemented by Saxon 9.0 - you can do

<xs:assert test="not(deep-equal(old, new))"/>

But if it's as simple as this I think you can also do it in 1.0:

* define that both old and new exist in the usual way

* define at the update level

<xs:unique>
  <xs:selector xpath="*"/>
  <xs:field xpath="data1"/>
  <xs:field xpath="data2"/>
</xs:unique>

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Andrew Welch
> Sent: 28 November 2007 10:57
> To: xmlschema-dev@w3.org
> Subject: Check two elements are not deep equal
> 
> 
> Is it possible in XML Schema 1.0 to ensure two elements are 
> not deep equal - the equivalent of this XPath:
> 
> //update[not(deep-equal(old/*, new/*))]
> 
> for this structure:
> 
> <update>
>   <old>
>     <data1>some value</data1>
>     <data2>some other value</data2>
>   </old>
>   <new>
>     <data1>some value</data1>
>     <data2>some other value</data2>
>   </new>
> </update>
> 
> The <update> element should contain an <old> and a <new> with 
> at least one value different in the <new>... so in the 
> example the test should fail as the contents of both are the same.
> 
> 
> thanks
> andrew
> 
Received on Wednesday, 28 November 2007 12:41:18 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Tuesday, 11 January 2011 00:15:01 GMT