I've no idea where in your code you want to replace quotes by apostrophes so I can't help you with the immediate question. But I can make some general comments about your code, which you might find helpful.
<xsl:output method="xml" encoding="iso-8859-1" omit-xml-declaration="yes" indent="yes"/>
Is your stylesheet really producing XML? As far as I can see, it only produces text. In that case, use method="text". Producing XML and then trying to suppress its inherent XML features by using "omit-xml-declaration" and "disable-output-escaping" isn't the right way to do it.
<xsl:template match="*">
<xsl:for-each select="//*[local-name()='item']">
In a template that matches every element, it's usually wrong to then use select="//*" which selects everything. In this case I think you're only invoking the template to match the outermost element, in which case the logic might as well go in the match="/" template.
The actual selection //*[local-name()='item'] suggests you are ignoring namespaces. That's normally not recommended practice - but because RSS namespaces are such a disaster area, it's understandable.
<xsl:value-of select="*[local-name()='description']" disable-output-escaping="yes"/>
Presumably this is where you want to translate quotes to apostrophes?
Try
<xsl:variable name="quot">"</xsl:variable>
<xsl:variable name="apos">'</xsl:variable>
<xsl:value of select="translate(*[local-name()='description'],
$quot, $apos)"/>
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference