Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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,带Sum&;不同值的计数_Xml_Text_Xslt 1.0_Grouping_Distinct Values - Fatal编程技术网

Xml 组内的组XSLT 1.0,带Sum&;不同值的计数

Xml 组内的组XSLT 1.0,带Sum&;不同值的计数,xml,text,xslt-1.0,grouping,distinct-values,Xml,Text,Xslt 1.0,Grouping,Distinct Values,我想使用XSLT 1.0在当前组中实现一个按功能分组……我已经成功地获得了基于“组织”的顶级分组,但在使用“覆盖”的情况下得到了一个子组;我在以下方面失败:( ()当前使用了XML和XSLT设置 我还需要应用一个Sum(Current-Group()/sumsured)和一个distinct(Addenda)计数,但1.0不支持这一点…请帮助我 预期产出:(文本) XML: 50242-1 50 50242 基础知识 波尔1 10000 英国 50242-2 5. 50242 基础知识 波尔1

我想使用XSLT 1.0在当前组中实现一个按功能分组……我已经成功地获得了基于“组织”的顶级分组,但在使用“覆盖”的情况下得到了一个子组;我在以下方面失败:(

()当前使用了XML和XSLT设置

我还需要应用一个Sum(Current-Group()/sumsured)和一个distinct(Addenda)计数,但1.0不支持这一点…请帮助我

预期产出:(文本)

XML:


50242-1
50
50242
基础知识
波尔1
10000
英国
50242-2
5.
50242
基础知识
波尔1
20000
英国
10
50242
基础知识
波尔1
10000
英国
12345-1
20
12345
XYZ
波尔2
20000
英国
10
12345
XYZ
波尔2
10000
英国
10
45678
JKL
10000
美国

使用的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:value-of select="Addenda"/> <!-- Getting Distinct Count of Addendas while it is not blank-->
        <xsl:text>&#09;</xsl:text>
        <xsl:value-of select="SumInsured"/>
        <xsl:text>&#09;</xsl:text>
        <xsl:value-of select="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>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()]" />

     </xsl:template>
   </xsl:stylesheet>

		
客户保险金额报告


	
	
	
	
	
	

            


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


谢谢您的建议。

更改(链接第47行)



更改(第21、23、25行)



更改(第13行)



您需要进一步清理间距/格式,但这会产生所需的输出

编辑以添加OP在评论中询问的其他要求

要将组织添加到表的顶部,只需添加

<xsl:value-of select="."/>

到组织模板的顶部

要添加每个表的总计,请添加以下行

<xsl:value-of select="sum(../../GroupPolicies[Organization=current()]/SumInsured)"/>
<xsl:value-of select="sum(../../GroupPolicies[Organization=current()]/CommAmt)"/>


在组织模板的底部(在应用模板调用之后),使用适当的间距和回车格式。

请在此处发布xslt和xml,而不是仅在链接处发布(如果需要,可以同时发布)。这样,链接不会消失。按要求发布。谢谢你,Matthew,我工作得很好。我想我不会这么快得到解决方案。只要再请求一次,我想在每个表前显示组织。可以告诉我语法的位置吗。是否可以在最后显示每个表的总数?我有ap挂起我上面的输出语句以指示所需的。非常感谢。作为组织模板的第一行(将其添加为第30行,将回车行向下移动一行),只需添加
。完成,谢谢。您可能已经猜到我对XSLT一无所知。是否可以获取运行总计。请编辑答案以提供表内总计。
<xsl:apply-templates select="//GroupPolicies[Organization = current()]" />
<xsl:apply-templates select="//GroupPolicies[Organization = current() and not(preceding-sibling::GroupPolicies/Cover=Cover)]" />
<xsl:value-of select="Addenda"/>
<xsl:value-of select="SumInsured"/>
<xsl:value-of select="CommAmt"/> 
<xsl:value-of select="count(../GroupPolicies[Organization=current()/Organization and Cover=current()/Cover]/Addenda[string-length()&gt;0])"/>
<xsl:value-of select="sum(../GroupPolicies[Organization=current()/Organization and Cover=current()/Cover]/SumInsured)"/>
<xsl:value-of select="sum(../GroupPolicies[Organization=current()/Organization and Cover=current()/Cover]/CommAmt)"/> 
<!--xsl:value-of select="{$count}"/-->
<xsl:value-of select="$count"/>
<xsl:value-of select="."/>
<xsl:value-of select="sum(../../GroupPolicies[Organization=current()]/SumInsured)"/>
<xsl:value-of select="sum(../../GroupPolicies[Organization=current()]/CommAmt)"/>