嘿,我嘗試驗證我的HTML頁面官方DTD:XHTML 1.1驗證錯誤: 「參數實體 'XHTML-inlstyle.mod' 引用自身」
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(MessageBody));
ms.Position = 0;
XmlReaderSettings settingsReader = new XmlReaderSettings();
settingsReader.DtdProcessing = DtdProcessing.Parse;
settingsReader.ValidationType = ValidationType.DTD;
MyUrlResolver resolver = new MyUrlResolver();
settingsReader.XmlResolver = resolver;
XmlReader reader = XmlReader.Create(ms, settingsReader);
while(reader.Read()){}
和定製XmlUrlResolver:
class MyUrlResolver : System.Xml.XmlUrlResolver
{
public MyUrlResolver()
{ }
public override object GetEntity(Uri absoluteUri, string role, Type ofObjectToReturn)
{
if (File.Exists(System.Web.Hosting.HostingEnvironment.MapPath("~/dtd/xhtml11.dtd")))
{
absoluteUri = new Uri(System.Web.Hosting.HostingEnvironment.MapPath("~/dtd/xhtml11.dtd"));
}
return base.GetEntity(absoluteUri, role, ofObjectToReturn);
}
public override Uri ResolveUri(Uri baseUri, string relativeUri)
{
baseUri = new Uri(System.Web.Hosting.HostingEnvironment.MapPath("~"));
relativeUri = "dtd/xhtml11.dtd";
return base.ResolveUri(baseUri, relativeUri);
}
}
德寧讀取XML驗證時,我得到異常:這裏發生
Parameter entity 'xhtml-inlstyle.mod' references itself. Line 111, position 21.
錯誤:
<!-- Inline Style Module ........................................ -->
<!ENTITY % xhtml-inlstyle.module "INCLUDE" >
<![%xhtml-inlstyle.module;[
<!ENTITY % xhtml-inlstyle.mod
PUBLIC "-//W3C//ELEMENTS XHTML Inline Style 1.0//EN"
"http://www.w3.org/MarkUp/DTD/xhtml-inlstyle-1.mod" >
%xhtml-inlstyle.mod;]]>
我不明白爲什麼官方dtd是錯的:/我該怎麼辦?
@DevNull代碼暗示它是XHTML 1.1,它是模塊化的。 – jasso 2011-12-16 21:22:51