HXT игнорирует HTML DTD, заменяя его XML DTD
У меня возникли проблемы с выяснением, почему 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 игнорирует мою декларацию типа документа, но это единственное понимание, которое у меня есть. Может кто-нибудь, пожалуйста, протяните мне руку? Заранее спасибо!
1 ответ
У вас две проблемы
HXT принимает только один из следующих трех типов документов html
<!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