XML学习总结(二)

来源:互联网 发布:制冷系统设计软件 编辑:程序博客网 时间:2024/05/16 00:44

  一,DTD概述   

  DTD (Document Type Define)就是要定义标记语言,这里是定义XML ,因为XML允许我们自己定义标记,那么标记的含义是什么?这就需要我们定义,我们可以认为DTD就是定义标记语言的语言。

    <?xml version="1.0"?>

      <email>

             <from>abc@yahoo.com.cn</from>

             <to>def@yahoo.com.cn</to>

             <time>2009/2/14</time>

      </email>
     以上的一个简单的xml程序,符合xml的语法规范,但是里面的标记全部是自己定义的,这些标记的含义只有程序员自己清楚,如何让计算机和别人也知道?这就需要我们使用DTD语言编写DTD文档。

     一个没有DTD文档定义的XML文件只是一个良构(well-formed)文件,如果加上DTD文档,并且XML上的标记符合DTD上的定义,我们就称这个XML是一个合法的XML文件。

     <?xml version="1.0"?>

     <!ELEMENT email(from,to,time)>

     <!ELEMENT from(#PCDATA)>

     <!ELEMENT to(#PCDATA)>

     <!ELEMENT time(#PCDATA)>

以上的DTD文档定义了XML的跟标记,以及类型

 一个标记语言由三部分组成:标记的声明;实体的声明;属性的指定和声明,下面就以上几个方面来看DTD是如何定义的。

二,标记的声明

   DTD的声明可以放在XML文档内和文档外,格式有所区别。

  A: 内部DTD的声明例子:

   <?xml version="1.0" encoding="gb2312"?>

   <!DOCTYPE person[

    <!ELEMENT person(#PCDATA)>

   ]>

   <person>lee</person>

  几点说明:

 1,添加文档类型声明

  <!DOCTYPE person[

   ]>这里person是根标记,这是文档类型声明的格式,根标记的声明是必不可少的

 2,元素定义的语句

   <!ELEMENT person(#PCDATA)> 该语句的作用是声明一个元素,名字叫<person>,数据类型是PCDATA(可解析的数据类型,通常是文本数据)

   如果元素有嵌套,则在后面用()说明元素的顺序

  <!ELEMENT person(name,addr)> 说明person嵌套有子元素name和addr并且顺序一定要依照声明的顺序,接着就是声明name和addr的类型等。

  如果一开始我们并不知道是否有子元素或者子元素的情况不清楚,则用关键字ANY

  <!ELEMENT person ANY>

 B:外部DTD的声明例子:

DTD文档:lee.dtd

   <?xml version="1.0"?>

   <!ELEMENT person(#PCDATA)>

XML文档:

  <?xml version="1.0" encoding="gb2312" standalone="no"?>

   <!DOCTYPE person SYSTEM "lee.dtd">

   <person>lee</person>
  

内部DTD和外部DTD的区别:

   其实没有根本的区别,在使用外部DTD的时候需要加上路径和DTD文件名,以及在根标记的后面多了一个DTD说明参数

   SYSTEM:说明这个DTD是一份私人的文档类型定义,即将来要用在一个小群体中使用。

   PUBLIC:说明DTD是公共DTD,一些应用程序在开发的时候就提前将这部分DTD文档集成到自己的DTD库中,以便随时使用

原创粉丝点击