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 игнорирует мое объявление типа doctype, но это единственное понимание у меня есть. Кто-нибудь может мне помочь? Заранее спасибо!


person Athan Clark    schedule 05.11.2014    source источник


Ответы (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
person jamshidh    schedule 05.11.2014