Re: [xml] htmlDocDumpMemory() vs xmlDocDumpMemory()



Hi Rush,

Here is a sample of rendered output, using htmlDocDumpMemory():

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

Ok, so here is the line that causes your troubles. This doctype puts
the document in quirks mode. Switching to the following version (the
strict HTML 4.0 doctype) should solve your issue.
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN">

It may be even better to drop the end and use instead
<!DOCTYPE HTML>

It is what HTML5 requires (see
http://www.whatwg.org/specs/web-apps/current-work/#the-doctype).

<html xmlns="http://www.w3.org/1999/xhtml"; lang="en-US" xml:lang="en-US">
<!--Template match for /x:html/x:head-->
<head><base
href="file://localhost//Users/rmanbert/development/libxmlRendering/client/pace/demos/iml/imlDemoV0_1/">
<!--No imltemplate file, or no x:imltemplatehead.-->
<!--Processing $docHeadContent directly-->
<title>RenderingTestPage</title></head>
<!--Template match for /x:html/x:body-->
<body><!--No imltemplate file, or no x:imltemplatebody.-->
<!--Processing $docBodyContent directly-->
<p>Line 1</p><i>Line 2</i><p> Line 3: This comes before a XML-legal "br"
element<br></br>Line 4: And this comes immediately after it</p><img
src="file://localhost//Users/rmanbert/development/libxmlRendering/client/pace/demos/iml/imlDemoV0_1/images/engChurchill.jpg"></img></body>
</html>

I didn't clean it up at all, so it has a bunch of trace output that my XSL
processing inserts. I have a doctype that seems to be inserted by libxml. My
doctype declaration in the XHTML source specifies my own DTD, which is an
extension of XHTML. I also tried changing it to this:
       <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"DTD/xhtml1-strict.dtd" >
but the rendered output has the same doctype declaration shown above,
whether I use htmlDocDumpMemory() or xmlDocDumpMemory().

I just looked at the libxml documentation and I did not find a way to
set the doctype declaration. It may be a good enhancement especially
for HTML document.

I tried loading this from a file with Safari and Firefox on the Mac and IE
and Firefox on Windows. They all treat the </br> as <br>, and output an
extra blank line, but only Safari said anything about it on the console.

So it is not a bug but a compatibility hack :-)

I'm afraid that I lied about the <p></p>. They are fine with that. However,
Safari also complained about the </img>, while no one else does (but it
displayed the image).

As long as it is only warning, it is fine.


[removed some text and the xml version]

And here is the output of diff xml html:

1,2c1
< <?xml version="1.0" encoding="utf-8" standalone="yes"?>
< <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "">
---
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
5c4,5
< <head><base
href="file://localhost//Users/rmanbert/development/libxmlRendering/client/pace/demos/iml/imlDemoV0_1/"/><!--No
imltemplate file, or no x:imltemplatehead.-->
---
<head><base
href="file://localhost//Users/rmanbert/development/libxmlRendering/client/pace/demos/iml/imlDemoV0_1/">
<!--No imltemplate file, or no x:imltemplatehead.-->
11c11
< <p>Line 1</p><i>Line 2</i><p> Line 3: This comes before a XML-legal "br"
element<br/>Line 4: And this comes immediately after it</p><img
src="file://localhost//Users/rmanbert/development/libxmlRendering/client/pace/demos/iml/imlDemoV0_1/images/engChurchill.jpg"/></body>
---
<p>Line 1</p><i>Line 2</i><p> Line 3: This comes before a XML-legal "br"
element<br></br>Line 4: And this comes immediately after it</p><img
src="file://localhost//Users/rmanbert/development/libxmlRendering/client/pace/demos/iml/imlDemoV0_1/images/engChurchill.jpg"></img></body>


There is a few differences: the empty tags that get split and the XML
declaration. It is mostly a difference at the browser's end on how to
handle HTML vs XHTML.

I see an issue with the doctype declaration for the XHTML document
which is set to an HTML one.

To me, the XHML output looks to be better behaved and it sounds like your
recommendation would be to keep my output as XHTML.

If you just want to test your output in a browser then XHTML is fine
(which is what I thought you were trying) and will not require much
effort so I would go for it.
If you need to ship for all browsers, then it will not do as Internet
Explorer does not support XHTML.

Regards,
Julien



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]