使用DTD设计XML语法

ZDNet软件频道 时间:2002-09-26 作者:BUILDER.COM |  我要评论()
本文关键词:
本文中我们将描述在创建自己的DTD时所要作出的一些设计决定,还将讨论能够改进我们项目的方法。
前几篇文章里,我们已经回顾了使用XML的格式信函编辑器的历程,还介绍了文档类型定义库(DTD)是主要的设计元素。本文中我们将描述在创建自己的DTD时所要作出的一些设计决定,还将讨论能够改进我们项目的方法。

Listing A说明了创建格式信函模板所需的完整DTD。把元素类型包括进来是为了能够格式化文本和指定允许用户输入的地方。Listing B 列出了一个完整的信函模板文件,这个文件使用了以下所描述的元素和技巧。

根元素

我们的文档将信函元素类型或者格式元素类型作为它们的根元素。不同的地方在于缺省的空白大小和是否生成信头。下面就是定义过程:

<!ELEMENT letter ANY><!ELEMENT form ANY><!ATTLIST form
dest CDATA #IMPLIED
top CDATA "0"
bottom CDATA "0"
left CDATA "0"
right CDATA "0"
logo_x CDATA "0"
logo_y CDATA "0"
orient ( land | port ) "port"> 

要注意的是只有格式元素允许我们指定空白大小、起始位置和标识的位置。这些值对于信函来说是固定的。回头再看一下,我们本可以将固定值指定为DTD的一部分。这是个将所有缺省值归档到一个地方的好方法,它让分析程序可以为你做更多的事:

<!ATTLIST letter
top CDATA #FIXED "12"
bottom CDATA #FIXED "6"
left CDATA #FIXED "15"
right CDATA #FIXED "15"
logo_x CDATA #FIXED "6.25"
logo_y CDATA #FIXED "2"
orient CDATA #FIXED "port"> 

#FIXED所指定的值表示一个给定的属性必须具有这些指定值。一般来说,文档不会提供这些属性,但是会接受缺省的值。

选择元素类型

我们下面将要考虑的元素是被严格用来格式化信函文本的。这包括黑体的<b>,斜体的<i>和固定字体的<tt>。以下是对元素的定义:

<!ELEMENT i ANY>
<!ELEMENT b ANY>
<!ELEMENT tt ANY>


要注意这些标记符使用的名字和语义和在HTML中的相同,但是没有任何属性;这是从传统的编程借用过来的好的惯例。如果现存的语法能满足你的需要,不要犹豫,“偷”过来,甚至在你认为它能做得更好时。例如,许多人会争论<tt>的确不是个安在“定长字体”(即使你知道“tt”代表“打字机(typewriter)”头上的好名字。这不是关键。它是个好名字的原因是一种广为人知的语言在使用它。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134