<coverage>
ファイル1とファイル2はそれぞれ、指定した属性を持つ単一の要素で構成されていると想定しました。また、常に2つのファイルがあり、それ以上は存在しないと想定しました。すべての計算があなたの結果に対してどのように機能するかわからなかったので、私は推測しました。計算をより簡潔で読みやすくするために、必要以上に多くの変数を使用しました。
助けを求めるときは、もっと明確にする必要があります。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<xsl:variable name = "b1" select="document('file1.xml')/coverage"/>
<xsl:variable name = "b2" select="document('file2.xml')/coverage"/>
<xsl:variable name = "b1_br" select="$b1/@branch-rate"/>
<xsl:variable name = "b1_bt" select="$b1/@branch-total"/>
<xsl:variable name = "b1_lr" select="$b1/@line-rate"/>
<xsl:variable name = "b2_br" select="$b2/@branch-rate"/>
<xsl:variable name = "b2_bt" select="$b2/@branch-total"/>
<coverage>
<xsl:attribute name="branch-rate">
<xsl:value-of select="(($b1_br * $b1_bt) + ($b2_br * $b2_bt)) div ($b1_bt + $b2_bt)"/>
</xsl:attribute>
<xsl:copy-of select="$b1/@branch-total"/>
<xsl:copy-of select="$b1/@line-rate"/>
</coverage>
</xsl:template>
</xsl:stylesheet>