W3China社区首页 管理页面 写新日志 退出

   
 

[Semantic Web](连载)语义网之路--DTD 
Lee 发表于 2007/3/2 9:55:00

虽然XML允许你“随心所欲”地建立你自己的标记集,但这个标记集一旦确立,你就必须严格遵守XML的语法和标记集的相关约定。当把一个XML文档递交给XML处理程序时,为了保证处理程序能够很好地理解它,该文档必须遵守XML的语法规范,即这个XML文件应该是“形式良好的”(well-formed),否则处理程序将不能正确地解析和处理该XML文件。 一个语法正确的XML文档必须遵守以下规则: l        文档必须有一个根元素,所有的其它元素都嵌入其中。 l        每一个元素必须同时拥有起始标签和结束标签。 l        起始标签中的元素类型名称必须与相应结束标签中的名称完全匹配。 l        元素类型名是大小写敏感的。实际上,XML标记中的所有文本都是大小写敏感的。 l        元素必须被正确地嵌套。也就是说,如果一个元素在另一个元素中开始,那么它必须在该元素中结束。 W3C对“形式良好”有着明确的规定,即要遵守XML 1.0规范中相关的“形式良好约束”。 “形式良好”是对XML文档的基本要求,这不仅可以增加XML的可读性,而且也有利于机器的处理。但要使机器正确地提取目标数据并理解其相关的语义信息,一个XML文档仅仅“形式良好”还不够,它还必须是“有效的”。 一个XML文档“有效的”XML文档首先应该是“形式良好”的,同时该文档还必须遵守文件类型定义DTD中定义的各种规则。DTD描述了一个标记语言的语法和标记集,定义了XML文档的整体结构及语法规则。因此一个完全意义上的XML文档不仅应该是“形式良好的”,而且还应该符合DTD所描述的语法规范。 文档类型定义DTD 功能及分类 尽管DTD正在逐渐被XML Schema所取代,但DTD与Schema是一脉相承的,通过DTD可以帮助我们更快、更透彻地理解Schema。 DTD揭示了一个XML文档的整体结构与语法规范,它为XML处理程序提供了正确解析“有效的”XML文档所应该知道的所有细节。下面通过一个例子简单地说明DTD的功用。 代码清单3-5 [1] <!DOCTYPE 搜索引擎列表[ [2]     <!ELEMENT 搜索引擎列表 ANY> [3]     <!ELEMENT 搜索引擎 (名称,网址,创始人?)*> [4]     <!ELEMENT 创始人 (姓名,电邮)> [5]     <!ELEMENT 名称 (#PCDATA)> [6]     <!ELEMENT 网址 (#PCDATA)> [7]     <!ELEMENT 姓名 (#PCDATA)> [8]     <!ELEMENT 电邮 (#PCDATA)> [9] ]> 这是一段典型的DTD代码,“<!DOCTYPE”和“]>”为文档类型定义的分隔符,以“<!ELEMENT ”开头的行表示元素类型声明。该段代码的第一行说明XML文档的根元素为“搜索引擎列表”;第二行说明根元素中可以包含任意数据(用ANY表示);第三行定义了“搜索引擎”元素,XML文档中可以包含零个或多个该元素(用*表示),“搜索引擎”元素又包含三个子元素,其中“名称”、“网址”必不可少,而“创始人”元素为可选项,可有可没有(用?表示),这三个子元素必须顺序出现(用,表示);第四行说明“创始人”元素包含两个子元素“姓名”和“电邮”,这两个子元素也必须按顺序排列;第五至八行说明了名元素的数据类型为#PCDATA。#PCDATA为XML关键字,代表Parsable Character Data,即可解析的字符数据,意思是说里面的文字内容留给解析器(Parser)去解读。 一个有效的XML文档在保证形式良好的同时,其元素的取值、排列或嵌套次序及其出现频次等都必须与DTD中的元素类型声明相一致。 与实体声明类似,DTD也可分为内部DTD和外部DTD。如果DTD与XML文档同处于一个文件之中,则该DTD称为内部DTD(如代码清单3-6,该XML文档为一有效的XML文档),否则为外部DTD。实际上,实体声明是DTD的一部分。 代码清单3-6 <?xml version="1.0" encoding="GB2312" standalone="yes" ?> <!DOCTYPE 搜索引擎列表[      <!ELEMENT 搜索引擎列表 ANY>      <!ELEMENT 搜索引擎 (名称,网址,创始人?)*>      <!ELEMENT 创始人 (姓名,电邮)>      <!ELEMENT 名称 (#PCDATA)>      <!ELEMENT 网址 (#PCDATA)>      <!ELEMENT 姓名 (#PCDATA)>      <!ELEMENT 电邮 (#PCDATA)> ]> <?xml-stylesheet type="text/xsl" href="se.xsl" ?>   <搜索引擎列表> <搜索引擎> <名称>百度</名称> <网址>www.baidu.com </网址> <创始人> <姓名>李彦宏</姓名> <电邮>LYH@baidu.coms</电邮> </创始人> </搜索引擎>   <搜索引擎> <名称>谷歌</名称> <网址>www.google.com </网址> </搜索引擎>   <搜索引擎> <名称>雅虎</名称> <网址>www.yahoo.com</网址> </搜索引擎> </搜索引擎列表> 根据使用范围的不同,还可以将外部DTD分为系统DTD和公用DTD。系统DTD用关键字SYSTEM表示,其形式为: <!DOCTYPE 根元素名 SYSTEM "外部DTD文档URL"> 如: <!DOCTYPE 搜索引擎列表 SYSTEM "http://www.example.com/seml.dtd"> 如果XML文档与DTD文档处于同一个目录下,则可以写为: <!DOCTYPE 搜索引擎列表 SYSTEM "seml.dtd"> 此外,还可以使用相对目录之间的引用来表示DTD文档的存放位置,如果DTD文档位于XML文档父目录的子目录dtd之下时,可以写为: <!DOCTYPE 搜索引擎列表 SYSTEM "../dtd/seml.dtd"> 如果将DTD信息存放于单独的seml.dtd文件中时,代码清单3-6将变为两个文件:seml.xml和seml.dtd。 seml.dtd文件的内容为: 代码清单3-7 <?xml version="1.0" encoding="GB2312" ?> <!DOCTYPE 搜索引擎列表[      <!ELEMENT 搜索引擎列表 ANY>      <!ELEMENT 搜索引擎 (名称,网址,创始人?)*>      <!ELEMENT 创始人 (姓名,电邮)>      <!ELEMENT 名称 (#PCDATA)>      <!ELEMENT 网址 (#PCDATA)>      <!ELEMENT 姓名 (#PCDATA)>      <!ELEMENT 电邮 (#PCDATA)> ]> seml.xml文件的内容为: 代码清单3-8 <?xml version="1.0" encoding="GB2312" standalone="no" ?> <!DOCTYPE 搜索引擎列表 SYSTEM "seml.dtd"> <?xml-stylesheet type="text/xsl" href="se.xsl" ?>   <搜索引擎列表> <搜索引擎> <名称>百度</名称> <网址>www.baidu.com </网址> <创始人> <姓名></姓名> <电邮>LYH@baidu.coms</电邮> </创始人> </搜索引擎>   <搜索引擎> <名称>谷歌</名称> <网址>www.google.com </网址> </搜索引擎>   <搜索引擎> <名称>雅虎</名称> <网址>www.yahoo.com</网址> </搜索引擎> </搜索引擎列表> 公用DTD用关键字PUBLIC表示,该类型的DTD一般由权威机构制订,提供给特定行业或公众使用。其形式为: <!DOCTYPE 根元素名 PUBLIC "DTD名称" "外部DTD文档URL"> 与系统DTD相比,除了关键字有变化外,还多了一项DTD名称。DTD名称只能包含字母、数字、空格和下面的符号:_%$#@()+:=/!*;?。此外,DTD名称还必须符合一些标准的规定。例如,ISO标准的DTD以“ISO”三个字母开头;被改进的非ISO标准的DTD以加号“+”开头;未被改进的非ISO标准的DTD以减号“-”开头。起始部分后面是以两个斜杠“//”作为分隔符DTD所有者的名称、DTD说明及其语言种类。例如: <!DOCTYPE 搜索引擎列表 PUBLIC "-//Hakuna Matata//SE Data//CN" "http://www.example.com/seml.dtd">

阅读全文(5512) | 回复(3) | 编辑 | 精华

 


回复:(连载)语义网之路--DTD
学生(游客)发表评论于2007/6/27 21:19:46

dtd元素数据类型有那几种??

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除

 


回复:(连载)语义网之路--DTD
Lee发表评论于2007/3/15 8:31:45

有版权的哦。

 


回复:(连载)语义网之路--DTD
豆豆(游客)发表评论于2007/3/15 0:36:19

赞! 看了终于有点敢下笔了

 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)

 
Google
最 新 日 志
信息组织视角下的语义检索
本体是一种情报检索语言吗
(连载)语义网之路--RDF模型的基本思
大风起兮沙飞扬(27)
大风起兮沙飞扬(26)
大风起兮沙飞扬(25)
大风起兮沙飞扬(24)
大风起兮沙飞扬(23)
大风起兮沙飞扬(22)
大风起兮沙飞扬(21)
大风起兮沙飞扬(20)
大风起兮沙飞扬(19)
大风起兮沙飞扬(18)
An Ontology-Based In
基于本体的信息检索模型
 
最 新 评 论
回复:郁闷
回复:用MySQL存储本体
replcica watches
回复:Protege汉化全攻略
回复:Protege汉化全攻略
回复:Protege汉化全攻略
回复:基于本体的信息检索模型
回复:小型本体构建心得(Protege 
回复:优美英文心灵鸡汤:别太久错过机会
回复:优美英文心灵鸡汤:别太久错过机会
 
最 新 留 言
签写新留言

加我下QQ
请求帮助
真好
关于mysql和protege 有问题想
佩服佩服
关于语义网之路
大树
这个周末愉快!
周未愉快
周未愉快!
 
Blog 信 息
blog名称:风落沙
日志总数:348
评论数量:550
留言数量:52
访问次数:1591980
建立时间:2005年1月28日
友 情 连 接


 

狂潮怒啸

 
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144768926 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号