To be honest, I didn't even look at the c#. I assumed (maybe inappropriately) that since you got the <event></event> output that it was working.
But you're entirely correct that the problem could be there. Let's take this step by step to find the problem.
Based on the sample c# you provided, you're really just trying to do an xslt transformation on the node with an id of 1251. If that's the case, why bother with the c# at all? Maybe you want to do more in the c# later?
For now, let's make a test and see if the xslt is working properly. If it is then any issue is in the c#. If the xslt isn't working properly then we'll want to fix it first.
Create a new macro and select the Events.xslt file. Put a checkmark in the 'use in editor' box, remove the checkbox from 'render in editor' box. Save the macro.
Go to the content node that is has id 1251. Insert the macro you just made (assuming you have a richtext editor on that document type; if not, insert the macro in the template used by this node). Save and publish.
Do you get back the proper output from your xslt macro when you visit the page with a browser? You might want to put in some <xsl:value-of...> output for debugging. Also, perhaps use an <xsl:call-template...> with a named template rather than using the <xsl:template match="node"> format.
When the xslt is working properly you can either use that macro, or call the xslt from c# and a .net usercontrol macro instead. But unless you're doing a lot of extra work in the c# it would be cleaner to use the xslt macro directly.
Let us know what you find out.
cheers,
doug.
MVP 2007-2009 - Official Umbraco Trainer for North America -
Percipient Studios