《XML精要》
前言
开始学XML也有个把星期了,前后看了几本书关于XML基础的书,感觉讲的甚是凌乱,有些书甚至干脆直接在网上COPY些资料东抄一点西抄一点最后就出版了(比如《XML语言及应用---清华大学出版社》就干脆直接将网上的《XML初学进阶》抄下来,将例子改改就完了)现在中国大学治学的态度可见一斑,直到本周发现了一个IBM的在线XML教程,该教程将XML所有的知识分解为一个个单独的讲座,每堂课还介绍了所需要的前提知识以及所要用到到参考资料,而且教程将知识讲的非常的简练和精确,但可惜该教程是在2002年左右发表的了,在网上资源不是很好找而且比较散,所以我决定将我学的每趟讲座的精要和我个人的读书笔记整理出来形成一个连载,一来巩固我的学习,二来也可以供大家参考,取名《XML精要》。言归正传,那我就开始喽!
//===============================
第一讲《理解XML》精要
第一部分《XML 文档基本规则》:
定义:
无效文档:没有遵守 XML 规范定义的语法规则。如果开发人员已经在 DTD 或模式中定义了文档能够包含什么,而某个文档没有遵守那些规则,那么这个文档也是无效的。
有效文档:既遵守 XML 语法规则也遵守在其 DTD 或模式中定义的规则。
格式良好的文档:遵守 XML 语法,但没有 DTD 或模式。
//===============================
语法:
1 XML声明:xml以声明作为开始,它向解析器提供了关于文档的基本信息。建议使用 XML声明,但它不是必需的。如果有的话,那么它一定是文档的第一样东西即只能放在第一行。
//==========
2 根元素:XML 文档有且仅有一个根元素。
3 XML 元素不能重叠 例如 <b>I <i>really love</b> XML.</i>在xml里是不允许的。
4 不能省去任何结束标记 所有的标签都要成对的出现。
5 XML中可以出现空元素。例如下面两种写法是相同的
<img src="../img/c.gif"></img>
<img src="../img/c.gif" />你可以把“/”写在“<>”中;
6 XML 元素是区分大小写的,xml语言是大小写敏感的。
7 属性必须有用引号括起的值<img src=” ../img/c.gif”>
//===============================
其他:
9 注释:注释可以出现在文档的任何位置。格式:<!—这里是注释-->
//==========
10 处理指令:处理指令是为使用一段特殊代码而设计的标记。在下面的示例中,有一个用于 Cocoon 的处理指令(有时称为 PI),Cocoon 是来自 Apache 软件基金会(Apache Software Foundation)的 XML 处理框架。当 Cocoon处理 XML 文档时,它会寻找以cocoon-process开头的处理指令,然后相应地处理XML 文档。
在该示例中,type属性告诉 Cocoon:XML 文档包含一个 SQL 语句。
<!-- Here's a PI for Cocoon: -->
<?cocoon-process type="sql"?>
//==========
11 实体:下面的示例为文档定义了一个实体。
<!-- Here's an entity: -->
<!ENTITY dw "developerWorks">
无论 XML 处理器在何处找到字符串dw,它都会用字符串developerWorkds代替该实体。XML 规范还定义了五个您可以用来替代不同的特殊字符的实体。这些实体是:<代表小于符号>代表大于符号 "代表一个双引号&apos代表一个单引号(或撇号)&代表一个“与”符号。
//==========
12 名称空间
为了区别不同XML文档档中的同一些标签符号引入名称空间以示区别,定义名称空间的语法如下:要使用名称空间,您要定义一个名称空间前缀,然后将它映射至一个特殊字符串。下面介绍如何定义元素的名称空间前缀:
<?xml version="1.0"?>
<customer_summary
xmlns:addr="http://www.xyz.com/addresses/">
...
<addr:name><title>Mrs.</title> ... </addr:name>
注意:名称空间定义中的字符串仅仅是字符串。对,这些字符串看似 URL,其实不是。称空间唯一的重要性在于其唯一性。所以通常使用URL原因。它只是把那个文本作为字符串使用。这有些令人困惑,但名称空间就是这样工作的。