[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Removing duplicates where duplicates are determined by
Hi, consider the following problem: -i have this sorted list of names -I want to remove duplicates shown as the concatination of <surname> and <first_name> My question is: Can anyone tell me what is wrong with my XSLT(se below)? I hope you can help me. The subject of removing duplicates have been discussed before, but I have not found issues around the combination of duplicates and concatination. I am using XMLSpy 2007 rel3. GeirrP Sorted list: <?xml version="1.0" encoding="UTF-8"?> <persons> <person> <surname>Per</surname><first_name>Hansen</first_name> </person> <person> <surname>Per</surname><first_name>Hansen</first_name> </person><person> <surname>Per</surname><first_name>Olsen</first_name> </person><person> <surname>Jan</surname><first_name>Hansen</first_name> </person><person> <surname>Jan</surname><first_name>Hansen</first_name> </person><person> <surname>Jan</surname><first_name>Hansen</first_name> </person><person> <surname>Ole</surname><first_name>Pedersen</first_name> </person><person> <surname>jan</surname><first_name>Fredriksen</first_name> </person><person> <surname>Arne</surname><first_name>Jensen</first_name> </person> </persons> This is the result I want to achieve: <?xml version="1.0" encoding="UTF-8"?> <persons> <person> <surname>Per</surname><first_name>Hansen</first_name> </person> person> <surname>Per</surname><first_name>Olsen</first_name> </person><person> <surname>Jan</surname><first_name>Hansen</first_name> </person> person> <surname>Ole</surname><first_name>Pedersen</first_name> </person><person> <surname>jan</surname><first_name>Fredriksen</first_name> </person><person> <surname>Arne</surname><first_name>Jensen</first_name> </person> </persons> Here is the XSLT: <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="/ | node() | @* | comment() | processing-instruction()"> <xsl:copy> <xsl:apply-templates select="@* | node()"/> </xsl:copy> </xsl:template> <xsl:template match="/"> <xsl:variable name="persons"> <xsl:for-each select="//person"> <xsl:copy-of select="."/> </xsl:for-each> </xsl:variable> <tbody> <xsl:for-each select="$persons/person"> <xsl:variable name="pos" select="position( )"/> <xsl:if test="$pos = 1 or concat(./first_name,./surname) !=concat(./first_name[$pos - 1],./surname[$pos - 1])"> <xsl:copy-of select="."/> </xsl:if> </xsl:for-each> </tbody> </xsl:template> </xsl:stylesheet>
|
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
|