I'm assuming you want HTML output though you still haven't actually said...
Something like this:
<table>
<tr>
<td/>
<xsl:for-each select="row">
<td><xsl:value-of select="PartnerCode"/></td>
</xsl:for-each>
</tr>
<xsl:for-each select="row[1]/*[not(self::PartnerCode)]">
<tr>
<xsl:variable name="p" select="position()"/>
<td><xsl:value-of select="name()"/></td>
<xsl:for-each select="../../row/*[position()=$p]">
<td><xsl:value-of select="."/></td>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference