XML技术入门讲座(2)

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),DTDDocument 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文档合而为一时,更容易产生冲突。名称空间就是为了解决这个问题而提出的。它用URIUniformResource 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技术内部,去探索一下这个美妙的世界!