最火下载站首页
手机版
最火下载站
关注公众号
最火下载站

当前位置:首页 > 网络知识 > Web前端 > 工具与技巧> 文档类型定义(DTD)的语法介绍与使用

文档类型定义(DTD)的语法介绍与使用

文章作者:网友投稿 发布时间:2008-12-06 来源:网络

  烈火建站网文档 文档类型定义(DTD)是用来定义一段合法的XML文档块。它用来验证你的XML文档是以一系列合法的元素构成的。  DTD可以在XML文档内部定义,也可以在通过外部文件的方式引入    1 内部声明方式    如果要把DTD包含在你的XML的内部,需要以

  烈火建站学院文档 文档类型定义(DTD)是用来定义一段合法的XML文档块。它用来验证你的XML文档是以一系列合法的元素构成的。
 DTD可以在XML文档内部定义,也可以在通过外部文件的方式引入
   1 内部声明方式
   如果要把DTD包含在你的XML的内部,需要以以下的语法包含一个“DOCTYPE”声明:
以下为引用的内容:
 
 下面是一个包含DTD的XML例子:

 
 
 
 
 
]>

  Tove
  Jani
  Reminder
  Don't forget me this weekend

The DTD above is interpreted like this:

  以上的DTD声明解释如下:
  第二行!DOCTYPE note声明这是一个note类型的文档
  第三行!ELEMENT note声明note元素包含四个子元素:to,from,heading,body
  第四行的!ELEMENT to声明to元素的类型是“#PCDATA”
  第五行的!ELEMENT from声明from元素的类型是“#PCDATA”
  以此类推... ...
  2 外部DOCTYPE声明
  If the DTD is external to your XML source file, it should be wrapped in a DOCTYPE definition with the following syntax:
  如果DTD是在XML源文件的外部,就需要在XML文件内用以下的语法声明DOCTYPE
以下为引用的内容:

以下是一个使用外部DOCTYPE声明的XML例子



Tove
Jani
Reminder
Don't forget me this weekend!
 
以下是note.dtd 文件的内容:





  3 为什么要使用DTD
  With DTD, each of your XML files can carry a description of its own format with it.
  使用DTD,有以下好处:
  1,你的每一个XML文件可以描述自身的结构
  2,使不相关的人对于某种用于交流的数据达成统一的共识
  3,你的应用程序可以通过一个标准(DTD)对来自于外部的数据(XML文件)进行有效性验证。当然你也可以用它来验证你自己的数据

  二,DTD-XML构造块
  The main building blocks of both XML and HTML documents are tags like .....
  XML和HTML文档的主要构造块都是像“....”这样的标签
  1,XML文档的构造块
  Seen from a DTD point of view, all XML documents (and HTML documents) are made up by the following simple building blocks:
  从一个DTD的视角出发,所有的XML文档(包括HTML文档)是以下几种简单的构造块构成的:
  Elements
  Attributes
  Entities
  PCDATA
  CDATA
  以下是对每个构造块的简要的解释:
  1,Elements(元素)
  Elements are the main building blocks of both XML and HTML documents.
  元素是主要的XML和HTML文档的构造块
  在HTML中常见的有"body","table";而在XML中,元素可能是“note”,“message”。
  元素可以包含文本,其他元素或者为空。例如空的HTML元素有hr,br和img;
  例子:

以下为引用的内容:
body text in betweensome message in between

  2,Attribute(属性)
  属性为元素提供了额外的信息
  属性总是被放置在一个元素的起始标记中,以名值对的方式出现。下面是一个包含图片来源的img元素的例子
  
  元素名是“img”,属性名是“src”,值是“computer.gif”.
  3,Entities (实体)
  实体是用来定义通用文本的变量。实体引用是对实体的引用(译者注:好废的话啊,原文是“Entity references are references to entities.”)
  你最有可能知道的HTML实体引用是“ ”,这是用在HTML中的“不换行的空格”实体。
  以下是XML中预定义的实体:
  实体引用  代表字符
以下为引用的内容:
<         <
>         >
&        &
"       "
'       '

  4,PCDATA
  PCDATA的意思是可解析的字符数据。
  可以把“字符数据”看成是在一个XML元素的开始标签和结束标签之间的文本。
  PCDATA是将会被一个解析器解析的文本。在这个文本中的标签会被当作标记和实体而继续被展开(译者注:就是说如果文本中包含有tag,解析  器将会递归的解析下去)
  5,CDATA
  CDATA also means character data.
  CDATA的意思是字符数据。
  CDATA是不会被解析器解析的文本。在text中的标签将不会被认为是标记和实体而展开 。#p#副标题#e#

  三 DTD-元素

  1,声明一个元素
  在DTD中,XML元素使用“element”声明的。一个element声明有以下两中方式的语法声明:
  
   或者
  
   空元素
  空元素可以用关键字“EMPTY”作为其类型
  例子:
  
  example:XML example:

  只包含字符的元素

  只包含字符的元素是用包含在圆括号里的“#PCDATA”来声明的:
  
  例子:
  
  包含任意内容的元素
  是以关键字“ANY”作为其类型来声明的,可以包含任何可解析的数据。
  
  例子
  

  包含子元素的元素
  包含子元素的元素是以在圆括号中包含所有子元素的形式定义的:
     (child-element-name)>
  或者
     (child-element-name,child-element-name,.....)>
   例子:
  
  一旦在圆括号中定义了子元素,那么XML文档中的子元素必须以声明的顺序出现
  “note”元素的完整声明如下:
  
  
  
  
  

  声明只能出现一次的子元素。语法:
  
  例子:
  

  上面例子演示了子元素必须出现,并且只能出现在“note”元素里面一次。


  声明出现至少一次的子元素。语法:
  
  例子:
  

  “+”号表示子元素在“note”元素必须至少出现一次

  声明出现零次或多次的子元素。语法:
  
  例子:
  

  "*"号表示子元素在“note”元素中可以不出现或者出现多次。

  声明出现零次或一次的子元素。语法:
  
  例子:
  

  "*"号表示子元素"message"在“note”元素中可以不出现或者出现一次。


  声明多种选择中取其一的内容,例子:
  
  上面的例子声明:note元素必须包含一个“to”元素,一个“from”元素,一个“header”元素。还有一个message或者body元素(二者只能取其一)


  声明混合内容。例子:
  
  上面的例子说明,note元素可以包含零个或者多个的可解析字符串或to元素或from元素或header元素或message元素(这五种取一)#p#副标题#e#

 

  四DTD – 属性
  在一个DTD当中,属性都是用一个ATTLIST描述来进行表述的。
  属性描述:
 
   一个属性描述通过以下语句:
 
以下为引用的内容:
 attribute-type default-value>
example:
DTD example:
XML example:
  一个attribute-type可以被赋予以下值:

注解
CDATA
The value is character data这个值是字符数据
(en1|en2|..)
The value must be one from an enumerated list这个值来自列举清单中
ID
The value is a unique id 这个值是唯一的ID
IDREF
The value is the id of another element这个值是另外的元素的ID
IDREFS
The value is a list of other ids这些值是其他ID中的一列
NMTOKEN
The value is a valid XML name这个值是个有效的XML名称
NMTOKENS
The value is a list of valid XML names这些值是有效的XML名称中的一列
ENTITY
The value is an entity 这个值是个实值。
ENTITIES
The value is a list of entities这些值是实值中的一列
NOTATION
The value is a name of a notation这个值是一个注释的名称
xml:
The value is a predefined xml value这个值是一个提前被定义的XML

  default-value可以有以下几种:

注解
value
The default value of the attribute是某属性下的默认值
#REQUIRED
The attribute value must be included in the element这个属性值必须被包含在这个元素中
#IMPLIED
The attribute does not have to be included这个属性不是必须被包括
#FIXED value
The attribute value is fixed这个属性值是固定的

  一个默认的属性值的例子:
  DTD:
以下为引用的内容:
Valid XML: "square"
  在以上这个例子当中,”square”这个元素就通过CDATA类别下面的”wdith”属性被定义为一个空的元素,如果没有用width这个属性来进行明确说明,就会产生一个默认值”0”。
   #IMPLIED 非必须的
  语法
  attribute-type #IMPLIED>
   例子
  DTD:
  
  合法的XML:
  
  合法的 XML:
  
 
  如果你不想强制作者使用一个属性,而你毫无选择余地的得到一个默认值,那么就使用#IMPLIED这个关键词
 
  #REQUIRED 必须的
  语法
  attribute-type #REQUIRED>
 
  例子
  DTD:
  
  合法的 XML:
  
  非法的 XML:
  
  如果你需要作者必须给出一个属性的值,那么就使用#REQUIRED这个关键词。
 
  #FIXED 固定的
  语法
  attribute-type #FIXED "value">
 
  例子
  DTD:
  
  合法的 XML:
  
  非法的 XML:
  #p#副标题#e#
 
  当你想要有使用一个不允许作者修改的固定的值,那么可以使用#FIXED关键词。如果作者输入别的值,则XML解析器将会返回一个error
 
  列举属性值
以下为引用的内容:
Syntax:
 attribute-name (en1|en2|..) default-value>
DTD example:
 
XML example:
or
 

  当你想要那些属性值成为固定的一系列逻辑值之一时,可以使用列举属性值
   五 实体
  实体就是指向通用文本的变量名
  -实体可以在内部或者外部定义

以下为引用的内容:
--------------------------------------------------------------------------------

内部实体声明,语法:

DTD Example:


XML example:
&writer;©right;
 
--------------------------------------------------------------------------------
外部实体声明,语法:

DTD Example:
 SYSTEM "http://www.w3schools.com/dtd/entities.dtd">
 SYSTEM "http://www.w3schools.com/dtd/entities.dtd">
 XML example:&writer;©right;

上一篇: Dreamweaver表格文字自动换行的小技巧

下一篇: float:left;之后right是100%宽度显示问题的解决

共有0条评论网友评论