DTD为英文Document Type Definition,中文意思为“文档类定义”。DTD肩负着两重任务:一方面它帮助你编写合法的代码,另一方面它让浏览器正确地显示器代码。也许你会问它们居然有这样的能力?

如是你是一个个网页制作者,你会很清楚地知道一个HTML文档的基本结构可分为两个主要部分;

  1. <html>
  2. <head>
  3. 头部信息
  4. </head>
  5. <body>
  6. 可视内容
  7. </body>
  8. </html>

上面的代码你是再熟悉不过的了。但你知道下面的代码既是正确的又是错误的吗?

<Palign="center">这是一个居中段落</P>

在XHTML中,标记是区分大小写的,上面的代码毫无意义。可在HTML中它是一个居中段落。浏览器是怎样处理这种情况呢?难道浏览器认为你写的是HTML,然后把它作为一个一个居中段落显示?如是你写的是XHTML呢,它将是一段不可显示的代码!浏览器是怎样知道你用的是什么标记语言然后正确对待这段代码呢?

这就是DTD的工作了。一个DTD应该放在每一个文档的第一行(包括空白).这样正确地放置,你的DTD才能告诉浏览器的用的是什么标记语言。在通常情况下,如果你编写的是正确代码,并拥有一个合适的DTD,浏览器将会根据W3C的标准显示你的代码。

如果说你没有使用DTD,你将很难预测浏览器是怎样显示你的代码,仅仅在同一浏览器就有不同的显示效果。尽管你的网页做得非常飘亮,要是没有使用DTD,你的努力也是白费的。因此,一个DTD是必不可少的。

如果你正在做网页,你的DTD应该反映出你用的是什么标记语言。下面是一个DTD列表,你应该使用其中之一。

  • XHTML 1.1

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN""http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

  • XHTML1.0 StrictDTD(严格的文档类定义):要求严格的DTD,你不能使用表现标识和属性,和CSS一同使用。完整代码如下:
         <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    
  • XHTML1.0 TransitionalDTD(过渡的文档类定义):要求非常宽松的DTD,它允许你继续使用HTML4.01的标识(但是要符合xhtml的写法)。完整代码如下:
        <!DOCTYPE html    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
  • XHTML1.0 FramesetDTD(框架集文档类定义):专门针对框架页面设计使用的DTD,如果你的页面中包含有框架,需要采用这种DTD。完整代码如下:
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
    
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">            
    
  • HTML 4.01 Strict DTD(严格的文档类定义)不能包含已过时的元素(或属性)和框架元素。对于使用了这类DTD的文档,使用如下文档声明:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"   
    
               "http://www.w3.org/TR/html4/strict.dtd">  
    
  • HTML 4.01 TransitionalDTD(过渡的文档类定义)能包含已过时的元素和属性但不能包含框架元素。。对于使用了这类DTD的文档,使用如下文档声明:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    
                  "http://www.w3.org/TR/html4/loose.dtd">  
    
  • HTML 4.01 FramesetDTD(框架集文档类定义)。能包含已过时的元素和框架元素。。对于使用了这类DTD的文档,使用如下文档声明:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" 
    
                 "http://www.w3.org/TR/html4/frameset.dtd">
    
  • HTML 3.2

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2Final//EN">

  • HTML 2.0

    <!DOCTYPE html PUBLIC "-//IETF//DTD HTML2.0//EN">

下面是一个合法的HTML文档。

  1. <!DOCTYPE html    PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html>
  4. <head>
  5. 头部信息
  6. </head>
  7. <body>
  8. 可视内容
  9. </body>
  10. </html>

什么是dtd文件,为什么需要的更多相关文章

  1. 配置Struts.xml DTD文件报错

    报错信息为: The content of element type "struts" must match "((package|include|bean|  cons ...

  2. eclipse中手动导入DTD文件的方式

    DTD一般应用在应用程序中定义数据交换类型的文档,一般用在xml配置文件中,有些时候在eclipse中并不能加载一些提示,这个时候需要手动导入,导入方法如下: 1.首先根据声明的网址下载.dtd的文件 ...

  3. 什么是dtd文件,为什么需要dtd

    DTD为英文Document Type Definition,中文意思为"文档类定义".DTD肩负着两重任务:一方面它帮助你编写合法的代码,另一方面它让浏览器正确地显示器代码.也许 ...

  4. JavaEE SSH集成框架(两) struts2 本地加载dtd文件,action组态

    1. 载入中struts2的dtd文件.使struts.xml网络无法验证,和eclipse有技巧 在src在创建struts.xml: <? xmlversion="1.0" ...

  5. MyEclipse添加ibatis DTD文件实现xml的自动提示功能

    当我们写ibatis配置文件的时候,希望有xml自动提示功能.这就需要我们添加DTD文件 SqlMapConfig.xml中开头部分有这么一句话 <!DOCTYPE sqlMapConfig P ...

  6. 使用eclipse XML catalog绑定dtd文件

    有时候我们想编辑struts或spring的xml配置文件的时候,输了“<”之后eclipse却没有提示关键字,这是因为eclipse需要到网络下载dtd文件而由于网络原因没下载下来所以无法提示 ...

  7. Struts 关联DTD 文件

    Struts 的xml 文件在Eclipse 中  默认是不会有提示的. 但是我们可以关联DTD 文件, 这样子就可以出现如下的struts   提示了 1. 首先得先确保自己有Struts2 的Sr ...

  8. mybatis 无法自动补全,没有获得dtd文件

    由于网络原因,eclipse无法下载到http://mybatis.org/dtd/mybatis-3-mapper.dtd,导致eclipse的编辑器无法自动补全标签. 解决办法:将dtd文件下载到 ...

  9. eclipse中导入dtd文件实现xml的自动提示功能

    以mybatis为例 1.mybatis的xml文件头: (1)config文件: <?xml version="1.0" encoding="UTF-8" ...

  10. 向项目中添加dtd文件实现代码提示

    我们在编辑代码的过程中,有代码提示的编辑工具总是受到青睐. 本文将讲解怎么在eclipse中加入dtd文件实现代码提示.myeclipse同理 选择window,选择perferences,然后拉到下 ...

随机推荐

  1. Java 泛型 泛型代码和虚拟机

    Java 泛型 泛型代码和虚拟机 @author ixenos 类型擦除.原始类型.给JVM的指令.桥方法.Java泛型转换的事实 l  类型擦除(type erasure) n  Java泛型的处理 ...

  2. LeetCode OJ 84. Largest Rectangle in Histogram

    Given n non-negative integers representing the histogram's bar height where the width of each bar is ...

  3. LeetCode OJ 54. Spiral Matrix

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  4. linux命令英文缩写的含义(方便记忆)

    命令缩写: ls:list(列出目录内容) cd:Change Directory(改变目录) su:switch user 切换用户 rpm:redhat package manager 红帽子打包 ...

  5. navicat查询sqlserver数据库编码

    首先:查看SQLserver编码格式的SQL语句为: go SELECT  COLLATIONPROPERTY('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage' ...

  6. Python Tools

    [TOC] Python virtualenv.fabric 和 pip 是 pythoneer 的三大神器 pip pip pip是一个安装和管理Python包的工具,是easy_install的一 ...

  7. VBS控制鼠标移动和点击(附源代码下载)

    森思:想用vbs来控制鼠标的移动和点击,虽然按键精灵可以做到,但做这么简单的事情不想启动那么大一个程序,所以自己用VC写了一个小程序,可以让VBS来控制鼠标移动和点击. 用法: 移动鼠标到桌面坐标20 ...

  8. LoadRunner编写Socket协议脚本方法

    本文主要介绍使用LoadRunner手工编写Windows Socket协议测试脚本的方法. 通过LoadRunner编写Windows Socket协议测试脚本,总体说来,比较简单.就像把大象放进冰 ...

  9. Slice到C++映射

    按:本文是DPWI第6章的笔记. 客户端Slice到C++映射定义的是:怎样把Slice数据类型翻译成C++类型,客户怎样调用操作.传递参数.处理错误.C++映射线程安全,不存在内存管理问题.不建议查 ...

  10. 【Machine Learning in Action --2】K-近邻算法构造手写识别系统

    为了简单起见,这里构造的系统只能识别数字0到9,需要识别的数字已经使用图形处理软件,处理成具有相同的色彩和大小:宽高是32像素的黑白图像.尽管采用文本格式存储图像不能有效地利用内存空间,但是为了方便理 ...