How can I insert
Into an XSLT stylesheet, I keep getting this error:
XML Parsing
Try to use
<xsl:text> </xsl:text>
But it depends on XSLT processor you are using: the XSLT spec does not require XSLT processors to convert it into "
".
When you use the following (without disable-output-escaping
!) you'll get a single non-breaking space:
<xsl:text> </xsl:text>
Use this
<xsl:text disable-output-escaping="yes">&</xsl:text>nbsp;
edit: Downvoters should probably validate that this works first (it does, and is the most general solution to the problem.)
In addition to victor hugo's answer it is possible to get all known character references legal in an XSLT file, like this:
<!DOCTYPE stylesheet [
<!ENTITY % w3centities-f PUBLIC "-//W3C//ENTITIES Combined Set//EN//XML"
"http://www.w3.org/2003/entities/2007/w3centities-f.ent">
%w3centities-f;
]>
...
<xsl:text>& –</xsl:text>
There is also certain difference in the result of this approach as compared to <xsl:text disable-output-escaping="yes">
one. The latter is going to produce string literals like
for all kinds of output, even for <xsl:output method="text">
, and this may happen to be different from what you might wish... On the contrary, getting entities defined for XSLT template via <!DOCTYPE ... <!ENTITY ...
will always produce output consistent with your xsl:output
settings.
And when including all character references, it may be wise to use a local entity resolver to keep the XSLT engine from fetching character entity definitions from the Internet. JAXP or explicit Xalan-J users may need a patch for Xalan-J to use the resolver correctly. See my blog XSLT, entities, Java, Xalan... for patch download and comments.
Although answer has been already provided by @brabster and others.
I think more reusable solution would be:
<xsl:variable name="space"> </xsl:variable>
...
<xsl:value-of select="$space"/>
You might want to add the definition for this entity in the beginning of the file (below xml declaration):
<!DOCTYPE stylesheet [
<!ENTITY nbsp " " >
]>
Also you can add more entities such as Ntilde, Aacute, etc.