My work-around is:
<xsl:template match="text()">
<xsl:value-of select="translate(., '

', ' ')" />
</xsl:template>
It's very unlikely that any 
 characters will be present in your XML,
they will only be there if they were actually written as character
references. Ordinary newlines are normalized to 
.
But the above (as far as I can tell) applies to all my data.
Do you have
any suggestions on how I can get it to only apply to data within the
<p>...</p> tags?
Instead of match="text()", using match="p/text()" or match="p//text()"
depending which is required.
Michael Kay