Re: xHTML problem again
Petr Stehlik <[email protected]>
| Newsgroups | gmane.comp.java.enhydra.xmlc,gmane.comp.java.enhydra.general |
|---|---|
| Message-ID | <[email protected]> |
New information below:
On Út, 2003-04-01 at 13:58, Petr Stehlik wrote:
> I have been trying to compile and produce valid XHTML 1.0 with Enhydra
> 5.0 for some time. I thought that everything was working OK but recently
> I tried to use my own URLRewriter and it didn't work. So I traced it
> down to
>
> private static DocumentInfo BaseDOMFormatter:findDocumentInfo(Document
> document)
>
> This function checks the document (which is
> org.enhydra.xml.xhtml.dom.xerces.XHTMLDocumentImpl) and finds out that
> it's neither istanceof DocumentInfo nor instanceof XMLObjectLink. Thus
> this function returns null as the DocumentInfo and thanks to that the
> URLRewriter is ignored.
After several more hours of tracing I found out how the whole logic
works and I see at least two places that I could patch to fix the
problem. Now I'd need your advice which of the places is the correct
one:
1) DOMOps:getDocument() contains the following code:
if (node instanceof XMLObject) return node.getDocument()
else if (node instanceof Document) return node;
here I think that the XHTML should be treated more like a standard HTML
(which I believe goes the "instanceof Document" way) so perhaps
switching the order of the 'if' and 'elseif' would help?
2) the node.getDocument above calls XMLObjectImpl:getDocument() and that
one returns the fDocument that was created by XMLC in the compiled HTML
by the following functions:
org.enhydra.xml.xhtml.dom.xerces.XHTMLDocumentImpl document =
buildSubDocument();
setDocument(document,"text/html", "UTF-8");
The buildSubDocument() calls the following functions:
org.apache.xerces.dom.DocumentTypeImpl docType =
(org.apache.xerces.dom.DocumentTypeImpl)fDOMFactory.createDocumentType("html", "-//W3C//DTD XHTML 1.0 Transitional//EN", "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", null);
org.enhydra.xml.xhtml.dom.xerces.XHTMLDocumentImpl document =
(org.enhydra.xml.xhtml.dom.xerces.XHTMLDocumentImpl)fDOMFactory.createDocument("http://www.w3.org/1999/xhtml", "html", docType);
Does the xerces parser support the DocumentInfo interface at all?
Petr