[XSLT] How to add a non-breaking space to HTML output?

Okay, simple problem. I have an XML file linked to an XSL file. The XML file will be opened in Internet Explorer 6 and this shoudl result in a client-side transformation of a small data file with a small transformation file into what would be a very large HTML page. The HTML output is quite big because of the use of colors, tables and lots of formatted fields. And because the internet connection and server are a bit slow while the clients are pretty fast, I need this client-side transformation. Fortunately, IE does this automatically.
However, there will also be some users who need the XML file to be translated server-side because they use either a different webbrowser or an older webbrowser that doesn't support XML. These users might not even have any Unicode support on their system.

However, my problem is that I need   tags in the HTML output too. If I just use   then IE will not transform my XML file but just report an error. I tried to use   but IE then generates   instead of the required blank space. I could use   and this seems to give the correct result but it's still not exactly what I need.
Sure, the HTML output will convert   to a NBSP but it generates it as a unicode character and not as the   tag. I can't allow the NBSP to be hardcoded in the output as an Unicode character because some people would just see ' ' in their output. Yes, a funny A followed by a space... So, for those users who need the pre-translated file I need to have   in my output file.

Now, how to do this with XSLT??? How to keep unicode out of my output file?
LVL 17
Wim ten BrinkSelf-employed developerAsked:
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

x
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

sybeCommented:
the xml for non-breaking space is   
i have never seen the problem as you describe. but you use " " maybe that makes the difference?
0
Wim ten BrinkSelf-employed developerAuthor Commented:
The problem is quite simple, actually. I can't generate the &nnbsp; tag in any way by using XSLT... IE hates it when I use   in my xslt file since it considers it an illegal tag. And according to the XML standard IE is right too.   is not allowed. But I want either   or &30160; to be generated in my output, instead of the NBSP character. And that's my problem.
It is fun, btw. If I use & then the output will contain & instead of &. But when I use   the translator fails. In other words, it's not translated correctly. It just happens to be okay when the webbrowser can handle unicode characters...
0
sparkplugCommented:
Hi,

Make sure you have <xsl:output method="html"/> at the top of your XSLT (under the <xsl:stylesheet>) tag. You can then use &#160; or &#xA0; and these will be translated to &nbsp;

Alternatively you can use &nbsp; in your XSLT after putting <!DOCTYPE xsl:stylesheet [<!ENTITY nbsp "&#160;">]> at the top of the file.

Another less elegant solution would be to use <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text> or <xsl:text disable-output-escaping="yes">&amp;#160;</xsl:text>.

For more info and explanations see this FAQ: http://www.dpawson.co.uk/xsl/sect2/nbsp.html

Hope this helps,

>S'Plug<
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Wim ten BrinkSelf-employed developerAuthor Commented:
I have to admit, <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text> isn't pretty but does the trick quite well. :) Thanks.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
XML

From novice to tech pro — start learning today.