当前位置:编程技术网 > 技术文章 > xml入门序列教程 > 文章详细内容

xml入门序列教程(5) - 简单的了解一下DTD

     DTD作为和xml差不多时间发布的一项技术标准,已在逐步的被Schema所取代,当然很多地方还是在沿用这样一个技术,所以简单的了解一下还是有必要的。

 

一、DTD基本概念、及其内容(Document Type Definition)

    DTD是 定义xml数据的格式。包括
     1、 元素(ELEMENT) 及 元素的内容 规则。
     2、 元素之间的关系规则。
     3、 属性(ATTLIST) 及 属性值 的规则。
     4、 可使用的实体(ENTITY)。

 

二、基本语法以及分类
    基本语法:<!DOCTYPE 根元素 [ 定义的内容 ]>
    按照DTD代码和XML是否同处一个文件来分类,包括3种:
     1、 内部DTD文档格式: <!DOCTYPE 根元素  [定义内容]>
     2、 外部DTD文档格式: <!DOCTYPE 根元素  SYSTEM "外部DTD文件路径">
     3、 内外部DTD文档结合格式: <!DOCTYPE 根元素  SYSTEM  "外部DTD文件路径"  [定义内容]>

 

三、元素的定义
    基本语法:<!ELEMENT 元素名称 元素的内容的类型>
    主要是要使用ELEMENT关键字,然后要设置元素名称。另外一个包含很多种情况的就是 元素的内容的类型。
     元素的内容的类型包含如下情况:
      1、 EMPTY             (空元素)不能包含任何子元素和文本,只能有属性。
      2、(#PCDATA)     只能有文本,不能有子元素。
      3、 ANY                   可为任何在DTD中定义的元素内容 或 任何文本。
      4、(子元素1,子元素2 …) 
                                       纯元素类型 只含子元素,逗号分割子元素。且顺序不可颠倒,不能包含文本
      注意:子元素可以使用修饰符号来限定出现此次数
          ? 表示 0-1次 ;     + 表示 1-多次;     * 表示 0-多次 
      注意:子元素可以使用分组或者来设定
           ()分组;         |  选择
            eg: (age|birthday) 任选一个



 

四、属性的定义
    基本语法:<!ATTLIST 所属元素名称
                             属性名称 属性值类型 属性的特点
                             ……
                       >

  常用的 属性值类型 :
     1、CDATA:任何字符(包括数字和中文)
     2、NMTOKEN/NMTOKENS:不包括中文的 任何字符
             NMTOKEN不能包含空格
             NMTOKENS可以以空格分割为多段。
     3、ID:各元素的属性值不能重复 , 属性值必须合乎元素名命名规范。
     4、IDREF/IDREFS:指向文档中其它地方声明的ID类型的值。
             IDREFS : 指向以空格分割的多个ID值。
     5、(值1|值2 …):Enumerated枚举类型的值。(设定取值范围)
     6、ENTITY/ENTITIES:包含一个或多个实体,属性中调用实体不用&
 

  常用的 属性的特点 :
     1、#REQUIRED                 必须有
     2、#IMPLIED                     可选
     3、#FIXED “值”            固定值  
     4、“值”                          默认值

 

五、实体 :是可重复使用的存储单元 ,相当于常量。
  作用 :避免重复输入,方便内容修改。
  分类 :
     1、内部实体
             语法 :<!ENTITY 实体名 "实体值">
             调用     &实体名;
     2、外部实体 :通过URI指向外部的存储单元。
             语法 :<!ENTITY 实体名SYSTEM "URI/URL">
             调用    &实体名;
     3、参数实体 :在DTD代码中使用的实体。
            语法 :<!ENTITY %  实体名 "实体值">
            调用 %实体名;
     4、系统定义实体 存储特殊字符
           &lt;               <
           &gt;              >
           &amp;          &
           &quot;          "
           &apos;          '

 

六、综合示例
xml文件代码


test.dtd

作者|来源:原创(17fx.net)发表于:2009-2-26 22:41:49
下一篇 没有了