站长百科 | 数字化技能提升教程 数字化时代生存宝典
首页
数字化百科
电子书
建站程序
开发
服务器
办公软件
开发教程
服务器教程
软件使用教程
运营教程
热门电子书
WordPress教程
宝塔面板教程
CSS教程
Shopify教程
导航
程序频道
推广频道
网赚频道
人物频道
网站程序
网页制作
云计算
服务器
CMS
论坛
网店
虚拟主机
cPanel
网址导航
WIKI使用导航
WIKI首页
最新资讯
网站程序
站长人物
页面分类
使用帮助
编辑测试
创建条目
网站地图
站长百科导航
站长百科
主机侦探
IDCtalk云说
跨境电商导航
WordPress啦
站长专题
网站推广
网站程序
网站赚钱
虚拟主机
cPanel
网址导航专题
云计算
微博营销
虚拟主机管理系统
开放平台
WIKI程序与应用
美国十大主机
编辑“
DTD
”
人物百科
|
营销百科
|
网赚百科
|
站长工具
|
网站程序
|
域名主机
|
互联网公司
|
分类索引
跳转至:
导航
、
搜索
警告:
您没有登录。如果您做出任意编辑,您的IP地址将会公开可见。如果您
登录
或
创建
一个账户,您的编辑将归属于您的用户名,且将享受其他好处。
反垃圾检查。
不要
加入这个!
[[Image:DTD.jpg|right|250px|thumb|[[XML]]代码]] '''DTD'''(Document Type Definition) 是一套关于标记符的语法规则。它是XML1.0版规格的一部分,是[[XML]]文件的验证机制,属于XML文件的组成部分。DTD 是一种保证XML文档格式正确的有效方法,可通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能成为数据交换标准,因为不同的公司只需定义好标准DTD,各公司都能依DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了[[网络]]共享和数据交互。DTD文件是一个[[ASCII]]文本文件,后缀名为.dtd。 文档类型定义(DTD)可定义合法的XML文档构建模块。它使用一系列合法的元素来定义文档的结构。DTD 可被成行地声明于 XML 文档中,也可作为一个外部引用。 == DTD元素 == 在一个 DTD 中,元素通过元素声明来进行声明。 ;声明一个元素 在 DTD 中,XML 元素通过元素声明来进行声明。元素声明使用下面的语法: <pre> <!ELEMENT 元素名称 类别> 或者 <!ELEMENT 元素名称 (元素内容)> </pre> ;空元素 空元素通过类别关键词EMPTY进行声明: <pre> <!ELEMENT 元素名称 EMPTY> </pre> ;只有 PCDATA 的元素 只有 PCDATA 的元素通过圆括号中的 #PCDATA 进行声明: <pre> <!ELEMENT 元素名称 (#PCDATA)> </pre > ;带有任何内容的元素 通过类别关键词 ANY 声明的元素,可包含任何可解析数据的组合: <pre> <!ELEMENT 元素名称 ANY> </pre> ;带有子元素(序列)的元素 带有一个或多个子元素的元素通过圆括号中的子元素名进行声明: <pre> <!ELEMENT 元素名称 (子元素名称 1)> 或者 <!ELEMENT 元素名称 (子元素名称 1,子元素名称 2,.....)> </pre> ;相同的元素至少出现一次的声明 语法格式为: <pre> <!ELEMENT element-name (child-name+)> 例: <!ELEMENT note (message+)> 例中的+是指子元素message必须在被包含的note元素里出现一次或者多次。 </pre> ;相同的元素不出现或者多次出现的声明 语法格式为: <pre> <!ELEMENT element-name (child-name*)> 例: <!ELEMENT note (message*)> 例中的*是指子元素message能够在被包含的note元素里不出现或者出现多次。 </pre> == DTD属性 == 在 DTD 中,属性通过 [[ATTLIST]] 声明来进行声明。 ;声明属性 属性声明拥使用下列语法: <pre> <!ATTLIST 元素名称 属性名称 属性类型 默认值> </pre> 下面是属性类型的概述: ;类型描述 <pre> CDATA 值为字符数据 (character data) (en1|en2|..) 此值是枚举列表中的一个值 ID 值为唯一的 id IDREF 值为另外一个元素的 id IDREFS 值为其他 id 的列表 NMTOKEN 值为合法的 XML 名称 NMTOKENS 值为合法的 XML 名称的列表 ENTITY 值是一个实体 ENTITIES 值是一个实体列表 NOTATION 此值是符号的名称 xml: 值是一个预定义的 XML 值 </pre> 默认值参数可使用下列值: ;值解释 <pre> 值属性的默认值 #REQUIRED 属性值是必需的 #IMPLIED 属性不是必需的 #FIXED value 属性值是固定的 </pre> ;规定一个默认的属性值 <pre> DTD: <!ELEMENT square EMPTY> <!ATTLIST square width CDATA "0"> 合法的 XML: <square width="100" /> </pre> 补充说明:上面的例子中,"square" 被定义为带有 CDATA 类型的 "width" 属性的空元素。如果宽度没有被设定,其默认值为0 。 == DTD实体(ENTITIES) == *实体是用于定义引用普通文本或特殊字符的快捷方式的变量。 *实体引用是对实体的引用。 *实体可在内部或外部进行声明。 ;一个内部实体声明 语法:<!ENTITY 实体名称 "实体的值"> <pre> DTD 例子:<!ENTITY writer "Bill Gates"> <!ENTITY copyright "Copyright 具体的url">XML 例子: <author>&writer;©right;</author>注释: 一个实体由三部分构成: 一个和号 (&), 一个实体名称, 以及一个分号 (;)。 </pre> ;一个外部实体声明 语法:<!ENTITY 实体名称 SYSTEM "URI/URL"> <pre> DTD 例子: <!ENTITY writer SYSTEM "具体的url"> <!ENTITY copyright SYSTEM "具体的url">XML 例子: <author>&writer;©right;</author> </pre> [[Image:DTD1.png|right|300px|thumb|[[XML]]代码]] == DTD实例 == *报纸文章 DTD <pre> <!DOCTYPE NEWSPAPER [ <!ELEMENT NEWSPAPER (ARTICLE+)> <!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE (#PCDATA)> <!ELEMENT BYLINE (#PCDATA)> <!ELEMENT LEAD (#PCDATA)> <!ELEMENT BODY (#PCDATA)> <!ELEMENT NOTES (#PCDATA)> <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED> <!ATTLIST ARTICLE EDITOR CDATA #IMPLIED> <!ATTLIST ARTICLE DATE CDATA #IMPLIED> <!ATTLIST ARTICLE EDITION CDATA #IMPLIED> <!ENTITY NEWSPAPER "Vervet Logic Times"> <!ENTITY PUBLISHER "Vervet Logic Press"> <!ENTITY COPYRIGHT "Copyright 1998 Vervet Logic Press"> ]> </pre> *产品目录 DTD <pre> <!DOCTYPE CATALOG [ <!ENTITY AUTHOR "John Doe"> <!ENTITY COMPANY "JD Power Tools, Inc."> <!ELEMENT CATALOG (PRODUCT+)> <!ELEMENT PRODUCT (SPECIFICATIONS+,OPTIONS?,PRICE+,NOTES?)> <!ATTLIST PRODUCT NAME CDATA #IMPLIED CATEGORY (HandTool|Table|Shop-Professional) "HandTool" PARTNUM CDATA #IMPLIED PLANT (Pittsburgh|Milwaukee|Chicago) "Chicago" INVENTORY (InStock|Backordered|Discontinued) "InStock"> <!ELEMENT SPECIFICATIONS (#PCDATA)> <!ATTLIST SPECIFICATIONS WEIGHT CDATA #IMPLIED POWER CDATA #IMPLIED> <!ELEMENT OPTIONS (#PCDATA)> <!ATTLIST OPTIONS FINISH (Metal|Polished|Matte) "Matte" ADAPTER (Included|Optional|NotApplicable) "Included" CASE (HardShell|Soft|NotApplicable) "HardShell"> <!ELEMENT PRICE (#PCDATA)> <!ATTLIST PRICE MSRP CDATA #IMPLIED WHOLESALE CDATA #IMPLIED STREET CDATA #IMPLIED SHIPPING CDATA #IMPLIED> <!ELEMENT NOTES (#PCDATA)> ]> </pre> == DTD内部的[[DOCTYPE]]声明 == 假如 DTD 被包含在您的 XML 源文件中,它应当通过下面的语法包装在一个 DOCTYPE 声明中: <pre> ***************************************************************************** <!DOCTYPE 根元素 [元素声明]> ***************************************************************************** </pre> 带有 DTD 的 XML 文档实例: <pre> ***************************************************************************** <?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> ***************************************************************************** </pre> 以上 DTD 解释如下: <pre> !DOCTYPE note (第二行)定义此文档是 note 类型的文档。 !ELEMENT note (第三行)定义 note 元素有四个元素:"to、from、heading,、body" !ELEMENT to (第四行)定义 to 元素为 "#PCDATA" 类型 !ELEMENT from (第五行)定义 from 元素为 "#PCDATA" 类型 !ELEMENT heading (第六行)定义 heading 元素为 "#PCDATA" 类型 !ELEMENT body (第七行)定义 body 元素为 "#PCDATA" 类型 </pre> == DTD外部文档声明 == 假如 DTD 位于 XML [[源文件]]的外部,那么它应通过下面的语法被封装在一个 DOCTYPE 定义中: <!DOCTYPE 根元素 SYSTEM "文件名"> 这个 XML 文档和上面的 XML 文档相同,但是拥有一个外部的 DTD: <pre> ***************************************************************************** <?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)> ***************************************************************************** </pre> == 为什么使用 DTD == *通过 DTD,您的每一个 XML 文件均可携带一个有关其自身格式的描述。 *通过 DTD,独立的团体可一致地使用某个标准的 DTD 来交换数据。 *应用程序也可使用某个标准的 DTD 来验证从外部接收到的数据。 *还可以使用 DTD 来验证自身的数据。 == DTD的优缺点 == ;DTD的优势 *每一个XML文档都可携带一个DTD,用来对该文档格式进行描述,测试该文档是否为有效的XML文档。既然DTD有外部和内部之分,当然就可以为某个独立的团体定义一个公用的外部DTD,那么多个XML文档就都可以共享使用该DTD,使得数据交换更为有效。甚至在某些文档中还可以使内部DTD和外部DTD相结合。在应用程序中也可以用某个DTD来检测接收到的数据是否符合某个标准。 *对于XML文档而言,虽然DTD不是必须的,但它为文档的编制带来了方便。加强了文档标记内参数的一致性,使XML语法分析器能够确认文档。如果不使用DTD来对XML文档进行定义,那么XML语法分析器将无法对该文档进行确认。 *每个XML文档都只有一个根元素,其它的子元素都包含在该根元素中。因此在DTD中对根元素的声明是必不可少的。根元素声明的一般形式如下: <pre> <!DOCTYPE root[ <!-- 子元素 --> ]> <!-- 文件体 --> </pre> *DOCTYPE是“document type”(文档类型)的简写,DOCTYPE声明必须放在文档最顶部,在所有代码和标识之上,DOCTYPE声明是必不可少的关键组成部分。DTD语法要求DOCTYPE必须要大写,而且DOCTYPE和元素之间必须要有空格隔开。如在以上代码中DOCTYPE和根元素[[root]]之间要有空格隔开。 ;DTD的缺陷 利用DTD验证有效性的[[解析器]],就能够立即对文档的完整性进行可靠的检查。DTD虽然比较实用,但DTD自身也有很多的不足之处。 *DTD有自己的特殊语法,其本身不是XML文档; *DTD只提供了有限的[[数据类型]],用户无法自定义类型; *DTD不支持[[域名]]机制。 == 相关条目 == *[[HTML]] *[[W3C]] *[[标记语言]] *[[Schema]] *[[XAML]] == 参考来源 == *http://hanyu.iciba.com/wiki/729509.shtml *[http://www.w3school.com.cn/dtd/ DTD教程] [[category:标记语言|D]] [[category:XML|D]]
摘要:
请注意,您对站长百科的所有贡献都可能被其他贡献者编辑,修改或删除。如果您不希望您的文字被任意修改和再散布,请不要提交。
您同时也要向我们保证您所提交的内容是您自己所作,或得自一个不受版权保护或相似自由的来源(参阅
Wordpress-mediawiki:版权
的细节)。
未经许可,请勿提交受版权保护的作品!
取消
编辑帮助
(在新窗口中打开)