XML之DTD

news/2024/7/11 1:32:24 标签: xml, 文档, character, html, system, table
htmledit_views">

作者之dtd_百度百科:http://baike.baidu.com/view/147436.htm

 

DTD
  html" title=文档>文档类型定义
  (Document Type Definition)
  DTD 是一套关于标记符的语法规则。它是XML1.0版规格得一部分,是XML文件的验证机制,属于XML文件组成的一部分。
  DTD 是一种保证XMLhtml" title=文档>文档格式正确的有效方法,可以通过比较XMLhtml" title=文档>文档和DTD文件来看html" title=文档>文档是否符合规范,元素和标签使用是否正确。一个DTDhtml" title=文档>文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。
  XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能够成为数据交换的标准,因为不同的公司只需定义好标准的DTD,各公司都能够依照DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。
  DTD文件是一个ASCII的文本文件,后缀名为.dtd。
  =============================================================/
1、DTD 简介
  html" title=文档>文档类型定义(DTD)可定义合法的XMLhtml" title=文档>文档构建模块。它使用一系列合法的元素来定义html" title=文档>文档的结构。
  DTD 可被成行地声明于 XML html" title=文档>文档中,也可作为一个外部引用。
  内部的 DOCTYPE 声明
  假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中:
  *****************************************************************************
  <!DOCTYPE 根元素 [元素声明]>
  *****************************************************************************
  带有 DTD 的 XML html" title=文档>文档实例
  *****************************************************************************
  <?html" title=xml>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>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend</body>
  </note>
  *****************************************************************************
  以上 DTD 解释如下:
  !DOCTYPE note (第二行)定义此html" title=文档>文档是 note 类型的html" title=文档>文档。
  !ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body"
  !ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型
  !ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型
  !ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型
  !ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型
  外部html" title=文档>文档声明
  假如 DTD 位于 XML 源文件的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中:
  <!DOCTYPE 根元素 SYSTEM "文件名">
  这个 XML html" title=文档>文档和上面的 XML html" title=文档>文档相同,但是拥有一个外部的 DTD:
  *****************************************************************************
  <?html" title=xml>xml version="1.0"?>
  <!DOCTYPE note SYSTEM "note.dtd">
  <note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
  </note> 这是包含 DTD 的 "note.dtd" 文件:
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to (#PCDATA)>
  <!ELEMENT from (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body (#PCDATA)>
  *****************************************************************************
  为什么使用 DTD?
  通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。
  通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。
  而您的应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。
  您还可以使用 DTD 来验证您自身的数据

]2、DTD - XML 构建模块
  XML 以及 HTML html" title=文档>文档的主要构建模块是类似 <body>....</body> 这样的标签。
  XML html" title=文档>文档构建模块
  所有的 XML html" title=文档>文档(以及 HTML html" title=文档>文档)均由以下简单的构建模块构成:
  元素
  属性
  实体
  PCDATA
  CDATA
  下面是每个构建模块的简要描述。
  元素
  元素是 XML 以及 HTML html" title=文档>文档的主要构建模块。
  HTML 元素的例子是 "body" 和 "table"。XML 元素的例子是 "note" 和 "message" 。元素可包含文本、其他元素或者是空的。空的 HTML 元素的例子是 "hr"、"br" 以及 "img"。
  实例:
  *********************************************************
  <body>body text in between</body>
  <message>some message in between</message>
  *********************************************************
  属性
  属性可提供有关元素的额外信息。
  属性总是被置于某元素的开始标签中。属性总是以名称/值的形式成对出现的。下面的 "img" 元素拥有关于源文件的额外信息:
  *********************************************************
  <img src="computer.gif" />
  *********************************************************
  元素的名称是 "img"。属性的名称是 "src"。属性的值是 "computer.gif"并且可以用样式来控制大小等显示效果。由于元素本身为空,它被一个 " /" 关闭。
  实体
  实体是用来定义普通文本的变量。实体引用是对实体的引用。
  大多数同学都了解这个 HTML 实体引用:" "。这个“无折行空格”实体在 HTML 中被用于在某个html" title=文档>文档中插入一个额外的空格。
  当html" title=文档>文档被 XML 解析器解析时,实体就会被展开。
  PCDATA
  PCDATA 的意思是被解析的字符数据(parsed html" title=character>character data)。
  可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。
  PDATA 是会被解析器解析的文本。这些文本将被解析器检查实体以及标记。
  文本中的标签会被当作标记来处理,而实体会被展开。
  不过,被解析的字符数据不应当包含任何 &、< 或者 > 字符;需要使用 &、&lt; 以及 &gt; 实体来分别替换它们。
  CDATA
  CDATA 的意思是字符数据(html" title=character>character data)。
  CDATA 是不会被解析器解析的文本。在这些文本中的标签不会被当作标记来对待,其中的实体也不会被展开。
3、DTD - 元素
  在一个 DTD 中,元素通过元素声明来进行声明。
  声明一个元素
  在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法:
  <!ELEMENT 元素名称 类别>
  或者
  <!ELEMENT 元素名称 (元素内容)>
  空元素
  空元素通过类别关键词EMPTY进行声明:
  <!ELEMENT 元素名称 EMPTY>
  只有 PCDATA 的元素
  只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明:
  <!ELEMENT 元素名称 (#PCDATA)>
  带有任何内容的元素
  通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合:
  <!ELEMENT 元素名称 ANY>
  带有子元素(序列)的元素
  带有一个或多个子元素的元素通过圆括号中的子元素名进行声明:
  <!ELEMENT 元素名称 (子元素名称 1)>
  或者
  <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)>
  
相同的元素至少出现一次的声明

  语法格式为:
  <!ELEMENT element-name (child-name+)>
  例:
  <!ELEMENT note (message+)>
  例中的+是指子元素message必须在被包含的note元素里出现一次或者多次。
  
相同的元素不出现或者多次出现的声明

  语法格式为:
  <!ELEMENT element-name (child-name*)>
  例:
  <!ELEMENT note (message*)>
  例中的*是指子元素message能够在被包含的note元素里不出现或者出现多次。
4、DTD - 属性
  在 DTD 中,属性通过 ATTLIST 声明来进行声明。
  声明属性
  属性声明拥使用下列语法:
  <!ATTLIST 元素名称 属性名称 属性类型 默认值>
  以下是属性类型的选项:
  类型 描述
  CDATA 值为字符数据 (html" title=character>character data)
  (en1|en2|..) 此值是枚举列表中的一个值
  ID 值为唯一的 id
  IDREF 值为另外一个元素的 id
  IDREFS 值为其他 id 的列表
  NMTOKEN 值为合法的 XML 名称
  NMTOKENS 值为合法的 XML 名称的列表
  ENTITY 值是一个实体
  ENTITIES 值是一个实体列表
  NOTATION 此值是符号的名称
  html" title=xml>xml: 值是一个预定义的 XML 值
  默认值参数可使用下列值:
  值 解释
  值 属性的默认值
  #REQUIRED 属性值是必需的
  #IMPLIED 属性不是必需的
  #FIXED value 属性值是固定的
  规定一个默认的属性值
  DTD:
  <!ELEMENT square EMPTY>
  <!ATTLIST square width CDATA "0">
  合法的 XML:
  <square width="100" />
  在上面的例子中,"square" 被定义为带有 CDATA 类型的 "width" 属性的空元素。如果宽度没有被设定,其默认值为0 。
DTD的优势和缺陷
  DTD的优势
  每一个XMLhtml" title=文档>文档都可携带一个DTD,用来对该html" title=文档>文档格式进行描述,测试该html" title=文档>文档是否为有效的XMLhtml" title=文档>文档。既然DTD有外部和内部之分,当然就可以为某个独立的团体定义一个公用的外部DTD,那么多个XMLhtml" title=文档>文档就都可以共享使用该DTD,使得数据交换更为有效。甚至在某些html" title=文档>文档中还可以使内部DTD和外部DTD相结合。在应用程序中也可以用某个DTD来检测接收到的数据是否符合某个标准。
  对于XMLhtml" title=文档>文档而言,虽然DTD不是必须的,但它为html" title=文档>文档的编制带来了方便。加强了html" title=文档>文档标记内参数的一致性,使XML语法分析器能够确认html" title=文档>文档。如果不使用DTD来对XMLhtml" title=文档>文档进行定义,那么XML语法分析器将无法对该html" title=文档>文档进行确认。
  元素的定义
  根元素的声明
  每个XMLhtml" title=文档>文档都只有一个根元素,其它的子元素都包含在该根元素中。因此在DTD中对根元素的声明是必不可少的。根元素声明的一般形式如下:
  <!DOCTYPE root[
  <!-- 子元素 --> ]>
  <!-- 文件体 -->
  DOCTYPE是“document type”(html" title=文档>文档类型)的简写,DOCTYPE声明必须放在html" title=文档>文档最顶部,在所有代码和标识之上,DOCTYPE声明是必不可少的关键组成部分。DTD语法要求DOCTYPE必须要大写,而且DOCTYPE和元素之间必须要有空格隔开。如在以上代码中DOCTYPE和根元素root之间要有空格隔开。
  DTD的缺陷
  利用DTD验证有效性的解析器,就能够立即对html" title=文档>文档的完整性进行可靠的检查。DTD虽然比较实用,但DTD也有不少的缺陷。


http://www.niftyadmin.cn/n/1053120.html

相关文章

Linux课程---1、VMWare安装CentOS虚拟机(安装重要注意)

Linux课程---1、VMWare安装CentOS虚拟机&#xff08;安装重要注意&#xff09; 一、总结 一句话总结&#xff1a; 可以先去百度搜一篇对应系统的安装教程&#xff1a;比如 CentOS 7 安装 1、安装VMWare之后&#xff0c;打开win10的网卡面板&#xff08;控制面板->所有控制面…

Codeforces 刷题

记录刷题转载于:https://www.cnblogs.com/skyette/p/8098909.html

Excel催化剂开源第35波-图片压缩及自动旋转等处理

Excel催化剂在图片处理方面&#xff0c;也是做到极致化&#xff0c;一般的Excel插件插入图片是原图插入或不可控制压缩比例地方式插入图片至Excel当中&#xff0c;但Excel催化剂的插入图片&#xff0c;是开发了可调节图片大小的插入方式&#xff0c;让图片在Excel上可以有预期的…

Android--Android studio --Button点击事件的写法

Button点击事件&#xff1a;大概可以分为以下几种&#xff1a; 匿名内部类定义内部类&#xff0c;实现OnClickListener接口定义的构造方法用Activity实现OnClickListener接口指定Button的onClick的属性首先定义一个带button的xml布局文件 activity_main.xml: <Buttonandroid…

JS变量对象

http://goddyzhao.tumblr.com/post/11141710441/variable-object转载于:https://blog.51cto.com/gaochongid/687223

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

来至&#xff1a;liang--liang博客&#xff1a;http://www.cnblogs.com/liang--liang/archive/2008/01/15/1039277.html 好牛 XML被作为一种元标记语言&#xff0c;是一种描述标记语言的语言。在本章中您将学到如何说明和描述所创建的新标记语言。这些新的标记语言&#xff08…

解决https 请求过程中SSL问题

最近一个项目中用到了https的请求&#xff0c;在实际调用过程中发现之前的http方法不支持https&#xff0c;调用一直报错。 查询了一下&#xff0c;添加几行代码解决问题。 public string HttpPost(string Url, string postDataStr, string useragent null) { …

细说SSO单点登录

细说SSO单点登录 2016-07-13 00:26 by 李玉宝, 17004 阅读, 35 评论, 收藏, 编辑 什么是SSO&#xff1f; 如果你已知道&#xff0c;请略过本节&#xff01; SSO核心意义就一句话&#xff1a;一处登录&#xff0c;处处登录&#xff1b;一处注销&#xff0c;处处注销。即&#xf…