Re: Enhydra: Re: xHTML problem again
David Li <[email protected]>
| Newsgroups | gmane.comp.java.enhydra.xmlc,gmane.comp.java.enhydra.general |
|---|---|
| Message-ID | <[email protected]> |
DocumentInfo is a XMLC interface, not a standard DOM. There is a way to
create DocumentInfo from a DOM Document object. It's used
GenericLinkedHTMLDocument to wrap the Document object and I think
GenericLinkedHTMLDocument implements the DocumentInfo interface.
David
On Wednesday, Apr 2, 2003, at 16:34 Asia/Shanghai, Petr Stehlik wrote:
> 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.createD
> ocument("http://www.w3.org/1999/xhtml", "html", docType);
>
> Does the xerces parser support the DocumentInfo interface at all?
>
> Petr
>
>
> _______________________________________________
> Enhydra mailing list
> [email protected]
> http://www.enhydra.org/mailman/listinfo.cgi/enhydra