Xml 在XSLT中添加了匹配字段

Xml 在XSLT中添加了匹配字段,xml,xslt,Xml,Xslt,我需要XSLT问题的帮助。我没有太多的时间去寻找,但对于我所做的我找不到答案。我有五个字段的xml:策略类型、策略日期、状态、邮政编码和支付金额。我需要找到一种方法,将具有相同保单类型、保单日期、状态和邮政编码的所有条目的“支付金额”字段添加到一起。有人对在XSL中实现这一点的最佳实践有什么建议吗 这些字段也从Interbase数据库中提取。如果有一种通过SQL语句实现这一点的方法,也会受到欢迎。不过,我对Interbase不太满意。这种转换: <xsl:stylesheet versio

我需要XSLT问题的帮助。我没有太多的时间去寻找,但对于我所做的我找不到答案。我有五个字段的xml:策略类型、策略日期、状态、邮政编码和支付金额。我需要找到一种方法,将具有相同保单类型、保单日期、状态和邮政编码的所有条目的“支付金额”字段添加到一起。有人对在XSL中实现这一点的最佳实践有什么建议吗


这些字段也从Interbase数据库中提取。如果有一种通过SQL语句实现这一点的方法,也会受到欢迎。不过,我对Interbase不太满意。

这种转换:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:key name="kTrans" match="transaction"
  use="concat(Policy_Type,
            '+',
              Policy_Date,
            '+',
              State,
            '+',
              Zip)"/>

 <xsl:template match=
  "transaction
    [generate-id()
    =
     generate-id(key('kTrans',
                      concat(Policy_Type,
                            '+',
                              Policy_Date,
                            '+',
                              State,
                            '+',
                              Zip)
                     )[1]
                  )
    ]
  ">
  <transaction>
   <xsl:copy-of select="*[not(self::AmountPaid)]"/>

   <TotalAmountPaid>
     <xsl:value-of select=
     "sum(key('kTrans',
              concat(Policy_Type,
                   '+',
                     Policy_Date,
                   '+',
                     State,
                   '+',
                     Zip)
                     )
                     /AmountPaid
          )
     "/>
   </TotalAmountPaid>
  </transaction>
 </xsl:template>
 <xsl:template match="text()"/>
</xsl:stylesheet>
<transaction>
   <Policy_Type>A</Policy_Type>
   <Policy_Date>2012-01-11</Policy_Date>
   <State>WA</State>
   <Zip>98004</Zip>
   <TotalAmountPaid>412.37</TotalAmountPaid>
</transaction>
<transaction>
   <Policy_Type>B</Policy_Type>
   <Policy_Date>2012-01-11</Policy_Date>
   <State>NY</State>
   <Zip>111111</Zip>
   <TotalAmountPaid>222.22</TotalAmountPaid>
</transaction>
<transaction>
   <Policy_Type>C</Policy_Type>
   <Policy_Date>2012-01-11</Policy_Date>
   <State>NY</State>
   <Zip>111111</Zip>
   <TotalAmountPaid>111.11</TotalAmountPaid>
</transaction>

应用于以下XML文档时(因为未提供源XML文档!):


A.
2012-01-11
华盛顿州
98004

这一转变

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:key name="kTrans" match="transaction"
  use="concat(Policy_Type,
            '+',
              Policy_Date,
            '+',
              State,
            '+',
              Zip)"/>

 <xsl:template match=
  "transaction
    [generate-id()
    =
     generate-id(key('kTrans',
                      concat(Policy_Type,
                            '+',
                              Policy_Date,
                            '+',
                              State,
                            '+',
                              Zip)
                     )[1]
                  )
    ]
  ">
  <transaction>
   <xsl:copy-of select="*[not(self::AmountPaid)]"/>

   <TotalAmountPaid>
     <xsl:value-of select=
     "sum(key('kTrans',
              concat(Policy_Type,
                   '+',
                     Policy_Date,
                   '+',
                     State,
                   '+',
                     Zip)
                     )
                     /AmountPaid
          )
     "/>
   </TotalAmountPaid>
  </transaction>
 </xsl:template>
 <xsl:template match="text()"/>
</xsl:stylesheet>
<transaction>
   <Policy_Type>A</Policy_Type>
   <Policy_Date>2012-01-11</Policy_Date>
   <State>WA</State>
   <Zip>98004</Zip>
   <TotalAmountPaid>412.37</TotalAmountPaid>
</transaction>
<transaction>
   <Policy_Type>B</Policy_Type>
   <Policy_Date>2012-01-11</Policy_Date>
   <State>NY</State>
   <Zip>111111</Zip>
   <TotalAmountPaid>222.22</TotalAmountPaid>
</transaction>
<transaction>
   <Policy_Type>C</Policy_Type>
   <Policy_Date>2012-01-11</Policy_Date>
   <State>NY</State>
   <Zip>111111</Zip>
   <TotalAmountPaid>111.11</TotalAmountPaid>
</transaction>

应用于以下XML文档时(因为未提供源XML文档!):


A.
2012-01-11
华盛顿州
98004