Re: Testing 2 XML documents for equality - a solution
<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 ________________________________________________________________________
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format