Hi Pier --
Pier Fumagalli wrote:
> I basically fixed the GARBAGE serializers to work now cleanly as cocoon
> serializers, simple job, but as far as we could see, the new ones work
> much _MUCH_ better than Xalan's own (they might be slower, but they're
> more compliant).
I've been using your XHTMLSerializer as a Cocoon serializer for a little
while now on the project I'm developing, and I can report that it has
been working very well (although I have not yet tested it in
production). Since I am very concerned with the way the XHTML looks, I
added the following features to the XHTMLSerializer and XMLSerializer:
- Option to omit xml declaration
- Option to omit xml namespace declaration
- Option to omit meta tag
- Explicitly set which namespaces are declared on the root element, and
prevent these namepsaces from being declared later in the document.
- Option to declare other namespaces
- Intending, including the ability to indent some elements, and put a
break after some elements. This lets you have a document that looks like:
<html>
<head>
<title>this is the title</title>
</head>
<body>
<div>
<p>a paragraph</p>
</div>
</body>
</html>
I would also like to do some work with whitespace minimization, but
haven't really looked into it yet.
- Option to enable compatibility mode as described in:
http://www.w3.org/TR/xhtml1/#guidelines
This determines the treatment of empty elements that are not declared as
EMPTY, as you already implemented. It would be nice to extend this to
include all of the compatibility guidelines. I also tried implementing
an "auto" mode that could detect if compatible content should be served
(e.g. if the browser is IE), but could not figure out how to 1) read the
User-Agent in the serializer, or 2) change the content type of the
response on a per-request basis.
To make a Cocoon serializer out of the XHTMLSerializer, I took the
simple solution and just wrapped it around a new AbstractSerializer
subclass. There probably is a better way.
You are absolutely welcome to all of this code that I have added (there
really wasn't much added thanks to your clean design). I was planning
on cleaning this up and offering it back to the community, but I have
not had the time.
Thanks again for the code!
cheers,
-steve
|