导读:大致上,一个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,author,publisher,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样式层叠表。

posted on 2016-01-12 23:00  何红霞  阅读(1537)  评论(0编辑  收藏  举报