Thanks to some stackoverflow experts I was able to convert an XML with flat data to a grouped text document. However have been told that the output has to be in hierarchical XML itself. I am absolutely lost now.
Below is the grouped output (text). I am unaware how it will look in XML format, but the idea is to provide end user with a readable report but my system requires input as hierarchy.
Client Sum Insured Report UK SNo. Policy Number Customer Name Cover Note # No. of Addendas Sum Insured Total Commission 1 POL1 ABC 50242 2 40000 65 2 POL2 XYZ 12345 1 30000 30 Totals : 70000 95 US SNo. Policy Number Customer Name Cover Note # No. of Addendas Sum Insured Total Commission 1 JKL 45678 0 10000 10 Totals : 10000 10 Input XML:
<?xml version="1.0" encoding="UTF-8"?><?Siebel-Property-Set EscapeNames="true"?><SiebelMessage MessageId="1-OC05" IntObjectName="Client Sum Insured Report IO" MessageType="Integration Object" IntObjectFormat="Siebel Hierarchical"> <ListOfClientSumInsuredReportIo> <GroupPolicies> <Addenda>50242-1</Addenda> <CommAmt>50</CommAmt> <Cover>50242</Cover> <Customer>ABC</Customer> <Policy>POL1</Policy> <SumInsured>10000</SumInsured> <Organization>UK</Organization> </GroupPolicies> <GroupPolicies> <Addenda>50242-2</Addenda> <CommAmt>5</CommAmt> <Cover>50242</Cover> <Customer>ABC</Customer> <Policy>POL1</Policy> <SumInsured>20000</SumInsured> <Organization>UK</Organization> </GroupPolicies> <GroupPolicies> <Addenda></Addenda> <CommAmt>10</CommAmt> <Cover>50242</Cover> <Customer>ABC</Customer> <Policy>POL1</Policy> <SumInsured>10000</SumInsured> <Organization>UK</Organization> </GroupPolicies> <GroupPolicies> <Addenda>12345-1</Addenda> <CommAmt>20</CommAmt> <Cover>12345</Cover> <Customer>XYZ</Customer> <Policy>POL2</Policy> <SumInsured>20000</SumInsured> <Organization>UK</Organization> </GroupPolicies> <GroupPolicies> <Addenda></Addenda> <CommAmt>10</CommAmt> <Cover>12345</Cover> <Customer>XYZ</Customer> <Policy>POL2</Policy> <SumInsured>10000</SumInsured> <Organization>UK</Organization> </GroupPolicies> <GroupPolicies> <Addenda></Addenda> <CommAmt>10</CommAmt> <Cover>45678</Cover> <Customer>JKL</Customer> <Policy></Policy> <SumInsured>10000</SumInsured> <Organization>US</Organization> </GroupPolicies> </ListOfClientSumInsuredReportIo> Existing XSLT:
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" indent="yes"/> <xsl:template match="/SiebelMessage/ListOfClientSumInsuredReportIo"> <xsl:text>		</xsl:text> <xsl:text>Client Sum Insured Report</xsl:text> <xsl:text> </xsl:text> <xsl:apply-templates select="GroupPolicies[not(preceding-sibling::GroupPolicies/Organization = Organization)]/Organization"/> </xsl:template> <xsl:template match="GroupPolicies"> <xsl:variable name="count" select="position()"/> <xsl:value-of select="$count"/> <xsl:text>	</xsl:text> <xsl:value-of select="Policy"/> <xsl:text>	</xsl:text> <xsl:value-of select="Customer"/> <xsl:text>	</xsl:text> <xsl:value-of select="Cover"/> <xsl:text>	</xsl:text> <xsl:value-of select="count(../GroupPolicies[Organization=current()/Organization and Cover=current()/Cover]/Addenda[string-length()>0])"/> <xsl:text>	</xsl:text> <xsl:value-of select="sum(../GroupPolicies[Organization=current()/Organization and Cover=current()/Cover]/SumInsured)"/> <xsl:text>	</xsl:text> <xsl:value-of select="sum(../GroupPolicies[Organization=current()/Organization and Cover=current()/Cover]/CommAmt)"/> <xsl:text> </xsl:text> </xsl:template> <xsl:template match="Organization"> <xsl:text> </xsl:text> <xsl:text>SNo.</xsl:text> <xsl:text>	</xsl:text> <xsl:text>Policy Number</xsl:text> <xsl:text>	</xsl:text> <xsl:text>Customer Name</xsl:text> <xsl:text>	</xsl:text> <xsl:text>Cover Note #</xsl:text> <xsl:text>	</xsl:text> <xsl:text>No. of Addendas</xsl:text> <xsl:text>	</xsl:text> <xsl:text>Sum Insured</xsl:text> <xsl:text>	</xsl:text> <xsl:text>Total Commission</xsl:text> <xsl:text> </xsl:text> <xsl:variable name="temp" select="." /> <xsl:apply-templates select="//GroupPolicies[Organization = current() and not(preceding-sibling::GroupPolicies/Cover=Cover)]"/> <xsl:text>Totals:</xsl:text> <xsl:text>													</xsl:text><xsl:value-of select="sum(../../GroupPolicies[Organization=current()]/SumInsured)"/> <xsl:text>	</xsl:text> <xsl:value-of select="sum(../../GroupPolicies[Organization=current()]/CommAmt)"/> </xsl:template> </xsl:stylesheet> Any help would be great.
No comments:
Post a Comment