5

我在弄清楚为什么 HXT 正在取代我的 DTD 时遇到了一些麻烦。首先,这是我要解析的输入文件:

<!DOCTYPE html>
<html>
  <head>
    <title>foo</title>
  </head>
  <body>
    <h1>foo</h1>
  </body>
</html>

这是我得到的输出:

<?xml version="1.0" encoding="US-ASCII"?>
<html>
  <head>
    <title>foo</title>
  </head>
  <body>
    <h1>foo</h1>
  </body>
</html>

最后,这是我正在使用的箭头的简化版本:

start (App src dest) = runX $
                         readDocument [ withValidate no
                                      , withSubstDTDEntities no
                                      , withParseHTML yes
                                      --, withTagSoup
                                      ]
                                      src
                         >>>
                         this
                         >>>
                         writeDocument [ withIndent yes
                                       , withSubstDTDEntities no
                                       , withOutputHTML
                                       --, withOutputEncoding "UTF-8"
                                       ]
                                       dest

对于这些评论,我深表歉意——我一直在玩弄不同的配置组合。我似乎无法让 HXT与 DTD 混淆,即使使用withSubstDTDEntities no,withValidate no等。我收到警告说 HXT 忽略了我的 doctype 声明,但这是我仅有的一点见解。谁能帮我一把?先感谢您!

4

1 回答 1

4

你有两个问题

HXT 只接受以下三种 html doctype 之一

<!DOCTYPE html 
 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
 "DTD/xhtml1-strict.dtd">

<!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "DTD/xhtml1-transitional.dtd">

<!DOCTYPE html
 PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
 "DTD/xhtml1-frameset.dtd">

使用其中之一将消除有关忽略 dtd 的警告。

二、在writeDocument中添加如下选项

withAddDefaultDTD yes
于 2014-11-05T19:02:35.653 回答