|
Subject: Re: [xsl] Testing 2 XML documents for equality - a solution From: David Carlisle <davidc@xxxxxxxxx> Date: Wed, 30 Mar 2005 21:51:19 +0100 |
<xsl:for-each select="$doc1//@*">
<xsl:sort select="name()" />
<xsl:value-of select="name()" />:<xsl:value-of
select="." />:<xsl:value-of select="name(..)"
/>:<xsl:value-of
select="count(../ancestor-or-self::node())" />
</xsl:for-each>
No. You can't use //@* for this at all.
You have to do normalise the attributes for each element separately, ie
inline the string from each attribute along with the string for each
element.
<x>
<y a="2"/>
<y/>
</x>
is equal to
<x>
<y/>
<y a="2"/>
</x>
by the above as you only reecord that the a attribute is on a level 2 y
element, you don't record which element it is on.
What is your definition of equality that you are trying to implement?
This definition (even if corrected) is not namespace aware so
<x:foo xmlns:x="a"/> would be different from <y:foo xmlns:y="a"/>
but equal to <x:foo xmlns:x="b"/>
so the definition of equality wouldn't be much use for any XPath use,
two "equal" inputs would behave diffently as input to a stylesheet.
David
________________________________________________________________________
This e-mail has been scanned for all viruses by Star. The
service is powered by MessageLabs. For more information on a proactive
anti-virus service working around the clock, around the globe, visit:
http://www.star.net.uk
________________________________________________________________________
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| Re: [xsl] Testing 2 XML documents f, Mukul Gandhi | Thread | RE: [xsl] Testing 2 XML documents f, Pieter Reint Siegers |
| Re: [xsl] node positioning problem, Spencer Tickner | Date | Re: [xsl] Possible to pass 'empty s, chris |
| Month |