[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
Re: [xml-dev] Schema based XML compare
- From: Mukul Gandhi <gandhi.mukul@gmail.com>
- To: David Lee <dlee@calldei.com>
- Date: Fri, 24 Dec 2010 10:29:06 +0530
Hi David,
I believe, Mike's idea to use XPath 2.x deep-equal function would
be useful if you consider true deep-equality (i.e same number of child
nodes, siblings etc at equivalent locations, in XML documents that
you're comparing) of XML trees as notion of XML documents equality.
It also seems that deep-equal function doesn't allow a configuration
to minus the effect of white-spaces in XML document equality. But I
believe, this concern has different repercussions on data oriented and
document oriented XML documents. It seems white-spaces would be
significant for document oriented XML but not for data oriented XML.
All of above is not to say that deep-equal method is not useful. It's
very useful for lots of use cases.
If your notion of XML documents equality is purely XML Schema aware
(the below schema example [1] is an example for this) (and not
strictly equivalent in XPath 2.x deep-equal sense) then you could
explore using something like the JAXP Schema validation API to derive
this equivalence.
[1]
For this particular schema fragment,
<xs:element name="x" type="xs:string" maxOccurs="unbounded" />
the element sequence
<x>hello</x>
would be schema equivalent to
<x>hello</x>
<x>hello</x>
<x>hello</x>
And I'm not sure if your use-case considers the above two XML
fragments equivalent given the above XML schema element declaration
[1].
On Thu, Dec 23, 2010 at 5:59 PM, David Lee <dlee@calldei.com> wrote:
> I've run into an age-old issue but I don’t see any off-the-shelf solutions
> for.
>
>
>
> Suppose I have 2 XML documents I want to compare (not diff, just give me
> yes/no are they equivalent).
>
> This is pretty simple to do even with things like ignoring whitespace
> options etc. Many tools out there, including one I wrote
>
> ( http://www.xmlsh.org/CommandXcmp)
>
>
>
> Now here's the twist …
>
>
>
> Suppose I want to compare for XSD data model equivalence, not XDM
> equivalence ?
>
>
>
> Example.
>
>
>
> <number>1.0</number>
>
> vs.
>
> <number>1</number>
>
>
>
> Without type annotation these are different.
> But if I declare the type for number to be xs:double
>
> they should compare equal.
>
>
>
> Thus a compare tool should be able to be given a schema and do a comparison
> and report that these 2 documents are equivalent at the XSD data model
> level.
>
>
>
> Has anyone seen anything like this ?
>
> Would anyone have a use for it ? (I may end up writing it for my own uses).
>
>
>
> Not sure how far one can take this before entering murky waters …
>
> Even in the numeric cases there are edge cases where comparisons are not
> well defined (rounding/precision issues on floating point numbers).
>
> Then add in things like date/times …
>
> But suppose I'm willing to avoid the murky edges and just stick to the
> obvious cases … shouldn’t be too hard right ?
> In fact I suspect its so obvious its been done but I can't find one
> anywhere.
>
>
>
> -David
>
>
>
>
> ----------------------------------------
>
> David A. Lee
>
> dlee@calldei.com
>
> http://www.xmlsh.org
--
Regards,
Mukul Gandhi
[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]