Cómo agrupar y sumar valores en XSLT

Para cada nodo "agencia" necesito encontrar los elementos "stmt" que tienen los mismos valores key1, key2, key3 y generar un solo nodo "stmt" con los valores "comm" y "prem" sumados. Para cualquier elemento "stmt" dentro de esa "agencia" que no coincida con ningún otro elemento "stmt" basado en key1, key2 y key3, necesito mostrarlos tal cual. Entonces, después de la transformación, el primer nodo de "agencia" solo tendría dos nodos "stmt" (uno sumado) y el segundo nodo de "agencia" se pasaría como es porque las claves no coinciden. Las soluciones XSLT 1.0 o 2.0 están bien ... aunque mi hoja de estilo es actualmente 1.0. Tenga en cuenta que los nodos de la agencia pueden tener cualquier número de elementos "stmt" que tengan claves coincidentes que deben agruparse y sumarse, y cualquier número que no lo tenga.

<statement>
<agency>
    <stmt>
        <key1>1234</key1>
        <key2>ABC</key2>
        <key3>15.000</key3>
        <comm>75.00</comm>
        <prem>100.00</prem>
    </stmt>
    <stmt>
        <key1>1234</key1>
        <key2>ABC</key2>
        <key3>15.000</key3>
        <comm>25.00</comm>
        <prem>200.00</prem>
    </stmt>
    <stmt>
        <key1>1234</key1>
        <key2>ABC</key2>
        <key3>17.50</key3>
        <comm>25.00</comm>
        <prem>100.00</prem>
    </stmt>
</agency>
<agency>
    <stmt>
        <key1>5678</key1>
        <key2>DEF</key2>
        <key3>15.000</key3>
        <comm>10.00</comm>
        <prem>20.00</prem>
    </stmt>
    <stmt>
        <key1>5678</key1>
        <key2>DEF</key2>
        <key3>17.000</key3>
        <comm>15.00</comm>
        <prem>12.00</prem>
    </stmt>
</agency>

Respuestas a la pregunta(3)

Su respuesta a la pregunta