导读:大致上,一个XML文档可以由三个部分组成,即声明区、定义区和文档主体区。在XML文档中,各个组成部分都包含特定的内容,有着不同的作用。本篇博客,通过分析上篇博客中的XML实例,来了解XML文档 的各个基本组成部分。
一、代码再现
<span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?> <?xml:stylesheet type="text/xsl" href="BOOK.XSL"?> <booklibrary> <book> <title> 数字图像处理学 </title> <author> 陈秋琦 </author> <publisher> 电子工业出版社 </publisher> <price moneytype="RMB"> 49.00 </price> </book> <book> <title> C++Builder开发技术 </title> <author> 李东 </author> <author> 王宏 </author> <publisher> 水利水电出版社 </publisher> <price moneytype="RMB">40.00</price> </book> <book> <title> VC++编程技术 </title> <author> 高强 </author> <publisher> 人民邮电出版社 </publisher> <price moneytype="RMB"> 35.00 </price> </book> </booklibrary></span>
二、文档分析
2.1,声明区
<span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?> <?xml:stylesheet type="text/xsl" href="BOOK.XSL"?></span>第一行:表示当前的XML文档应当符合XML1.0规范,编码方式是UTF-8;第二行:处理指令,该指令通知浏览器去寻找BOOK.XSL文件,并用它来表现本篇XML文档。
2.2,定义区
<span style="font-family:KaiTi_GB2312;font-size:18px;"><!DOCTYPE booklibrary[ <!ELEMENT booklibrary (book*)> <!ELEMENT book (title,author,publisher,price)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT publisher (#PCDATA)> <!ELEMENT price (#PCDATA)> <!ENTITY ENT1 "中国水利水电出版社"> ]></span>首先指明根元素booklibrary可以包含多个子元素book,然后规定每个子元素book又必须按照指定的顺序:title,author,publisher,price编写。然后是规定了四个子元素中的内容是#PCDATA(解析的字符数据)。如果在XML文档中,没有按照以上的要求编写,那么这个XML文档就是无效的。
备注:没有有效性验证的XML文档也是允许的。
2.3,文档主体区
文档主体区包含了一个XML文档所描述对象的全部具体信息。如上篇博客中代码所示。
三、XML文档的物理结构
<span style="font-family:KaiTi_GB2312;font-size:18px;"><?xml version="1.0" encoding="UTF-8" ?> <?xml:stylesheet type="text/xsl" href="BOOK.XSL"?> <!DOCTYPE booklibrary[ <!ELEMENT booklibrary (book*)> <!ELEMENT book (title,price)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT publisher (#PCDATA)> <!ELEMENT price (#PCDATA)> <span style="color:#ff0000;"><!ENTITY ENT1 "中国水利水电出版社"></span> ]> <booklibrary> <book> <title> 数字图像处理学 </title> <author> 陈秋琦 </author> <publisher> 电子工业出版社 </publisher> <price moneytype="RMB"> 49.00 </price> </book> <book> <title> C++Builder开发技术 </title> <author> 李东 </author> <author> 王宏 </author> <publisher><span style="color:#ff0000;"> &ENT1;</span> </publisher> <price moneytype="RMB">40.00</price> </book> <book> <title> VC++编程技术 </title> <author> 高强 </author> <publisher> 人民邮电出版社 </publisher> <price moneytype="RMB"> 35.00 </price> </book> <book> <title> ASP.NET课程设计案例精编 </title> <author> 郝思嘉 </author> <publisher><span style="color:#ff0000;"> &ENT1;</span> </publisher> <price moneytype="RMB"> 30.00 </price> </book> </booklibrary> </span>
XML的物理结构是从如何使用XML文档中各元素的角度来人事和理解一个XML文档的。XML文档由一个个存储单元组成,通常把这些单元成为实体(ENTITY),每个XML文档的物理结构都包含一个根实体,也称为文档实体。这个实体是由XML本身给出的,不用显示定义就可以使用。当需要使用除根实体以外的其他实体时,则需要在文档类型DOCTYPE中进行显示定义。XML文档中的所有实体,构成了XML文档的物理结构。
在以上代码中,请注意红色的部分,实体充当着类似别人的角色。当需要输入实体所代表的一段文本时,只需要引用对应的实体名称即可。XML解析器,会自动将这个名称替换为相应的文本,这个过程就是所谓的文本替换。PS:有没有想到C++里面宏的概念。
四、总结
XML文档的基本组成介绍完了,细细分析,其实也挺简单的。但是就是写的少了,里面的一些语法定义不熟悉,老是多个空格,或者缺个符号的。不过相信,多写写就会好了。接下来会介绍,实现XML文档表现形式的另一种方式:CSS样式层叠表。