二.dtd的有关术语
什么是dtd,我们上面已经简略提到。dtd是一种保证xml文档格式正确的有效方法,可以比较xml文档和dtd文件来看文档是否符合规范,元素和标签使用是否正确。一个dtd文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。
dtd文件也是一个ascii的文本文件,后缀名为.dtd。例如:myfile.dtd。
为什么要用dtd文件呢?我的理解是它满足了网络共享和数据交互,使用dtd最大的好处在于dtd文件的共享。(就是上文dtd说明语句中的public属性)。比如,两个相同行业不同地区的人使用同一个dtd文件来作为文档创建规范,那么他们的数据就很容易交换和共享。网上有其他人想补充数据,也只需要根据公用的dtd规范来建立文档,就立刻可以加入。
目前,已经有数量众多的写好的dtd文件可以利用。针对不同的行业和应用,这些dtd文件已经建立了通用的元素和标签规则。你不需要自己重新创建,只要在他们的基础上加入你需要的新标识。
当然,如果愿意,你可以创建自己的dtd,它可能和你的文档配合的更加完美。建立自己的dtd也是很简单的一件事,一般只需要定义4-5个元素就可以了。
调用dtd文件的方法有两种:
1.直接包含在xml文档内的dtd
你只要在doctype声明中插入一些特别的说明就可以了,象这样:
我们有一个xml文档:
<@xml version="1.0" encoding="gb2312"@>
<myfile>
<title>xml轻松学习手册</title>
<author>ajie</author>
</myfile>
我们在第一行后面插入下面代码就可以:
<!doctype myfile [
<!element title (#pcdata)>
<!element author (#pcdata)>
<!entity copyright "copyright 2001, ajie.">
]>
2.调用独立的dtd文件
将dtd文档存为.dtd的文件,然后在doctype声明行中调用,例如,将下面的代码存为myfile.dtd
<!element myfile (title, author)>
<!element title (#pcdata)>
<!element author (#pcdata)>
然后在xml文档中调用,在第一行后插入:
<!doctype myfile system "myfile.dtd">
我们可以看到dtd文档和html中js的调用是差不多的,关于dtd文档具体如何写,我们将在下一章和xml文档的语法一起介绍。
下面我们来了解dtd有关的术语:
1.schema(规划)
schema是数据规则的描述。schema做两件事:
a.它定义元素数据类型和元素之间的关系;
b.它定义元素所能包含的内容类型。
dtd就是关于xml文档的一个schema。
2.document tree(文档树)
"文档树"在前面第二章我们已经提到过,它是文档元素分级结构的象表示。一个文档结构树包含根元素,根元素是最顶级的元素,(就是紧接着xml声明语句后的第一个元素)。看例子:
<@xml version="1.0"@>
<filelist>
<myfile>
<title>...</title>
<author>...</author>
</myfile>
</filelist>
上面的例子分三级结构排列成"树"状,其中的<filelist>就是根元素。在xml和dtd文件中,第一个定义的都是根元素。
3.parent element(父元素)/child element(子元素)
父元素是指包含有其它元素的元素,被包含的元素称为它的子元素。看上面的"结构树",其中<myfile>是父元素,<title>,<author>是它的子元素,而<myfile>又是<filelist>的子元素。象<title>这样没有包含任何子元素的最后一级元素我们也称之为"页元素"。
4.parser(解析软件)
parser是一种检查xml文档是否遵循dtd规范的工具软件。
xml的parser发展为两类:一种是"非确认类paeser",只检测文档是否遵守xml语法规则,是否用元素标识建立了文档树。另一种是"确认类paeser",它不但检测文档语法,结构树,而且比较解析你使用的元素标识是否遵守了相应dtd文件的规范。
parser能独立使用,也可以成为编辑软件或浏览器的一部分。在后面的相关资源列表里,我列出了当前比较流行的一些parsers。
好了,通过第三章的学习,我们已经了解了一些xml和dtd的基本术语,但是我们还不知道怎样来写这些文件,需要遵循什么样的语法,在下一章,将重点介绍有关撰写xml和dtd文档的语法。请继续浏览,谢谢!