The problem is the content-type header that uPortal sends the browser is text/html which means the browser is not treating the page as XHTML but plain old HTML instead. This has been fine in the past because uPortal had custom written SAX->text serializer that was doing special handling for the 9 html elements that should be self-closing tags which made things work correctly under the HTML 4.01 parsers.
Now in trunk the new serializer is putting out actual XML compliant markup for the portal theme and none of the tags are self-closing. This wouldn't be a problem except that unless you are actually sending the application/xhtml+xml content-type header the browser is still treating it as HTML 4.01 and the 9 elements listed below are expected to be self closing while all other elements are not.
I tried setting uPortal's content-type header to application/xhtml+xml but as expected it breaks because very few of the portlets included in uPortal actually output valid XML and there is _nothing_ uPortal can do to fix that. If I disable portlet rendering the theme is valid XHTML but not having portlets render isn't really useful for a portal. So I'm wondering what people's opinions/views are on this. Since we're stuck sending the text/html content-type should we also change our DTD declaration to specify HTML 4.01 transitional instead of XHTML 1.0?
Unfortunately this means we'll have to have at least a little bit of a custom StAX->text serializer to handle the HTML tags that need to be self-closing (IE is the only browser that really barfs on this) but I think it is a reasonable task.
HTML Tags that need to be self-closing. <area /> <base /> <basefont /> <br /> <hr /> <input /> <img /> <link /> <meta />
smime.p7s
Description: S/MIME Cryptographic Signature
