// 我们认为 XML Schema 很快会将 DTD 取而代之,被用在大部分的网络应用程序中。

//XML Schema 是基于 XML 的 DTD 替代物。

//与 DTD 不同,XML Schema 支持数据类型和命名空间。

DTD是什么?

DocumentTypeDefinition,是用来描述xml文档结构的文件。

DTD可以在xml文档的内部,也可以外链;

声明于xml内部的DTD

<?xml version="1.0" ?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

声明外链的DTD

这个是DTD文件

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>

这个是xml文件

<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note> 

DTD有什么作用

制定了一个xml的标准,有了这个标准,就可以进行数据的传输和交换,可以用程序进行xml内数据的解读,可以验证接受的数据,可以验证自身的xml数据。

PCDATA

ParsedCharacterData-被解析的字符数据

CDATA

CharacterData-不会被解析的字符数据

声明一个元素

在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:

<!ELEMENT 元素名称 类别>

或者

<!ELEMENT 元素名称 (元素内容)>

空元素

空元素通过类别关键词EMPTY进行声明:

<!ELEMENT 元素名称 EMPTY>

例子:

<!ELEMENT br EMPTY>

XML例子:

<br />

只有 PCDATA 的元素

只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明:

<!ELEMENT 元素名称 (#PCDATA)>

例子:

<!ELEMENT from (#PCDATA)>

带有任何内容的元素

通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:

<!ELEMENT 元素名称 ANY>

例子:

<!ELEMENT note ANY>

带有子元素(序列)的元素

带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:

<!ELEMENT 元素名称 (子元素名称 1)>

或者

<!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>

例子:

<!ELEMENT note (to,from,heading,body)>

当子元素按照由逗号分隔开的序列进行声明时,这些子元素必须按照相同的顺序出现在文档中。在一个完整的声明中,子元素也必须被声明,同时子元素也可拥有子元素。"note" 元素的完整声明是:

<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to      (#PCDATA)>
<!ELEMENT from    (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body    (#PCDATA)>

声明只出现一次的元素

<!ELEMENT 元素名称 (子元素名称)>

例子:

<!ELEMENT note (message)>

上面的例子声明了:message 子元素必须出现一次,并且必须只在 "note" 元素中出现一次。

声明最少出现一次的元素

<!ELEMENT 元素名称 (子元素名称+)>

例子:

<!ELEMENT note (message+)>

上面的例子中的加号声明了:message 子元素必须在 "note" 元素内出现至少一次。

声明出现零次或多次的元素

<!ELEMENT 元素名称 (子元素名称*)>

例子:

<!ELEMENT note (message*)>

上面的例子中的星号声明了:子元素 message 可在 "note" 元素内出现零次或多次。

声明出现零次或一次的元素

<!ELEMENT 元素名称 (子元素名称?)>

例子:

<!ELEMENT note (message?)>

上面的例子中的问号声明了:子元素 message 可在 "note" 元素内出现零次或一次。

声明“非.../既...”类型的内容

例子:

<!ELEMENT note (to,from,header,(message|body))>

上面的例子声明了:"note" 元素必须包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。

声明混合型的内容

例子:

<!ELEMENT note (#PCDATA|to|from|header|message)*>

上面的例子声明了:"note" 元素可包含出现零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。

TDT-文档类型定义相关推荐

  1. DTD(文档类型定义)概述

    DTD(文档类型定义)的作用是定义 XML 文档的合法构建模块.DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. DTD 简介 文档类型定义(DTD)可定义合法的XML文档构建模块.它 ...

  2. DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义

    DOCTYPE html PUBLIC 指定了 HTML 文档遵循的文档类型定义 今天看到一篇CSS应用的一个友好搜索,我按网页上的代码复制.粘贴后预览时总达不到效果,而直接拷贝他的实例却能达到效果, ...

  3. XML——文档类型定义(DTD-Document Type Definition)

    [0]README 0.1)本文文字描述转自 core java volume 2 , 旨在理解 XML--文档类型定义(DTD-Document Type Definition) 的基础知识: 0. ...

  4. 文档类型定义和合法性(2)

    8.5.3 子元素列表 由于SEASON元素被声明为可以接受任何元素作为子元素,因而可以接受各种各样的元素.当遇到那些多多少少有些非结构化的文本,如杂志文章时,这种情况就很有用.这时段落.副栏.项目列 ...

  5. 前端:HTML5/36/HTML5简介,文档类型定义,网页字符集,页面结构标记,文章相关的标记,其它标记,音频标记,视频标记,表单中新增的属性,表单input元素type属性的值

    HTML5简介 HTML5是新一代的HTML: HTML5目前主要应用在手机端,在PC端最新浏览器已经开始支持了,但还不全面: HTML5是由W3C和WHATWG合作的结果: W3C是万维网联盟,主要 ...

  6. XML之文档类型定义和合法性(转)

    来至:liang--liang博客:http://www.cnblogs.com/liang--liang/archive/2008/01/15/1039277.html 好牛 XML被作为一种元标记 ...

  7. 文档声明Doctype和Doctype html区别 文档类型定义(DTD)

    文档类型定义(DTD)可定义合法的XML文档构建模块.它使用一系列合法的元素来定义文档的结构. DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用. 文档声明的作用: 文档声明是为了告诉浏 ...

  8. XML文档类型定义DTD

    DTD概述 DTD用来定义XML文档的结构,它包含一系列规则说明,以确保XML文档的一致性和有效性 DTD定义了XML文档可用的词汇(元素和属性的名称)和结构: 元素名称,包括根元素 元素的属性及属性 ...

  9. XML--- XML文档类型定义(DTD)

    **定义:**DTD定义了文档的逻辑结构,规定了文档中所使用的元素.实体.元素的属性.元素与实体之间的关系.其作用主要表现在以下几个方面. (1) 使用DTD可以提供一种统一的格式.XML的可扩展性为 ...

  10. J2EE之dtd(文档类型定义)

    一:良好xml的格式 1:xml的作用 1.1 数据交互(两种方式) 第一种:{name:xxx,sex:'男',age:18},{name:xxx,sex:'男',age:18},{name:xxx ...

最新文章

  1. IO流 字符流 字节流 缓冲流 文件的复制
  2. 经过不断努力 终于获得“推荐博客”的荣誉
  3. Mysql-安装指南
  4. Android 9 的非 SDK 接口限制 | 中文教学视频
  5. 黄河农场谋定区位优势-农业大健康·万祥军:现代农业示范区
  6. JAVA中的面向对象与内存解析_2
  7. unity创建和销毁对象_如何创建和销毁对象
  8. Linux命令【五】系统函数
  9. 大屏某区域滚动效果循环
  10. windows 2502 2503 错误解决
  11. C和指针 第四章 习题
  12. Character,String相关方法,Int,double互相转换
  13. Unity3D-VR_Gevr VR射线+tag的转换+物体展示
  14. usb4java android,USB audio on Android platform
  15. win7下IDEA黑色主题看不到鼠标指针的修改方式
  16. 洗地机之滚刷电机分析:关于电机转矩.功率.转速之间的关系及计算公式
  17. vue项目实现百度离线地图开发
  18. 5G应用技术系列 - 从带宽和时延看5G和4G对应用区别
  19. Java并发25 ThreadFactory使用的必要性
  20. 引入 ECharts和Bootstrap的bootcdn样式表路径

热门文章

  1. 查询各部门中工资最低的雇员信息(不要使用int关键字)、查询工资最高的雇员信息、查询工资高于部门20中所有员工的雇员信息、查询负责管理其他雇员的管理员信息
  2. 加速中国投资,VMware开通中文支持热线
  3. 顺应潮流 - Sun公司软件开源经历对今天的启发
  4. 在苹果手机html变大,苹果手机原来可以这样投屏到电视!一秒变大屏!太好用了!...
  5. Linux第二篇【系统环境、常用命令、SSH连接、安装开发环境】
  6. 梦在远方路在脚下,社科院与杜兰大学金融管理硕士项目与你一路相伴
  7. 微信小游戏过包(马甲过审策略)
  8. 抓住一切机遇,成功才有可能
  9. JS写的随机数倒计时效果
  10. JSP学生考试成绩分析管理系统