2012-01-22 2 views
1

XSLTの問題について助けが必要です。私は検索する時間があまりありませんでしたが、私がしたことについては答えを見つけることができませんでした。 Policy_Type、Policy_Date、State、Zip、およびpay amountの5つのフィールドを持つXMLがあります。同じPolicy_Type、Policy_Date、State、およびZipを持つすべてのエントリについて、Amount Paidフィールドを一緒に追加する方法を見つける必要があります。誰もXSLでこれについて行くためのベストプラクティスに関する提案を持っていますか?XSLTに一致するフィールドを追加しました

また、これらのフィールドはInterbaseデータベースから取得されています。歓迎するSQL文によってこれを行う方法がある場合。私はInterbaseでも快適ではない。

答えて

1

この変換

<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> 

(何のソースXML文書が提供されないと!)次のXML文書に適用:

<transactions> 
<transaction> 
    <Policy_Type>A</Policy_Type> 
    <Policy_Date>2012-01-11</Policy_Date> 
    <State>WA</State> 
    <Zip>98004</Zip> 
    <AmountPaid>189.32</AmountPaid> 
</transaction> 
<transaction> 
    <Policy_Type>B</Policy_Type> 
    <Policy_Date>2012-01-11</Policy_Date> 
    <State>NY</State> 
    <Zip>111111</Zip> 
    <AmountPaid>111.11</AmountPaid> 
</transaction> 
<transaction> 
    <Policy_Type>A</Policy_Type> 
    <Policy_Date>2012-01-11</Policy_Date> 
    <State>WA</State> 
    <Zip>98004</Zip> 
    <AmountPaid>223.05</AmountPaid> 
</transaction> 
<transaction> 
    <Policy_Type>B</Policy_Type> 
    <Policy_Date>2012-01-11</Policy_Date> 
    <State>NY</State> 
    <Zip>111111</Zip> 
    <AmountPaid>111.11</AmountPaid> 
</transaction> 
<transaction> 
    <Policy_Type>C</Policy_Type> 
    <Policy_Date>2012-01-11</Policy_Date> 
    <State>NY</State> 
    <Zip>111111</Zip> 
    <AmountPaid>111.11</AmountPaid> 
</transaction> 
</transactions> 

は指名手配、正しい結果を生成するには、

<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> 

説明:Muenchian grouping

関連する問題