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的地址