XML入门教程-DTD的基本要素

发布时间:2020-06-02编辑:脚本学堂
XML入门教程,DTD的基本要素

本节介绍DTD的基本要素
DTD的全称是“Document Type Definition“(文件类型定义)。
它用来规范XML文件的格式,它必须出现在文件头(Prolog)中,以便XML校验器在一开始便可以得到该份XML文件的格式定义。
XML分为两类:有效XML文档和简化格式XML文档。
有效是指有一个DTD参考文件的XML文档 ,一个有效的XML文档必须是简化格式的XML文档,跟随着这个文档的DTD文件的有效性,促进了XML执行程序的运行以及文档在兼容XML浏览器的显示。
要使用DTD进行有效性检验,就要使用文档类型定义声明指定DTD。例如:<?xml version="1.0" standalone="no"?>
<!DOCTYPE portal SYSTEM "http://www.w3c.com/dtd/portal.dtd">
<portal>
  <name>Jims</name>
  <email>Jims@163.com</email>
  <email>Jims@21cn.com</email>
</portal> 
文档类型声明位于XML声明之后,根元素之前。如果DTD文档位于本机,可用路径名直接指出DTD文档的位置。如果DTD位于XML文档外,则叫外部DTD子集。我们可以结合内外DTD,共同组成一个DTD来为XML文档作验证。
具体地说,DTD是一个或是一些用XML书写的文件。它包含了对一种文件的正式定义。它定义了文件中的元素能用什么名字,能放在什么位置,应该怎样组合。在这里举一个简单的例子。比如说想要文件可以描述一组<List>,其中每个<List>由可以包含若干个<Item>。那么DTD中应该有以下语句:     
<!ELEMENT List (Item)+>
<!ELEMENT Item (#PCDATA)>
  这样一个框架定义了一个表(list),它可以包含若干个项(items)。每一个项只能包括文本的内容。当处理器处理XML文件时将自动检查DTD,以此确定文件中元素从哪而来,以及它们之间是什么关系。上面的框架允许生成下面的一个表:
<List><Item>Chocolate</Item><Item>Music</Item><Item>Surfing</Item></List>
  而这样一个表在屏幕上是怎样一个表象,取决于样式表(Stylesheet)。在HTML中要在文件中指定应是怎样的形式。使用DTD表明你能够确定一类文章的结构和格式。
文档类型声明中的每一项都是元素声明,定义了每个元素的约束。元素声明的格式为:
<!ELEMENT element_name (content_model)>
内容包括:1. #PCDATA,规定元素只包含已析的字符数据。
2. 子元素,可指明元素的子元素。也可用逗号为分隔符,指明多个子元素。并且子元素出现的次序必须按定义时的顺序。
3. 子元素的个数,我们可通过正则表达式来规定子元素的个数。①?,允许零个或一个该元素 ②*,允许零个或多个该元素 ③+,允许一个或多个该元素
4. 可选项(|),选项是一个参数列表,每个参数间用“|”分隔,代表能且只能选一个子元素。
5. 小括号,可用小括号把选项括起来,以表达更丰富的意思,如我们想表示choice元素必须包含一个good子元素,并且必须包含ok子元素或bad子元素的一个。
6. 混合内容,在一些文档中,一个元素可能既包含子元素,也包含字符串,这些内容叫混合内容。
7. 空元素,某些元素不用包含任何内容,称之为空元素。写成以/>结束的独立标签。
8. ANY,允许元素内包含任意内容。该选项在dtd测试时很有用,在生产系统中尽量不要使用。
一个有效的XML文档,必须对元素的属性进行声明。使用ATTLIST声明来完成,一个ATTLIST可以为一个元素类型声明多个属性。
有效文档中使用的每个元素都必须在文档的DTD中用元素声明进行声明。
element_name可是任何合法的XML名称,content_model(内容模型)指定元素可以或必须包含的子元素以及子元素的顺序。