DTD学习总结

来源:互联网 发布:娱乐软件下载 编辑:程序博客网 时间:2024/06/05 04:02

DTD浅谈。那么DTD究竟是什么?该如何编写dtd呢?下面将给一些提示

(1)DTD的定义  (个人认为下面一段话记住红字部分即可) 

   DTD文档类型定义(Document Type Definition)
         DTD 是一套关于标记符的语法规则,DTD 是一种保证XML文档格式正确的有效方法,可以通过比较XML文档和DTD文件来看文档是否符合规范,元素和标签使用是否正确。一个DTD文档包含:元素的定义规则,元素间关系的定义规则,元素可使用的属性,可使用的实体或符号规则。

    XML文件提供应用程序一个数据交换的格式,DTD正是让XML文件能够成为数据交换的标准,因为不同的公司只需定义好标准的DTD,各公司都能够依照DTD建立XML文件,并且进行验证,如此就可以轻易的建立标准和交换数据,这样满足了网络共享和数据交互。
DTD文件是一个ASCII的文本文件,后缀名为.dtd。

 

(2)如何编写DTD

1.我使用的编写软件是xmlspy  ,当然myeclipse 也行。直接上代码

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE persons [
 <!ELEMENT persons (person+)>    <!--常用控制符?表示允许出现0次或者多次,+表示1次或者多次,*表示0次或者多次,不写默认1次-->

<!ATTLIST persons id ID #REQUIRED>
 <!ELEMENT person (id,name,password)>
 <!ELEMENT id (#PCDATA)>
 <!ELEMENT name (#PCDATA)>
 <!ELEMENT password (#PCDATA)>
]>

<persons id="p1">
   <person>
          <id>1</id>
         <name>zhangsan</name>
         <password>zhangsan</password>
   <person>
   <person>
            <id>2</id>
            <name>lisi</name>
            <password>lisi</password>
   <person>
</persons>

  红 色部分就是dtd ,它是为了约束下面这段xml的。在写DTD时,需要用!DOCTYPE关键字来定义,格式如上,!DOCTYPE后面的persons是根节点,

  然后 后每个元素都要使用<!ELEMENT >来定义 。persons根元素下有person(允许多个),person下有id ,name ,password.

  如果要使用属性的话用 <!ATTLIST >关键字  persons 节点后的 id="p1"就是属性。

2.dtd与xml分离编写

在Myeclipse中建一个java工程 在src下 建一个classroom.dtd 和 classroom.xml

先编写classroom.dtd:

<?xml version="1.0" encoding="utf-8"?>
<!ELEMENT classroom (Name,grade,students)>
<!ATTLIST classroom id ID #REQUIRED>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT grade (#PCDATA)>
<!ELEMENT students (student+)>
<!ELEMENT student (id,Name,age)>
<!ELEMENT id (#PCDATA)>
<!ELEMENT Name (#PCDATA)>
<!ELEMENT age (#PCDATA)>

再编写classroom.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE classroom SYSTEM "classroom.dtd">  
<classroom id="c1">
 <claName>11计科</claName>
 <grade>T信息</grade>
 <students>
  <student>
   <id>1</id>
   <stuName>zhangsan</stuName>
   <age>22</age>
  </student>
  <student>
   <id>2</id>
   <stuName>lisi</stuName>
   <age>22</age>
  </student>
 </students>
</classroom>

因为我们的DTD在本地,所以我们用的是SYSTEM关键字 如果不是在本地 用PUBLIC 后面跟DTD的地址

 

 


 

0 0
原创粉丝点击