如果您想了解HTML的DTD文档声明和html中dtdd的知识,那么本篇文章将是您的不二之选。我们将深入剖析HTML的DTD文档声明的各个方面,并为您解答html中dtdd的疑在这篇文章中,我们将为您
如果您想了解HTML 的 DTD 文档声明 和html中dt dd的知识,那么本篇文章将是您的不二之选。我们将深入剖析HTML 的 DTD 文档声明 的各个方面,并为您解答html中dt dd的疑在这篇文章中,我们将为您介绍HTML 的 DTD 文档声明 的相关知识,同时也会详细的解释html中dt dd的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- HTML 的 DTD 文档声明 (html中dt dd)
- ">"
- .net – 打开extern DTD(w3.org,xhtml1-transitional.dtd)时发生错误. 503服务器不可用
- 2 HTML简介&标签嵌套和并列关系&文档声明
- 的组成解释
HTML 的 DTD 文档声明 (html中dt dd)
DTD 文档声明:
-- 每一个不同版本的规范都有不同的 DTD 文档声明。
<!DOCTYPE html> 是 HTML5 的 DTD 文档声明,该文档声明是向下兼容的。
DTD 文档声明的注意点:
1、任何一个标准的 HTML 网页,第一行一定是 DTD 文档声明,也就是说 DTD 文档声明必须写在 HTML 的第一行
2、DTD 文档声明不区分大小写,下面两种书写都是可以的
<!DOCTYPE html>
<!doctype html>
3、DTD 文档声明不是一个标签
4、DTD 文档声明的作用是用于告诉浏览器我们的网页是用哪一个版本的标准编写的,以便方便浏览器解析和渲染,但是浏览器并不是完全依赖这个 DTD 文档声明,浏览器有一套属于自己的机制;
也就是说,DTD 文档声明不写网页也能正常运行,但是由于 W3C 规定第一行必须协商 DTD 文档声明,所以必须遵守规定,无论如何,我们都应该在第一行协商 DTD 文档声明。
补充了解:
单标签:<meta charset="UTF-8">
双标签:<head></head>、<body></body>、...
并列关系:兄弟 / 平级
嵌套关系:父子 / 上下级
" alt=""">
">"
"<!\\DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> "这句话 放在jsp页面居然会让我的js报错,并且会影响样式. 这是为什么啊?
很头疼。这种bug 不容易发现。 有大师指导一下吗?
.net – 打开extern DTD(w3.org,xhtml1-transitional.dtd)时发生错误. 503服务器不可用
该文档如下所示:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> .... </head> <body> ... </body> </html>
因为文档包含各种char实体(& nbsp;等等),所以我需要使用DTD,以便加载一个XmlReader.所以我的代码如下所示:
var s = File.OpenRead(filetoRead) var reader = XmlReader.Create(s,new XmlReaderSettings{ ProhibitDtd=false });
但是当我运行它时,它返回
An error has occurred while opening external DTD ‘07001’: The Remote Server returned an error: (503) Server Unavailable.
现在,我知道为什么我得到503错误. W3C explained it very clearly.
我看到“解决方法”,人们只是禁用DTD.这是ProhibitDtd = true可以做的,它消除了503错误.
但是在我的情况下,导致其他问题 – 应用程序没有获得实体定义,因此XML格式格式不正确.如何使用DTD进行验证,并获取实体定义,而不必打到w3.org网站?
我认为.NET 4.0有一个漂亮的内置功能来处理这种情况:XmlPreloadedResolver.但是我需要一个.NET 3.5的解决方案.
有关:
– java.io.IOException: Server returned HTTP response code: 503
解决方法
好的,所以.. XmlResolver.我创建了一个新类,派生自XmlResolver,并且覆盖了三个关键的事情:Credentials(set),ResolveUri和GetEntity.
public sealed class XhtmlResolver : XmlResolver { public override System.Net.ICredentials Credentials { set { throw new NotSupportedException();} } public override object GetEntity(Uri absoluteUri,string role,Type t) { ... } public override Uri ResolveUri(Uri baseUri,string relativeUri) { ... } }
关于这个东西的文件很简单,所以我会告诉你我学到了什么.这个类的操作是这样的:XmlReader首先调用ResolveUri,然后给定一个已解决的Uri,然后调用GetEntity.该方法预期返回类型t的对象(作为参数传递).我只看过它请求一个System.IO.Stream.
我的想法是使用csc.exe / resource选项将DTD的本地副本及其XHTML1.0的依赖项嵌入到程序集中,然后检索该资源的流.
private System.IO.Stream GetStreamForNamedResource(string resourceName) { Assembly a = Assembly.GetExecutingAssembly(); return a.GetManifestResourceStream(resourceName); }
很简单这从GetEntity()调用.
但我可以改善这一点.我们首先将它们以简明的方式嵌入DTD中,然后修改上述方法,如下所示:
private System.IO.Stream GetStreamForNamedResource(string resourceName) { Assembly a = Assembly.GetExecutingAssembly(); return new System.IO.Compression.GZipStream(a.GetManifestResourceStream(resourceName),System.IO.Compression.CompressionMode.Decompress); }
该代码打开嵌入式资源的流,并返回配置为解压缩的GZipStream.读者得到明文DTD.
我想做的只是解决Xhtml 1.0中DTD的URI.所以我写了ResolveUri和GetEntity来寻找这些特定的DTD,并且只对他们作出肯定的回应.
对于具有DTD语句的XHTML文档,流程是这样的;
> XmlReader调用ResolveUri与XHTML DTD的公共URI,它是“ – // W3C // DTD XHTML 1.0 Transitional // EN”.如果XmlResolver可以解析,它应该返回一个有效的URI.如果不能解决,应该抛出.我的实现只是抛出公共URI.
> XmlReader然后使用DTD的系统标识符调用ResolveUri,在这种情况下,它是“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”.在这种情况下,XhtmlResolver返回一个有效的Uri.
> XmlReader然后使用该URI调用GetEntity. XhtmlResolver抓住嵌入的资源流并返回.
对于依赖项 – xhtml_lat1.ent等也是一样的事情.为了使解析器工作,所有这些事情都需要嵌入.
是的,如果Resolver无法解析URI,那么预计会抛出异常.据我所知,这并没有正式记录.这似乎有点令人惊讶(严重违反the principle of least astonishment).如果相反,ResolveUri返回null,XmlReader将调用GetAntity的空URI,哪个….啊,是绝望的.
这对我有用它应该适用于从.NET处理XHTML的任何人.如果你想在你自己的应用程序中使用这个,grab the DLL.该zip包含完整的源代码.根据MS Public License许可.
您可以将其插入到XHTML中的XML应用程序中.使用它像这样:
// for an XmlDocument... System.Xml.XmlDocument doc = new System.Xml.XmlDocument(); doc.XmlResolver = new Ionic.Xml.XhtmlResolver(); doc.Load(xhtmlFile); // for an XmlReader... var xmlReaderSettings = new XmlReaderSettings { ProhibitDtd = false,XmlResolver = new XhtmlResolver() }; using (var stream = File.OpenRead(filetoRead)) { XmlReader reader = XmlReader.Create(stream,xmlReaderSettings); while (reader.Read()) { ... }
2 HTML简介&标签嵌套和并列关系&文档声明
HTML:Hyper Text Markup Language 超文本标签语言(hyper:精力旺盛的 markup:标记 n noun)
- HTML不是编程语言,而是一种标记语言(就是一套标记标签),用于描述网页,是网页制作必备的。
- 超文本是指页面内可以包含图片、链接、甚至音乐、程序等非文字元素。
- HTML的结构包含头和主题,头提供网页信息,主体提供网页的具体内容。
- HTML文档包含标签和文本内容,HTML文档也叫作web页面
- HTML标签和HTML元素通常都是同一个意思
网页的本质就是超文本标记语言结合其他的web技术(脚本语言、公共网管接口、组件等)创造出来的。万维网(web)建立在超文本基础知识。
HTML骨架格式:
<html> 根标签
<head> 头标签
<title></title> 标题标签
</head>
<body>主体标签
</body>
</html>
- 根标签:HTML中标签的根节点
- 头标签:用于存放:title,meta,base
- 标题标签:让页面有一个属于自己的标题
- 主体标签:页面的主题部分
html和body标签是父子关系,也叫嵌套关系。
head和body是兄弟关系,也叫并列关系。
web浏览器:
不会直接显示HTML标签,而是其通过使用标签来决定如何向用户展示HTML页面的内容。
<!DOCTYPE>声明:
用途:标准通用标记语言的文档类型声明,帮助浏览器正确显示网页。
特点: 不区分大小写。以下均可用。
- <!DOCTYPE html>
- <!DOCTYPE HTML>
- <!doctyPe htML>
- <!DOCTYPE Html>
在不同的HTML版本中文档类型的声明不相同。
- HTML5:<!DOCTYPE html>
- HTML 4.01:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- XHTML 1.0:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
中文编码:
在头标签的子标签meta中设置charset为UTF-8
<meta charset="UTF-8"> charset:字符集
的组成解释
DOCTYPE是document type(文档类型)的简写,在web设计中用来说明你用的XHTML或者HTML是什么版本。
要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。
DOCTYPE声明
开始制作符合标准的站点,第一件事情就是声明符合自己需要的DOCTYPE。
查看很多使用XHTML标准开发的网站,第一行就是:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
打开一些符合标准的站点,例如著名web设计软件开发商Macromedia,网页陶吧,会发现同样的代码。
而另一些符合标准的站点的代码则如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
那么这些代码有什么含义?一定要放置吗?
什么是DOCTYPE
上面这些代码我们称做DOCTYPE声明。DOCTYPE是document type(文档类型)的简写,用来说明你用的XHTML或者HTML是什么版本。
其中的DTD(例如上例中的xhtml1-transitional.dtd)叫文档类型定义,里面包含了文档的规则,浏览器就根据你定义的DTD来解释你页面的标识,并展现出来。
要建立符合标准的网页,DOCTYPE声明是必不可少的关键组成部分;除非你的XHTML确定了一个正确的DOCTYPE,否则你的标识和CSS都不会生效。
XHTML 1.0 提供了三种DTD声明可供选择:
* 过渡的(Transitional):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法),完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
* 严格的(Strict):要求严格的DTD,你不能使用任何表现层的标识和属性,例如<br>,完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
* 框架的(Frameset):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD,完整代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
我们选择什么样的DOCTYPE
理想情况当然是严格的DTD,但对于我们大多数刚接触web标准的设计师来说,过渡的DTD(XHTML 1.0 Transitional)是目前理想选择。因为这种DTD还允许我们使用表现层的标识、元素和属性,也比较容易通过W3C的代码校验。
注:上面说的"表现层的标识、属性"是指那些纯粹用来控制表现的tag,例如用于排版的表格、背景颜色标识等。在XHTML中标识是用来表示结构的,而不是用来实现表现形式,我们过渡的目的是最终实现数据和表现相分离。
打个比方:人体模特换衣服。模特就好比数据,衣服则是表现形式,模特和衣服是分离的,这样你就可以随意换衣服。而原来HTML4中,数据和表现是混杂在一起的,要一次性换个表现形式非常困难。呵呵,有点抽象了,这个概念需要我们在应用过程中逐步领会。
补充
DOCTYPE声明必须放在每一个XHTML文档最顶部,在所有代码和标识之上。
关于HTML 的 DTD 文档声明 和html中dt dd的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于"、.net – 打开extern DTD(w3.org,xhtml1-transitional.dtd)时发生错误. 503服务器不可用、2 HTML简介&标签嵌套和并列关系&文档声明、的组成解释的相关知识,请在本站寻找。
本文标签: