Subject: [xsl] XSLT Comparison of Two Trees From: "Doug Franklin" <doug@xxxxxxxxxxxxxxxx> Date: Tue, 08 Sep 2009 10:44:00 -0700 |
I wish to compare two (xml tree) documents, a previous document and it's current version. The previous tree looks like this: (the current tree appears below this previous tree, the xsl - below that.) If I could A. Create a report of zip codes that were added B. Create a report of zip codes that were deleted C. Create a report of zip codes that were moved D. Find the percentage difference of the <Total>####</Total> information, using this algorithm: (currentTotal - previousTotal)/previousTotal That would be SPLENDID. Thanks, Doug <?xml version="1.0" encoding="UTF-8"?> <!-- <?xml-stylesheet href="Comparison.xsl" type="text/xsl" ?> --> <?xml-stylesheet href="Comparison.xsl" type="text/xsl" ?> <!-- <?xml-stylesheet href="Comparison2.xsl" type="text/xsl" ?> --> <pFieldOfficeList> <city name="All areas"> <zip zipCode="zipTotals"> <Total>49864838</Total> </zip> </city> <city name="Total, California"> <zip zipCode="zipTotals"> <Total>4571486</Total> </zip> </city> <city name="Alhambra"> <zip zipCode="zipTotals"> <Total>17145</Total> </zip> <zip zipCode="91775"> <Total>3160</Total> </zip> <zip zipCode="91776"> <Total>3540</Total> </zip> <zip zipCode="91778"> <Total>140</Total> </zip> <zip zipCode="91801"> <Total>5790</Total> </zip> </city> <city name="American River"> <zip zipCode="zipTotals"> <Total>79685</Total> </zip> <zip zipCode="95610"> <Total>5750</Total> </zip> <zip zipCode="95611"> <Total>335</Total> </zip> <zip zipCode="95621"> <Total>7135</Total> </zip> <zip zipCode="95628"> <Total>7325</Total> </zip> </city> <city name="Anaheim"> <zip zipCode="zipTotals"> <Total>53765</Total> </zip> <zip zipCode="90620"> <Total>5960</Total> </zip> <zip zipCode="90621"> <Total>2810</Total> </zip> <zip zipCode="90622"> <Total>105</Total> </zip> <zip zipCode="90623"> <Total>2320</Total> </zip> </city> <city name="Antioch"> <zip zipCode="zipTotals"> <Total>33190</Total> </zip> <zip zipCode="94505"> <Total>1575</Total> </zip> <zip zipCode="94509"> <Total>8235</Total> </zip> <zip zipCode="94511"> <Total>740</Total> </zip> <zip zipCode="94513"> <Total>6855</Total> </zip> </city> <city name="Auburn"> <zip zipCode="zipTotals"> <Total>41830</Total> </zip> <zip zipCode="95602"> <Total>4100</Total> </zip> <zip zipCode="95603"> <Total>5535</Total> </zip> <zip zipCode="95604"> <Total>775</Total> </zip> <zip zipCode="95631"> <Total>1295</Total> </zip> </city> <city name="Bakersfield"> <zip zipCode="zipTotals"> <Total>52885</Total> </zip> <zip zipCode="93205"> <Total>805</Total> </zip> <zip zipCode="93206"> <Total>200</Total> </zip> <zip zipCode="93222"> <Total>460</Total> </zip> <zip zipCode="93224"> <Total>95</Total> </zip> </city> <city name="Bakersfield, East Hills"> <zip zipCode="zipTotals"> <Total>28325</Total> </zip> <zip zipCode="93203"> <Total>1500</Total> </zip> <zip zipCode="93220"> <Total>70</Total> </zip> <zip zipCode="93241"> <Total>1510</Total> </zip> <zip zipCode="93305"> <Total>3475</Total> </zip> </city> </pFieldOfficeList> Tree of current information: <?xml version="1.0" encoding="UTF-8"?> <!-- <?xml-stylesheet href="Comparison.xsl" type="text/xsl" ?> --> <?xml-stylesheet href="Comparison.xsl" type="text/xsl" ?> <!-- <?xml-stylesheet href="Comparison2.xsl" type="text/xsl" ?> --> <cFieldOfficeList> <city name="All areas"> <zip zipCode="zipTotals"> <Total>49864838</Total> </zip> </city> <city name="Total, California"> <zip zipCode="zipTotals"> <Total>4571486</Total> </zip> </city> <city name="Alhambra"> <zip zipCode="zipTotals"> <Total>17145</Total> </zip> <zip zipCode="91775"> <Total>3160</Total> </zip> <zip zipCode="91776"> <Total>3540</Total> </zip> <zip zipCode="91778"> <Total>140</Total> </zip> <zip zipCode="91801"> <Total>5790</Total> </zip> <zip zipCode="11111"><!-- This zip code was added to Alhambra --> <Total>1000</Total> </zip> </city> <city name="American River"> <zip zipCode="zipTotals"> <Total>79685</Total> </zip> <zip zipCode="95611"> <Total>335</Total> </zip> <!-- <zip zipCode="95621"> <Total>7135</Total> </zip> --><!-- This zip code was deleted from American River --> </city> <city name="Anaheim"> <zip zipCode="95610"><!-- zip code was moved from American River to Anaheim --> <Total>5750</Total> </zip> <zip zipCode="zipTotals"> <Total>53765</Total> </zip> <zip zipCode="90620"> <Total>5960</Total> </zip> <zip zipCode="90621"> <Total>2810</Total> </zip> <zip zipCode="90622"> <Total>105</Total> </zip> <zip zipCode="90623"> <Total>2320</Total> </zip> </city> <city name="Antioch"> <zip zipCode="zipTotals"> <Total>33190</Total> </zip> <zip zipCode="22222"><!-- This zip code was added to Antioch --> <Total>5790</Total> </zip> <!-- <zip zipCode="94505"> <Total>1575</Total> </zip> --><!-- This zip code was deleted from Antioch --> <zip zipCode="94509"> <Total>8235</Total> </zip> <zip zipCode="94511"> <Total>740</Total> </zip> <zip zipCode="94513"> <Total>6855</Total> </zip> </city> <city name="Auburn"> <zip zipCode="zipTotals"> <Total>41830</Total> </zip> <zip zipCode="33333"><!-- This zip code was added to Auburn --> <Total>5790</Total> </zip> <zip zipCode="95628"><!-- This zip code was moved from American River to Auburn --> <Total>7325</Total> </zip> <zip zipCode="95602"> <Total>4100</Total> </zip> <zip zipCode="95603"> <Total>5535</Total> </zip> <zip zipCode="95604"> <Total>775</Total> </zip> <zip zipCode="95631"> <Total>1295</Total> </zip> </city> <city name="Bakersfield"><!-- Nothing happened to this zip code --> <zip zipCode="zipTotals"> <Total>52885</Total> </zip> <zip zipCode="93205"> <Total>805</Total> </zip> <zip zipCode="93206"> <Total>200</Total> </zip> <zip zipCode="93222"> <Total>460</Total> </zip> <zip zipCode="93224"> <Total>95</Total> </zip> </city> <city name="Bakersfield, East Hills"><!-- Nothing happened to this zip code --> <zip zipCode="zipTotals"> <Total>28325</Total> </zip> <zip zipCode="93203"> <Total>1500</Total> </zip> <zip zipCode="93220"> <Total>70</Total> </zip> <zip zipCode="93241"> <Total>1510</Total> </zip> <zip zipCode="93305"> <Total>3475</Total> </zip> </city> </cFieldOfficeList> XSL: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <body> <head> <title>City Evaluation</title> </head> <h3><font color="darkred">Cities</font></h3> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="/"> <!-- <xsl:template match="@*|node()"> --> <!-- <xsl:template match="*"> --> <!-- <xsl:for-each select="document('cMulberry.xml')/cMulberry/city/@name"> --> <!-- <xsl:if test="select=document('cMulberry.xml')/cMulberry/city/@name='Alhambra'"> --> <!-- <xsl:if test="position()=3"> <xsl:value-of select="."/><br/> </xsl:if> </xsl:for-each> --> <xsl:for-each select="pFieldOfficeList"> <html> <table border="1"> <xsl:for-each select="city"> <tr> <td width="100" align="center" bgcolor="goldenrod"> <xsl:value-of select="@name"/></td> <td align="center">I would like column headers here</td> <td align="center">I would like the cities from the cMulberry XML document here <xsl:for-each select="zip"> <tr> <td align="right"><font size="2"><xsl:value-of select="@zipCode"/></font></td> <td><xsl:call-template name="infoCell" /></td> </tr> </xsl:for-each> </td> </tr> </xsl:for-each> </table> </html> </xsl:for-each> </xsl:template> <!-- <xsl:apply-templates select="document('cMulberry.xml')/cMulberry/city/@name"/> This displays all new cities --> <xsl:template name="infoCell"> <table border="1" width="100%"><tr><td width="10%" align="right"><font size="2"><xsl:value-of select="Total"/></font></td> <td width="10%" align="right"><font size="2"><xsl:value-of select="Retired_Workers"/></font></td> <td width="10%" align="right"><font size="2"><xsl:value-of select="Disabled_Workers"/></font></td> <td width="10%" align="right"><font size="2"><xsl:value-of select="Widow_er_s"/></font></td> <td width="10%" align="right"><font size="2"><xsl:value-of select="Spouses"/></font></td> <td width="10%" align="right"><font size="2"><xsl:value-of select="Children"/></font></td> <td width="10%" align="right"><font size="2"><xsl:value-of select="Total_All"/></font></td> <td width="10%" align="right"><font size="2"><xsl:value-of select="Total_Retired_Workers"/></font></td> <td width="10%" align="right"><font size="2"><xsl:value-of select="Total_Widow_er_s"/></font></td> <td width="10%" align="right"><font size="2"><xsl:value-of select="Sixty-Five_plus"/></font></td> </tr></table> </xsl:template> <xsl:template name="equalCities"> <h1>Hello</h1> </xsl:template> </xsl:stylesheet>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] format-dateTime() - using, tom tom | Thread | Re: [xsl] XSLT Comparison of Two Tr, Martin Honnen |
RE: [xsl] format-dateTime() - using, tom tom | Date | Re: [xsl] XSLT Comparison of Two Tr, Martin Honnen |
Month |