The problem I ran into is this. I want to serve my pages as XHTML, so I've been using the XMLSerializer with XHTML doctypes similar to the way it is set up in the stock root sitemap. It is also well known that standards-compliant browsers like Mozilla will only render XHTML properly if sent with the "application/xhtml+xml" content type, where Internet Explorer will not accept this, and requires you to send it as "text/html". This is easily solvable with some pipeline magic I posted about [2] -- I have another solution to this using a Tomcat Filter that I will post shorty.
Next I was trying to use a textarea on cforms. No matter what I did, this would render incorrectly on Internet Explorer when the textarea is empty. Because I'm using the XMLSerializer, an empty textarea gets rendered as:
<textarea name="foo" rows="10" cols="10" />
And this is why: no combination of doctypes, content types, filename extensions, etc, will make this work... because Internet Explorer just does not understand XHTML! When Internet Explorer encounters an XHTML page, it still parses in "tag soup" mode and just discards XHTML-isms. Ian Hickson does a good job explaining this in his "Sending XHTML as text/html Considered Harmful." [3] This strategy works pretty well, but fails miserably on the empty textarea element.
So as things stand right now, if someone wants to use a textarea in their forms and serve them as XHTML, they will run into problems on Internet Explorer. I think this is a problem since it is *possible* to do this -- a textarea rendered with an explicit closing tag will render properly on Internet Explorer and will be valid XHTML. However, I do not believe this is currently possible with Cocoon.
I believe the solution lies in extending the default XML stream writer that comes with Xalan (org.apache.xml.serializer.ToXMLStream). A new output setting could be added that provides a list of element names that should never be minimized when they are empty. This would allow the same XHTML pages that work on standards-compliant browsers to render properly in Internet Explorer.
It isn't clear to me if a new XML stream writer can be added to Xalan without modifying the Xalan source, but the actual coding does not look very hard.
What do you think?
cheers, -steve
[1] http://marc.theaimsgroup.com/?m=107999114518402 [2] http://marc.theaimsgroup.com/?m=108001750400120 [3] http://www.hixie.ch/advocacy/xhtml
