我在弄清楚为什么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
我为评论道歉 - 我一直在玩弄不同的配置组合。即使使用withSubstDTDEntities no
,withValidate no
等,我似乎也无法让HXT与不混乱使用DTD。我收到警告说HXT忽略了我的doctype声明,但这是我唯一的洞察力。有人可以借给我一个手吗?提前谢谢!
答案 0 :(得分:4)
你有两个问题
HXT只接受以下三种html doctypes之一
<!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