I've been puzzling over this and I'm sure I've seen it done somewhere. Surely it must be possible to pass a document as a parameter to an xsl transform.
I've created the xslt and added the <xsl:param name="doc" /> and added the document via the XsltArgumentList.AddParam() method.
However, when I try to do anything to the $doc param inside the xslt file I get nothing.
<xsl:value-of select="string($doc)" /> returns "System.Xml.DomDocument"
Which makes me think that the AddParam() has performed a ToString() on the object before adding it as a param, but curiously:
<xsl:value-of select="$doc" /> does nothing.
I'm sure I'll get to the bottom of it tomorrow.