You can write a bit less code by using apply-templates. Instead of
<xsl:call-template name="compare_guests">
<xsl:with-param name="thisBase" select="$data1/party/guests" />
</xsl:call-template>
write
<xsl:apply-templates select="$data1/party/guests mode="compare-guests"/>
and instead of
<xsl:template name="compare_guests">
<xsl:param name="thisBase" />
Total Invited: <xsl:value-of select="$thisBase/total" /><br />
Confirmed: <xsl:value-of select="$thisBase/confirmed" /><br />
Declined: <xsl:value-of select="$thisBase/declined" /><br />
</xsl:template>
write
<xsl:template match="guests" mode="compare_guests">
Total Invited: <xsl:value-of select="total" /><br />
Confirmed: <xsl:value-of select="confirmed" /><br />
Declined: <xsl:value-of select="declined" /><br />
</xsl:template>
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference