2014-11-05 24 views
5

Mam trochę problemów z ustaleniem, dlaczego HXT zastępuje moje DTD. Po pierwsze, tutaj jest mój plik wejściowy być analizowany:HXT ignoruje HTML DTD, zastępując go XML DTD

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

i jest to wyjście, które mam:

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

Wreszcie, tutaj jest uproszczoną wersją strzałki używam:

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 

Przepraszam za komentarze - bawiłem się z różnymi kombinacjami konfiguracji. Po prostu nie mogę dostać HXT do nie bałagan z DTD, nawet z withSubstDTDEntities no, withValidate no, itp. Otrzymuję ostrzeżenie, że HXT ignoruje moją deklarację doctype, ale to tylko odrobina wglądu mam. Czy ktoś może mi pomóc? Z góry dziękuję!

Odpowiedz

4

masz dwa problemy

HXT akceptuje tylko jedno z następujących trzech doctypes 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"> 

stosując jedną z nich będzie pozbyć się ostrzeżenia o ignorowanie DTD.

drugie, dodaj następującą opcję writeDocument

withAddDefaultDTD yes