【发布时间】:2016-01-12 07:00:55
【问题描述】:
我想使用 XSLT 1.0 在 Current-Group 中实现按功能分组...我已经设法获得基于“组织”的顶级分组,但使用“封面”的子组;我失败了:(
(http://xsltransform.net/pPzifpL/16) 具有当前使用的 XML 和 XSLT 设置。
我还需要应用 Sum(Current-Group()/SumInsured) 和 distinct(Addenda) 计数,但 1.0 不支持...请专家帮助我。
预期输出:(文本)
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
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>
使用 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="Addenda"/> <!-- Getting Distinct Count of Addendas while it is not blank-->
<xsl:text>	</xsl:text>
<xsl:value-of select="SumInsured"/>
<xsl:text>	</xsl:text>
<xsl:value-of select="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()]" />
</xsl:template>
</xsl:stylesheet>
感谢您的任何建议。
【问题讨论】:
-
请在此处发布您的 xslt 和 xml,而不是仅发布在链接上(如果您愿意,可以同时发布)。这样,如果该链接消失,它就不会消失。
-
按要求发布。
标签: xml text xslt-1.0 grouping distinct-values