2014-11-05 29 views
5

我在查找爲什麼HXT替換我的DTD時遇到了一些問題。首先,這裏要分析我的輸入文件:HXT忽略HTML DTD,將其替換爲XML 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到而不是與DTDs混淆,甚至與withSubstDTDEntities no,withValidate no等等。我得到一個警告,說HXT忽略了我的文檔類型聲明,但這是我唯一的洞察力。任何人都可以請借我一隻手嗎?先謝謝你!

回答

4

你有兩個問題

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