meyerweb.com

Skip to: site navigation/presentation
Skip to: Thoughts From Eric

Archive: 13 June 2003

Transformed Transforms

Thanks to the power of the Internet, I am now less annoyed at XSLT. Chriztian Steinmeier wrote to suggest I try xml:space, something I hadn’t previously come across. So the template now looks like this:

<xsl:template match="/archive" xml:space="preserve">
<div id="thoughts">
<h3>
<span>Thoughts From Eric</span>
</h3>
<xsl:apply-templates select="//entry" />
</div>
</xsl:template>

Ah, much better! On the other hand, I discovered when I applied xml:space to another portion of my XSLT, it broke an xsl:choose structure. I had to split one template up into three to sneak around that particular limitation, which some would say is a strength of the technology, since it forced me to further modularize my template.

If I’d been sufficiently determined to avoid splitting up that particular template, I could have used an idea sent in by Hugo Lopes. He wrote to suggest that I could use custom-defined entities, like so:

<!DOCTYPE stylesheet [
<!ENTITY sp "<xsl:text> </xsl:text>">
<!ENTITY cr "<xsl:text>
</xsl:text>">
]>
<xsl:template match="/archive">
<div id="thoughts">&cr;
<h3>&sp;<span>Thoughts From Eric</span>&sp;</h3>&cr;
<xsl:apply-templates select="//entry" />&cr;
</div>
</xsl:template>

It’s a lot less ugly than what I had yesterday, I’ll agree, but in this particular situation xml:space is a better route for me to take. Still, it’s an interesting solution to the problem, and a technique I’ll definitely keep in mind for future XSLT projects. Thanks to Hugo and Chriztian for the help!

June 2003
SMTWTFS
   
1234567
891011121314
15161718192021
22232425262728
2930  

Archives

Feeds

Extras