首页 > 代码库 > XML(二)

XML(二)

 前面简单介绍了如何定义一个XML.想想如果没有一个规范来对XML文档进行一个格式等的限制,那么一个XML文档可能只能被定义这个XML文档的人读懂.DTD就是一种对XML文档约束的模式语言.

 DTD介绍:

  DTD,Document Type Definition.是文本格式文件,后缀名会.dtd.一个DTD文件中可以包含元素与元素之间的关系的定义,元素的属性定义,以及实体和符号的定义.通过比较DTD文件与XML文档,就可以判断XML文档是否符合某种约束规范,以及其中的元素和标签使用是否正确.

 DTD的定义:

  .dtd文件是一个非常简单的文件,<!ELEMENT 元素名称 使用规则>为其通用的语法规则.它定义每一个元素.例如:<!ELEMENT 书架(书名,作者,售价)>中"书架"为元素名称,"(书名,作者,售价)"为使用规则.使用规则定义了元素中包含的组成成分,以及每种组成成分出现的次数,次序.例如下面这个DTD文件:

1 <!ELEMENT 书架 (书+)>2 <!ELEMENT 书(书名,作者,售价)>3 <!ELEMENT 书名(#PCDATA)>4 <!ELEMENT 售价(#PCDATA)>5 <!ELEMENT 作者(#PCDATA)>

 

  #PCDATA表示元素中嵌套的内容为纯文本字符串,(书名,作者,售价)用户表示元素要嵌套的子元素,并且这些子元素要按顺序依次出现.(书+)中+表示他修饰的成分必须出现一次或者多次.

 外部引入DTD文件:

  DOCTYPE的声明语句要紧跟在XML文档声明语句之后.有两种格式:

  1.<!DOCTYPE 文档类型名称 SYSTEM "DTD文件的URL">

  2.<!DOCTYPE 文档类型名称 PUBLIC "DTD名称" "DTD文件的URL">

  文档类型名称由XML文档的编写者自己定义.一般是XML文档的根元素名称.关键字SYSTEM表明XML文档所遵循的是一个本地的DTD文件.PUBLIC表明XML文档遵循的是一个权威机构制定的DTD文件.

 例子演示

  book.xml文件如下:

 1 <?xml version="1.0" encoding="gb2312" ?> 2 <!-- 3     导入css样式, 4 --> 5 <?xml-stylesheet type="text/css" href="http://www.mamicode.com/book.css"?> 6  7 <!--  8     在XML文件中导入外部的DTD文件.DTD(Document Type Definition) 9 -->10 <!DOCTYPE book SYSTEM "book.dtd">11 12 <!--13     在XML文件中直接定义DTD,如下14     15     <!DOCTYPE 书架[16         <!ELEMENT 书架 (书+)>17         <!ELEMENT 书(书名,作者,售价)>18         <!ELEMENT 书名(#PCDATA)>19         <!ELEMENT 作者(#PCDATA)>20         <!ELEMENT 售价(#PCDATA)>21     ]>22 -->23 24 <书架>25     <>26         <书名>基于J2EE的AJAX宝典</书名>27         <作者>李刚</作者>28         <售价>58元</售价>29     </>30     <>31         <书名>JAVA_WEB开发核心内幕</书名>32         <作者>大刚</作者>33         <售价>60元</售价>34     </>35     <>36         <书名>锋利的JQUERY</书名>37         <作者>小刚</作者>38         <售价>70元</售价>39     </>40 </书架>

 

 而在与book.xml文件的同一目录中定义book.dtd,如下:

1 <!ELEMENT 书架 (书+)>2 <!ELEMENT 书(书名,作者,售价)>3 <!ELEMENT 书名(#PCDATA)>4 <!ELEMENT 售价(#PCDATA)>5 <!ELEMENT 作者(#PCDATA)>

 之后在浏览器中可以看到效果如下:

 

 在XML文档内部直接嵌入DTD

  可以在XML文档里直接嵌入DTD.格式如下:<!DOCTYPE 根元素名[DTD定义语句]>.在上面的代码中也有演示.

 在XML文档内部引入CSS

  使用<?xml-stylesheet type="text/css" href="" ?>可以将指定的CSS样式导入.由于CSS不支持中文命名,所以在用css进行美化时,要将XML文档中的元素命名为英文.

  例如person.xml如下:

1 <?xml version="1.0" encoding="gb2312" ?>2 <?xml-stylesheet type="text/css" href="http://www.mamicode.com/books.css" ?>3 4 <person>5     <name>张三</name>6 </person>

 

   person.css如下:

<?xml version="1.0" encoding="gb2312"?>name{    color:red;    font-size:20px;    font-family:"黑体"}