I think you just want <xsl:template match="*"/> <xsl:copy> <xsl:apply-templates/> </xsl:copy> </xsl:template>
This answer is the best, I think.
The problem with normalizing space on all text nodes is that it turns
<TITLE>This is <S>not</S> a normal title</TITLE>
<TITLE>This is<S>not</S>a normal title</TITLE>
which won't do.
The alternative to David's translate() -- thinkable in some situations, and having the virtue of collapsing runs of spaces -- is to normalize, then put back spaces around inline elements like <S> above. The problem with this technique is knowing when to put them back and when not to: sometimes the heuristics can get pretty hairy, and sometimes (for example if you're using subscripts to do things like H<sub>2</sub>O) impossible.
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format