Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Undefined Entity -  

972 views
Skip to first unread message

kieroneil

unread,
Jul 11, 2007, 4:56:03 PM7/11/07
to
I have a simple xml file that uses an XSL file to present some of the
data as HTML.

The problem is that when I try to view it I get this error in IE:

Reference to undefined entity 'nbsp'. Error processing resource
'file:///Y:/guiprods/INTRFACE/Reverse Mortgage/WebPage/RMPr...

<td nowrap="nowrap">&nbsp;</td>
------------------------------------------^

Is there something that I have to put in the header of the HTML so
that it recognizes the &nbsp; attribute.

When I take out the XSL wrapper I can view the document as an HTML
file with no problem. I only get this when it's accessed through the
XML document.

Email me at kier...@yahoo.com if you would like soft-copies of the
xml and xsl files.

Thanks,
Kier
Jacksonville, FL

Martin Honnen

unread,
Jul 12, 2007, 7:54:27 AM7/12/07
to
kieroneil wrote:
> I have a simple xml file that uses an XSL file to present some of the
> data as HTML.
>
> The problem is that when I try to view it I get this error in IE:
>
> Reference to undefined entity 'nbsp'. Error processing resource
> 'file:///Y:/guiprods/INTRFACE/Reverse Mortgage/WebPage/RMPr...
>
> <td nowrap="nowrap">&nbsp;</td>
> ------------------------------------------^
>
> Is there something that I have to put in the header of the HTML so
> that it recognizes the &nbsp; attribute.

If you parse an HTML document with an HTML parser then it knows about
nbsp but a general XML parser does not know that entity unless it is
declared in a DTD. Use &#160; instead of &nbsp;. Or write a DTD defining
the entity nbsp and make sure your XSLT processor uses an XML parser
that processes DTDs.

--

Martin Honnen --- MVP XML
http://JavaScript.FAQTs.com/

Brandon Gano

unread,
Jul 16, 2007, 12:34:06 PM7/16/07
to
Another solution is to use the following in your XSL:

<xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>

I can't think of an example of a situation where this method would be better
than using &#160;, but it works just the same.

-bgano

Julian F. Reschke

unread,
Jul 17, 2007, 3:05:26 AM7/17/07
to
Brandon Gano wrote:
> Another solution is to use the following in your XSL:
>
> <xsl:text disable-output-escaping="yes">&amp;nbsp;</xsl:text>
>
> I can't think of an example of a situation where this method would be
> better
> than using &#160;, but it works just the same.

It relies on an optional XSLT feature, and thus only will work
*sometimes*. Don't do it.

Best regards, Julian

kieroneil

unread,
Jul 17, 2007, 11:59:22 AM7/17/07
to
Oh great, I did a find & replace and it seems to have resolved that
issue now the error says: Keyword xsl:stylesheet may not contain
html.

When I try to run it through XMLSpy the error I get is "The Child
element of [xsl:]stylesheet cannot have a null namespace URI"

My stylesheet looks like this:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/
Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://
www.w3.org/2005/02/xpath-functions" xmlns:xdt="http://www.w3.org/
2005/02/xpath-datatypes">
<xsl:template match="/"/>
<html>
Lots of stuff
</html>
</xsl:stylesheet>

Where did I go wrong ?

Martin Honnen

unread,
Jul 17, 2007, 12:10:10 PM7/17/07
to
kieroneil wrote:
> Oh great, I did a find & replace and it seems to have resolved that
> issue now the error says: Keyword xsl:stylesheet may not contain
> html.
>
> When I try to run it through XMLSpy the error I get is "The Child
> element of [xsl:]stylesheet cannot have a null namespace URI"
>
> My stylesheet looks like this:
> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/
> Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"
> xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://
> www.w3.org/2005/02/xpath-functions" xmlns:xdt="http://www.w3.org/
> 2005/02/xpath-datatypes">
> <xsl:template match="/"/>
^^^

> <html>
> Lots of stuff
> </html>
> </xsl:stylesheet>

You need to put the result elements (e.g html and its contents) inside
of the xsl:template:
<xsl:template match="/">
<html>
...
</html>
</xsl:template>

kieroneil

unread,
Jul 20, 2007, 4:47:50 PM7/20/07
to
Thanks Martin,
It turns out that I had my XSL Template element like this:

<xsl:template match="/"/>

That ending slash messed everything up. I took it out and then put an
ending element at the end and it works perfectly now.

Had me stumped.

0 new messages