Update: Added CompnentGroupRef, CompnentGroup and CompnentRef incase -cg flag is used with heat on a fragment.
<xsl:stylesheet exclude-result-prefixes="wix" version="1.0" xmlns:wix="http://schemas.microsoft.com/wix/2006/wi" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="UTF-8" indent="yes" method="xml">
<xsl:strip-space elements="*">
<xsl:template match="/">
<include>
<xsl:apply-templates>
</xsl:apply-templates></include>
</xsl:template>
<xsl:template match="wix:ComponentGroupRef">
<xsl:element name="{name()}">
<xsl:copy-of select="@*">
<xsl:apply-templates>
</xsl:apply-templates></xsl:copy-of></xsl:element>
</xsl:template>
<xsl:template match="wix:ComponentGroup">
<xsl:element name="{name()}">
<xsl:copy-of select="@*">
<xsl:apply-templates>
</xsl:apply-templates></xsl:copy-of></xsl:element>
</xsl:template>
<xsl:template match="wix:ComponentRef">
<xsl:element name="{name()}">
<xsl:copy-of select="@*">
<xsl:apply-templates>
</xsl:apply-templates></xsl:copy-of></xsl:element>
</xsl:template>
<xsl:template match="wix:DirectoryRef">
<xsl:element name="{name()}">
<xsl:copy-of select="@*">
<xsl:apply-templates>
</xsl:apply-templates></xsl:copy-of></xsl:element>
</xsl:template>
<xsl:template match="wix:Directory">
<xsl:element name="{name()}">
<xsl:copy-of select="@*">
<xsl:apply-templates>
</xsl:apply-templates></xsl:copy-of></xsl:element>
</xsl:template>
<xsl:template match="wix:Component">
<xsl:element name="{name()}">
<xsl:copy-of select="@*">
<xsl:apply-templates>
</xsl:apply-templates></xsl:copy-of></xsl:element>
</xsl:template>
<xsl:template match="wix:File">
<xsl:element name="{name()}">
<xsl:copy-of select="@*">
<xsl:apply-templates>
</xsl:apply-templates></xsl:copy-of></xsl:element>
</xsl:template>
</xsl:strip-space>
</xsl:output>
</xsl:stylesheet>If you need other elements it should just to copy the templates for File, Directory, Component or DirectoryRef and and rename the match.
To use it, use the -t parameter when calling heat.exe
Example: (above saved as transform_fragment_to_inc.xsl)
heat.exe" dir "files\to\harvest" -gg -g1 -nologo -scom -sfrag -srd -sreg -svb6 -template:fragment -t:"transform_fragment_to_inc.xsl" -out "include_file.wxi"
Note: this xsl doesn't support registry entries or registering of com components when harvested by heat.