Недопустимый рендеринг документа в формате HTML с помощью XmlReader - PullRequest
1 голос
/ 25 января 2012

У меня есть документ

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<body>
</body>
</html>

Когда я использую этот код в IDispatchMessageFormatter с кодом для генерации HTML-страницы:

XmlReaderSettings settingsReader=new XmlReaderSettings();
settingsReader.ProhibitDtd=false;
                        settingsReader.DtdProcessing=DtdProcessing.Parse;
settingsReader.ValidationEventHandler+=new System.Xml.Schema.ValidationEventHandler(settingsReader_ValidationEventHandler);
XhtmlUrlResolver resolver=new XhtmlUrlResolver();
                        Uri baseUri=new Uri("http://localhost/App_Data/dtd");

                        Uri fulluri=resolver.ResolveUri(baseUri,"xhtml11.dtd");

                        // Get a stream object containing the XSL file
                        Stream s=(Stream)resolver.GetEntity(fulluri,null,typeof(Stream));

                        //Read the stream object displaying the contents of the XSL file
                        settingsReader.XmlResolver=resolver;

                        MemoryStream ms=new MemoryStream(Encoding.UTF8.GetBytes((MessageBody)));
                        ms.Position=0;

                        XmlReader reader=XmlReader.Create(ms,settingsReader);
                        MessageResponse=Message.CreateMessage(messageVersion,string.Format("ServiceModel/IService/{0}",Operation),reader);

Тип страницы HTML генерируется как

<html version="-//W3C//DTD XHTML 1.1//EN" xmlns="http://www.w3.org/1999/xhtml">

Я не могу найти способ, чтобы страница содержала doctype хорошим способом:

1 Ответ

0 голосов
/ 29 февраля 2012

Единственным решением является отправка сообщения в двоичном виде. Я написал это в блоге http://netmajor.wordpress.com/2012/01/27/jak-przeslac-xhtml-wraz-z-doctype-w-obiekcie-message-za-pomoca-wcf/

...