How to force HTML (rather than XML) output from Haskell XML Toolbox?
Hi, I am developing a code that reads a HTML page (template), modifies it (adds some stuff) and then writes the output file which is to be HTML, not XML. I use hxt-5.3 (but I may upgrade if necessary). It is desired to preserve the original HTML template pieces maximally close to the original. But output appears to be closer to XML rather than HTML. The code I use: ==================== let attrs = [(a_parse_html, "1"), (a_output_xml, "0"), (a_encoding, utf8)] (res, err, rc) <- getXmlDocument attrs (fromJust $ tmplPath dopt) putXmlDocument attrs (fromJust $ outPath dopt) res ===================== for this input HTML file: ===================== <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Empty Page Template for Haskell Applications</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> </body> </html> ===================== outputs: ===================== <html> <head> <title>Empty Page Template for Haskell Applications</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> </head> <body> </body> </html> ===================== which is close but not exactly as wanted. The <meta> (and I expect other tags like <br> will have the same) tag has closing slash as it would have in XML (XHTML), but not in HTML. Also the DOCTYPE has been lost. Is this something hxt is not able to provide, or just a bug fixed since 5.3? Or should I write my own output code (because I am guessing, hxt functionality regarding manipulation over XML trees is sufficient for what I need)? Or should I use another package? -- Dimitry Golubovsky Anywhere on the Web
which is close but not exactly as wanted. The <meta> (and I expect other tags like <br> will have the same) tag has closing slash as it would have in XML (XHTML), but not in HTML. Also the DOCTYPE has been lost.
I've had similar problems outputting XHTML. For example, naive output (correct according to the definition of XML and (X)HTML) breaks in IE because IE doesn't like <link ... /> or <script ... /> tags, instead it wants <link ...></link> and <script ...></ script>. Pages with correct XHTML, but with these "unhappy" tags in the HTML <head>, load in IE as a blank page! To make pages that will load in 90% of browsers, I've always generated my own (X)HTML with special pretty printers that know these caveats and a few others. Jared. On 8/30/06, Dimitry Golubovsky <golubovsky@gmail.com> wrote:
Hi,
I am developing a code that reads a HTML page (template), modifies it (adds some stuff) and then writes the output file which is to be HTML, not XML.
I use hxt-5.3 (but I may upgrade if necessary).
It is desired to preserve the original HTML template pieces maximally close to the original.
But output appears to be closer to XML rather than HTML.
The code I use:
====================
let attrs = [(a_parse_html, "1"), (a_output_xml, "0"), (a_encoding, utf8)]
(res, err, rc) <- getXmlDocument attrs (fromJust $ tmplPath dopt)
putXmlDocument attrs (fromJust $ outPath dopt) res
=====================
for this input HTML file:
=====================
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Empty Page Template for Haskell Applications</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> </head> <body> </body> </html>
=====================
outputs:
=====================
<html> <head> <title>Empty Page Template for Haskell Applications</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> </head> <body> </body> </html>
=====================
which is close but not exactly as wanted. The <meta> (and I expect other tags like <br> will have the same) tag has closing slash as it would have in XML (XHTML), but not in HTML. Also the DOCTYPE has been lost.
Is this something hxt is not able to provide, or just a bug fixed since 5.3? Or should I write my own output code (because I am guessing, hxt functionality regarding manipulation over XML trees is sufficient for what I need)? Or should I use another package?
-- Dimitry Golubovsky
Anywhere on the Web _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
-- http://www.updike.org/~jared/ reverse ")-:"
Hi
which is close but not exactly as wanted. The <meta> (and I expect other tags like <br> will have the same) tag has closing slash as it
Just a bit of info on the br, IE treats <br/> as a line break, but <br></br> as 2 line breaks. Just in case you go for the "obvious" solution of always expanding out <a/> to <a></a>, <br> won't work. Thanks Neil
Just a bit of info on the br, IE treats <br/> as a line break, but <br></br> as 2 line breaks. Just in case you go for the "obvious" solution of always expanding out <a/> to <a></a>, <br> won't work.
but <br /> with a space works. And this applies to most tags with this behavior---the space helps, and it validates with W3C XHTML Validator. Jared. -- http://www.updike.org/~jared/ reverse ")-:"
participants (3)
-
Dimitry Golubovsky -
Jared Updike -
Neil Mitchell