文档类型声明

   区别与DTD----文档类型定义 (Documnet Type Definition)
   文档类型声明指定了文档使用的DTD。文档类型声明出现在文档的序言部分,处在XML声明之后的基本元素之前,它可能包括文档类型定义或是文档类型定义所在文档的URL。在有些情况下文档类型定义有内外两个子集,刚文档类型声明可能同时包括以上两种情况。
   文档类型声明同文档类型定义不是一回事。只有文档类型定义缩写为DTD。文档类型声明必须包含或者引用文档类型定义,但文档类型定义不包括文档类型声明,这造成了不必要的混乱。遗憾的是XML似乎与这术语密不可分,幸运的是在多数情况下二者的区别并不重要。
   回顾一下一个基本的XML文档
  
1<?xml version="1.0" standalone="yes">
2<REGARD>
3HelloXML!
4</REGARD>
5
  这个文档包含的单一元素REGARD(<? XML version="1.0" standalone="yes">是一条处理指令,不是元素)。一面代码显示了这一文档,但这次带有文档类型声明。文档类型声明声明了基本元素是REGARD。文档类型声明也包含文档类型定义,它声明了REGARD元素包含可析的字符数据。
  带有DTD的XML文档
1<? xml version="1.0" standalone="yes">
2<! DOCTYPE REGARD [
3<! ELEMENT REGARD (#PCDATA)>
4]>
5<REGARD>
6HelloXML!
7</REGARD>
  比较上述两个代码,惟一的区别在于前三行
1<! DOCTYPE REGARD[
2<! ELEMENT REGARD(#PCDATA)>
3]>
   这几行就是文档类型声明,文档类型声明在XML声明与文档本身之间。XML声明与文档类型声明统称为文档序言(Prolog)。
   文档类型声明以<! DOCTYPE 为开始,以]>为结束。通常将开始和结束放在不同的行上,但断行和多余的空格并不重要。同一文档类型声明也可以写成一行。如下:
1<! DOCTYPE REGARD[<!ELEMENT REGARD(#PCDATA)]>
   在本例中基本元素名称-REGARD跟在<!DOCTYPE之后。这不仅是一个名称,也是一项要求。任何带有这种文档类型声明的合法文档必须有基本元素。在[和]之间的内容是文档类型定义。
   DTD由一系统声明了特写的元素、实体和属性的标记声明所组成。其中的一项声明基本元素。
  
1<!ELEMENT REGARD(#PCDATA)>
   单个行<! ELEMENT REGARD(#PCDATA)>是一项元素类型声明。在本例中,声明的元素名称是REGARD,它是惟一的元素。这一元素可以包含可析的字符数据。可解析的字符实质上是除标记文本外的任何文本。这也包括实体引用,在对文档进行语法分析时,实体引用就被文本所取代。
   当然,文档也可以与样式单结合起来来格式化文档。实际上可以用同一个样式单,如下,只要在序言中增加<? xml-stylesheet?>处理指令即可。
  
1<? xml version="1.0" standalone="yes"?>
2<? xml-stylesheettype="text/css" href = "regard.css"?>
3<! DOCTYPE REGARD[
4<ELEMENT REGARD(#PCDATA)>
5]>
6<REGARD>
7Hello
8</REGARD>
9

  
posted on 2007-12-22 09:18  C#家园  阅读(287)  评论(0编辑  收藏  举报