科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道XML认证教程,第 2 部分: Dtd

XML认证教程,第 2 部分: Dtd

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

一个“有效的”文件首先应该是“形式良好”的。但这还远远不够,它还要往前更进一步。一个XML文件必须遵守文件类型描述Dtd(Document Type Definition)中定义的种种规定。所有的文件都是由序言和文件体构成的。

作者:中国IT实验室 来源:中国IT实验室 2007年9月22日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共6页)

枚举类型

    属性也可以被描述为一组可接受的取值的列表,XML文件中对属性的赋值将从这个列表中选取一个值。这类属性属于枚举类型ENUMERATED,不过,关键字ENUMERATED是不出现在Dtd定义中的。


<?xml version = "1.0"
encoding="Gb2312"
standalone = "yes"?>
<!DOCTYPE 购物篮 [
<!ELEMENT 购物篮 ANY>
<!ELEMENT 肉 EMPTY>
<!ATTLIST 肉 类型( 鸡肉 | 牛肉 | 猪肉 | 鱼肉 ) "鸡肉">
]>
<购物篮>
<肉 类型 = "鱼肉"/>
<肉 类型 = "牛肉"/>
<肉/>
</购物篮>
 


注意,在上面这个例子中,给属性“类型”定义的缺省值是“鸡肉”,所以“购物篮”中的第三个元素的“类型”属性取值为“鸡肉”。


ID和IDREF

ID类型 
    ID是用属性值的方式为文件中的某个元素定义唯一标识的方法,它的作用类似于 HTML文件中的内部链接。在大多数情况下,ID由处理文件的程序或脚本语言使用。 

    ID的值必须是一个有效的XML名称,它由字母、数字或下划线开始,名字中不能出现空白符。另外一般而言,不要给ID类型的属性事先指定缺省值,这很容易引起不同的元素具有相同的标识的情况,更不能使用FIXED型的缺省值。此类属性经常使用REQUIRED缺省类型,当然,这也不是必须的。有的应用并不要求每个元素都有自己的标识,所以,也可以使用IMPLIED缺省类型。


<?xml version = "1.0"
encoding="Gb2312"
standalone = "yes"?>
<!DOCTYPE 联系人列表[
<!ELEMENT 联系人列表 ANY>
<!ELEMENT 联系人(姓名,EMAIL)>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
<!ATTLIST 联系人 编号 ID #REQUIRED>
]>

<联系人列表>
<联系人 编号="1">
<姓名>张三</姓名>
<EMAIL>zhang@aaa.com</EMAIL>
</联系人>

<联系人 编号="2">
<姓名>李四</姓名>
<EMAIL>li@bbb.org</EMAIL>
</联系人>
</联系人列表>
 
ID和IDREF2

IDREF类型 
IDREF类型允许一个元素的属性使用文件中的另一个元素,方法就是把那个元素的 ID标识值作为该属性的取值。例如下面的例子: 


<?xml version = "1.0"
encoding="Gb2312"
standalone = "yes"?>
<!DOCTYPE 联系人列表[
<!ELEMENT 联系人列表 ANY>
<!ELEMENT 联系人(姓名,EMAIL)>
<!ELEMENT 姓名(#PCDATA)>
<!ELEMENT EMAIL(#PCDATA)>
<!ATTLIST 联系人 编号 ID #REQUIRED>
<!ATTLIST 联系人 上司 IDREF #IMPLIED>
]>

<联系人列表>
<联系人 编号="2">
<姓名>张三</姓名>
<EMAIL>zhang@aaa.com</EMAIL>
</联系人>

<联系人 编号="1" 上司="2">
<姓名>李四</姓名>
<EMAIL>li@aaa.com</EMAIL>
</联系人>
</联系人列表>
 

NMTOKEN和NMTOKENS

类型NMTOKEN和NMTOKENS是诸多属性类型中面向处理程序的又一个类型。这两个类型用于指示一个有效的名字。当需要把一个元素和其它的元件,例如一个JAVA 类或一个安全算法,相联系时,可以让它们助你一臂之力。请看下面的例子:

关于元素的定义:


<!ELEMENT 数据(#PCDATA)>
<!ATTLIST 数据
安全性( ON | OFF ) "OFF"
授权用户 NMTOKENS #IMPLIED
>
 


XML文件:


<数据 安全性="ON" 授权用户 = "Iggieeb SelenaS Guntherb">
blah blah blah
</数据>
 

NOTATION类型

NOTATION类型允许属性值为一个Dtd中声明的符号,这个类型对于使用非XML格式的数据非常有用。

现实世界中存在着很多无法或不易用XML格式组织的数据,例如图象、声音、影象等等。对于这些数据,XML应用程序常常并不提供直接的应用支持。通过为它们设定 NOTATION类型的属性,可以向应用程序指定一个外部的处理程序。例如,当你想要为一个给定的文件类型指定一个演示设备时,可以用NOTATION类型的属性作为触发。

要使用NOTATION类型作为属性的类型,首先要在Dtd中为可选用的记号作出定义。定义的方式有两种,一种是使用MIME类型,形式是: 
<!NOTATION 记号名 SYSTEM "MIME类型"> 

再有一种是使用一个URL路径,指定一个处理程序的路径。 
<!NOTATION 记号名 SYSTEM "URL路径名"> 

在下面这个例子中,为"电影"元素指定了两种可选设备:一种是movPlayer.exe,用来播映.mov文件,另一种则用来绘制GIF图象。


<?xml version = "1.0"
encoding="Gb2312"
standalone = "yes"?>
<!DOCTYPE 文件[
<!ELEMENT 文件 ANY>
<!ELEMENT 电影 EMPTY>
<!ATTLIST 电影 演示设备 NOTATION ( mp | gif ) #REQUIRED>
<!NOTATION mp SYSTEM "movPlayer.exe">
<!NOTATION gif SYSTEM "Image/gif">
]>

<文件>
<电影 演示设备 = "mp"/>
</文件>
 

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章