Hi,
1. Outputting character entities.
There doesn't seem to be an easy way to output "©" (in
attributes)
and other numeric entities. © is unchanged, ©
becomes the
(c) character itself. For instance, I want to output exactly
this sequence
of characters:
<meta name="copyright" content="© 2003"/>
Why? It will make no difference to the program reading your document whether
it's a character or a character reference. Anyhow, you could set the xsl:output
to use encoding "ASCII" (provided your XSLT engine recognizes that encoding) to
force non-ASCII characters to be output as character entities.
2. Forcing a close tag for elements
Mozilla, Opera and IE choke on <script/>.
If you serve you XHTML documents as application/xhtml+xml, Mozilla's probably
happy with <script/>.
Textarea is another one.
The trick to do "<script><xsl:text>
</xsl:text></script>" seems like such a hack. Is there a better way?
Not a better one, but you can also use e.g.
<script type="text/javascript" src="foo.js">//</script>
or
<script type="text/javascript" src="foo.js">
<xsl:comment />
</script>
3. html namespace attribute.
Consider this:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<xsl:call-template name="headers"/>
</head>
</html>
All the elements that the template headers inserts get an extraneous
xmlns="" attribute. What is the best way to deal with that?
Well, different XSLT engines might handle it differently, but you could try
declare the XHTML namespace in the xsl:stylesheet instead of the Literal Result
Elements, and then not copy/generate the namespace nodes.
Cheers,
Jarno - Skinny Puppy: Nature's Revenge
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list