XML的文档格式 
首先介绍XML文档内容的基本单元——元素,它的语法格式如下: 
〈标签〉文本内容〈/标签〉
元素是由起始标签、元素内容和结束标签组成。用户把要描述的数据对象放在起始标签和结束标签之间。例如: 
<姓名>王平</姓名> 
无论文本内容有多长或者多么复杂,XML元素中还可以再嵌套别的元素,这样使相关信息构成等级结构。下面的例子中,在<employees>的元素中包括了所有职员的信息,每位职员都由<employee>元素来描述,而<employee>元素中又嵌套了<name>和<salary>元素。 
例1: 
<employees> 
<employee> 
<name>Lars Peterson</name> 
<salary>25000</salary> 
</employee> 
<employee> 
<name>Charlotte M. Cooper</name> 
<salary>34500</salary> 
</employee> 
</employees> 
除了元素,XML文档中能出现的有效对象是:处理指令、注释、根元素、子元素和属性。 
● 处理指令 
处理指令给XML解析器提供信息,使其能够正确解释文档内容,它的起始标识是“<?”,结束标识是“?>”。常见的XML声明就是一个处理指令: 
<?xml version=“1.0”?> 
处理指令还可以有其他的用途,比如定义文档的编码方式是GB码还是Unicode编码方式,或是把一个样式单文件应用到XML文档上用以显示。 
● 注释 
注释是XML文件中用作解释的字符数据,XML处理器不对它们进行任何处理。注释是用“<!--”和“ -->”引起来的,可以出现在XML元素间的任何地方,但是不可以嵌套: 
<!--这是一个注释--> 
● 根元素和子元素 
如果一个元素从文件头的序言部分之后开始一直到文件尾,包含了文件中所有的数据信息,我们称之为根元素。 
XML元素是可以嵌套的,那么被嵌套在内的元素称为子元素。在前面的例子中,<employee>就是<employees>的子元素。 
● 属性 
属性给元素提供进一步的说明信息,它必须出现在起始标签中。属性以名称/取值对出现,属性名不能重复,名称与取值之间用等号“=”分隔,并用引号把取值引起来。例如: 
<salary currency=“US$”> 25000 </salary> 
上例中的属性说明了薪水的货币单位是美元。 
XML的语法 
XML文档的基本结构由序言部分和一个根元素组成。序言包括了XML声明和DTD(或者是XMLSchema),DTD(Document
Type Define,文档定义类型)和XMLSchema都是用来描述XML文档结构的,也就是描述元素和属性是如何联系在一起的。 
例如,在例1的文档前面加上如下的序言部分,就构成了一个完整的XML文档:
<?xml version=“1.0”?> 
<!DOCTYPE employees SYSTEM“employees.dtd”> 
一个XML文档中有且仅有一个根元素,其他所有的元素都是它的子元素,在例1中,<employees>就是根元素。 
一个XML文档首先应当是“格式良好的”(Well-Formed),该规定的正式定义位于: 
http://www.w3.org/TR/REC-xml 
“格式良好的”XML文档除了要满足根元素唯一的特性之外,还包括: 
● 起始标签和结束标签应当匹配:结束标签是必不可少的; 
●大小写应一致:XML对字母的大小写是敏感的,<employee>和<Employee>是完全不同的两个标签,所以结束标签在匹配时一定要注意大小写一致; 
● 元素应当正确嵌套:子元素应当完全包括在父辈元素中,下面的例子就是嵌套错误: 
<A> 
<B> 
</A> 
</B> 
正确的嵌套方式如下: 
<A> 
<B> 
</B> 
</A> 
● 属性必须包括在引号中; 
● 元素中的属性是不允许重复的。 
XML文档的“有效性”是指一个XML文档应当遵守DTD文件或是Schema的规定,“有效的”XML文档肯定是“格式良好的”,有关内容我们会在以后详细说明。 
XML的名称空间 
XML文档中很可能会定义许多名字相同而意义不同的元素或属性,尤其在把不同的XML文档合而为一时,更容易产生冲突。名称空间就是为了解决这个问题而提出的。它用URI(UniformResource Indicator,统一资源指示器)加以区别,是在XML文件的元素和属性中出现的所有名称的集合。如下例: 
<pr:payment xmlns:pr=“http://www. microsoft.com/payroll”> 
<pr:employee>Lars Peterson</pr:employee> 
<pr:description>Reimburse expenses</pr:description> 
<pr:total>199.76</pr:total>
</pr:payment> 
有了名称空间,用户就可以保证在文件中使用的名称是唯一的。对元素的属性xmlns进行定义就表示对该元素指定了一个名称空间。namespace_name必须是一个有效的URI。 
如果省略local_prefix(本地前缀),这时就构成了缺省名称空间: 
<payment xmlns=“http://www.microsoft.com/acct”>
<customer>1234</customer> 
<amount>500.00</amount> 
<date_received>12-03-2000</date_received> 
</payment> 
如果对一个元素定义了缺省名称空间,那么该元素及其子元素,包括它们的属性都会自动地成为该名称空间的一部分,不用再在每一个元素和属性前面一一标明了。 
在本文开始部分,我们对XML这个新兴的技术做了一个概述,对它的优缺点进行了分析,并对其美好的应用前景进行了展望。在本文后半部分则对XML文档的相关语法、格式做了简要的描述,并介绍了几种有用的开发工具。在以后的内容中,我们会全面展开,深入到XML技术内部,去探索一下这个美妙的世界!