Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 合并母公司及;使用XSLT 1.0将子数据放在一个逗号分隔的排序列中_Xml_Xslt_Parent Child_Grouping - Fatal编程技术网

Xml 合并母公司及;使用XSLT 1.0将子数据放在一个逗号分隔的排序列中

Xml 合并母公司及;使用XSLT 1.0将子数据放在一个逗号分隔的排序列中,xml,xslt,parent-child,grouping,Xml,Xslt,Parent Child,Grouping,我想把父母“被保险人”和子女“被保险账户”列在一列;逗号分隔它们,其中InsuredAccnt(在我的XML中为INSA)始终是第一行,其余子InsuredAccounts(在我的XML中为INS1和INS2)需要按“InsuredShare”排序并显示 任何帮助都会很好,我不熟悉XSLT,甚至现有的代码都是由StackOverflow的一些有帮助的人编写的 预期O/p: Client Sum Insured Report UK SNo. Policy Number Customer

我想把父母“被保险人”和子女“被保险账户”列在一列;逗号分隔它们,其中InsuredAccnt(在我的XML中为INSA)始终是第一行,其余子InsuredAccounts(在我的XML中为INS1和INS2)需要按“InsuredShare”排序并显示

任何帮助都会很好,我不熟悉XSLT,甚至现有的代码都是由StackOverflow的一些有帮助的人编写的

预期O/p:

Client Sum Insured Report

UK
SNo.    Policy Number   Customer Name   Cover Note #    Insured             No. of Addendas     Sum Insured     Total Commission
 1       POL1           ABC             50242           INSA, INS2, INS1    2                   40000           65
 2       POL2           XYZ             12345           INSB, INS3          1                   30000           30
Totals :                                                                                        70000           95

US
SNo.    Policy Number   Customer Name   Cover Note #    Insured             No. of Addendas     Sum Insured     Total Commission
 1                      JKL             45678           INSC                0                   10000           10
Totals :                                                                                        10000           10
XML:


50242-1
50
50242
基础知识
波尔1
10000
英萨
英国
INS1
5.
INS2
25
50242-2
5.
50242
基础知识
波尔1
20000
英萨
英国
INS1
5.
INS2
25
10
50242
基础知识
波尔1
10000
英萨
英国
INS1
5.
INS2
25
12345-1
20
12345
XYZ
波尔2
20000
INSB
英国
INS3
20
10
12345
XYZ
波尔2
10000
INSB
英国
INS3
20
10
45678
JKL
10000
INSC
美国
使用的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>&#09;&#09;</xsl:text>
<xsl:text>Client Sum Insured Report</xsl:text>
<xsl:text>&#10;</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>&#09;</xsl:text>
<xsl:value-of select="Policy"/>
<xsl:text>&#09;</xsl:text>
<xsl:value-of select="Customer"/>
<xsl:text>&#09;</xsl:text>
<xsl:value-of select="Cover"/>
<xsl:text>&#09;</xsl:text>
<xsl:for-each select="ListOfClientSumInsuredReportIo_Insured/GroupPolicies_Insured/InsuredAccount">
<xsl:value-of select="."/>
<xsl:if test="not(position()=last())"><xsl:text>, </xsl:text></xsl:if>
</xsl:for-each> <!-- Comma Separated List of Insured Accounts per Cover-->
<xsl:text>&#09;</xsl:text>
<xsl:value-of select="count(../GroupPolicies[Organization=current()/Organization and Cover=current()/Cover]/Addenda[string-length()>0])"/>
<xsl:text>&#09;</xsl:text>
<xsl:value-of select="sum(../GroupPolicies[Organization=current()/Organization and Cover=current()/Cover]/SumInsured)"/>
<xsl:text>&#09;</xsl:text>
<xsl:value-of select="sum(../GroupPolicies[Organization=current()/Organization and Cover=current()/Cover]/CommAmt)"/> 
    <xsl:text>&#10;</xsl:text>            
 </xsl:template>  
<xsl:template match="Organization">
<xsl:text>&#10;</xsl:text>
<xsl:text>SNo.</xsl:text>
<xsl:text>&#09;</xsl:text>
<xsl:text>Policy Number</xsl:text>
<xsl:text>&#09;</xsl:text>
<xsl:text>Customer Name</xsl:text>
<xsl:text>&#09;</xsl:text>
<xsl:text>Cover Note #</xsl:text>
<xsl:text>&#09;</xsl:text>
<xsl:text>Insured</xsl:text>
<xsl:text>&#09;</xsl:text>
<xsl:text>No. of Addendas</xsl:text>
<xsl:text>&#09;</xsl:text>
<xsl:text>Sum Insured</xsl:text>
<xsl:text>&#09;</xsl:text>
<xsl:text>Total Commission</xsl:text>
<xsl:text>&#10;</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>&#09;&#09;&#09;&#09;&#09;&#09;&#09;&#09;&#09;&#09;&#09;&#09;&#09;&#09;</xsl:text><xsl:value-of select="sum(../../GroupPolicies[Organization=current()]/SumInsured)"/>
<xsl:text>&#09;</xsl:text>
<xsl:value-of select="sum(../../GroupPolicies[Organization=current()]/CommAmt)"/>
</xsl:template>
    </xsl:stylesheet>

		
客户保险金额报告


	
	
	
	
, 
	
	
	

            


斯诺。
	
保单号码
	
客户名称
	
封面说明#
	
确保
	
增编数目
	
保险金额
	
佣金总额


总数:
														
	

希望这是可以实现的…

可以使用以下语法:

    <xsl:value-of select="InsuredAccnt"/>
    <xsl:for-each select="ListOfGroupPolicies_Insured/GroupPolicies_Insured">
    <xsl:sort select="InsuredShare" order="descending" data-type="number"/>
    <xsl:text>, </xsl:text>
    <xsl:value-of select="InsuredAccount"/>

, 
而不是:

    <xsl:for-each select="ListOfClientSumInsuredReportIo_Insured/GroupPolicies_Insured/InsuredAccount">
    <xsl:value-of select="."/>
    <xsl:if test="not(position()=last())"><xsl:text>, </xsl:text></xsl:if>
    </xsl:for-each>

, 
    <xsl:for-each select="ListOfClientSumInsuredReportIo_Insured/GroupPolicies_Insured/InsuredAccount">
    <xsl:value-of select="."/>
    <xsl:if test="not(position()=last())"><xsl:text>, </xsl:text></xsl:if>
    </xsl:for-each>