Try it this way?
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="text" encoding="utf-8"/>
<xsl:template match="/">
<xsl:text>Host_Name,IP_address,OS,Load_avg_1min,Load_avg_5min,Load_avg_15min </xsl:text>
<xsl:for-each select="Sites/Site/Hosts/Host">
<xsl:value-of select="concat(Host_Name,',',IP_address,',"',OS,'",',Load_avg_1min,',',Load_avg_5min,',',Load_avg_15min,' ')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Or, if you prefer:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >
<xsl:output method="text" encoding="utf-8"/>
<xsl:template match="/">
<xsl:text>Host_Name,IP_address,OS,Load_avg_1min,Load_avg_5min,Load_avg_15min </xsl:text>
<xsl:for-each select="Sites/Site/Hosts/Host">
<xsl:for-each select="*">
<xsl:text>"</xsl:text>
<xsl:value-of select="."/>
<xsl:text>"</xsl:text>
<xsl:if test="position()!=last()">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
<xsl:if test="position()!=last()">
<xsl:text> </xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Note that both assume none of your "fields" contains a "
quotation mark.