1、什么是XML

来源:互联网 发布:mac软件开发ide 编辑:程序博客网 时间:2024/05/16 00:29
 

什么是XML,如果要真正讲清楚这个问题可能又要写另一本书了。在这本书中仅介绍一般的概念,只要能够正确地操作SQL Server 2005中的XML数据类型即可。下面将简单介绍XML的一些基础知识。

11.1.1 认识XML

XML全名是Extensible Markup Language,意思是扩展性标记语言。

下面是一个XML文本的例子:

<?xml version="1.0"?>

<MyXML>

<Title>

What is XML?

<Solution>

This's it!

</Solution>

</Title>

</MyXML>

这段例子看着是不是有些眼熟?或者很像那个叫HTML的家伙?其实它们虽然很像但完全是两会事,XML主要是用来描述结构和语义的,关注的焦点是数据。HTML则包含了描述文本格式的内容比如字体,字号等等,关注的是数据的显示。同时不要以为XML是为了取代HTML的,二者的意义和应用范围是完全不相同的。

特别要注意的是XML是区分大小写的,如:MyXMLmyXML是不同的名称。在实验后面的例子时要特别注意不要输错了大小写。

11.1.2 XML中的元素

下面详细的介绍一下XML中的主要元素和规则。

XML文本中那个用尖括号括起来的部分叫做标记(tags,有些地方被称作标签,本书中将使用标记这一名称)。

标记的作用是用来定义结构并且说明语义的。标记中第一个文本单词表示标记的名称。标记必须成对出现或明确表示为没有内容的标记,同时它可以包含很多个属性,例如:

<MyTable KID="38" Name = "Car">

以上XML片段是包含了两个属性的一个标记,属性名称分别为KIDName

这里要记住的是:

q       标记的属性可以有任意多个。标记也可以没有属性。

q       标记的名称和属性的名称都可以使用任何自定义的有意义的单词。

q       属性与属性之间用空格分开。

q       属性必须有值,同时任何类型的值都必须被一对双引号引起来。

q       一个开始标记必须配一个以“/”符号开始的同名标记作为结束标记。

q       开始与结束标记之间的任何内容都被称为该标记的值。

下面这个例子展示的是没有值的标记:

<Book BookID="500" BookName="From Earth To Moon"/>

没有值的标记直接以一个“/”符号结束,表示该标记没有明显的结束标记。在功能上它等同于:

<Book BookID="500" BookName="From Earth To Moon">

</Book>

可以看出这种书写方式比前一种书写方式要繁琐得多。

如果标记中开始和结束字符都是“?”,这表示这个标记是一个XML定义。例如:

<?xml version="1.0"?>

定义标记通常没有对应的结束标记,它自己就表示整个的标记了。通常定义标记是用来说明一些特殊的内容。这里不打算去详细讨论这些内容。只需要知道定义是用来说明一些特殊的东西的,后续内容中在用到的地方将详细讨论定义。

XML中注释和HTML中是类似的。XML中注释是像下面的样子:

<!--这就是一个XML注释-->

XML注释可以出现在XML数据的任何位置,但不能出现在一个标记说明的“<>”内部。特别要注意的是注释内容首尾的两个连续的“-”符号是必不可少的。

注意:所有的XML数据都可以被单独的存储到一个扩展名为xml的文本文件中。这种文件通常被称为XML文档/文件。其中一些特殊用途的XML文件扩展名可能会被改为xslxsd等。但本质都是以文本方式保存了XML数据的文件。

11.1.3 XML标记的规则

XML标记的一个重要特性就是它允许嵌套。例如:

<Factory>

Factory Name

<Workshop>

NO.1 Workshop

<Term>

<Worker ID="1" Name="Zhang"/>

<Worker ID="2" Name="Wang"/>

</Term>

</Workshop>

</Factory>

说明:在这个例子中名为Factory的最外层标记,包含了名为Workshop的标记。而Workshop这个标记又包含了Term这个标记。最后Term标记包含了两个名为Worker的标记。

除了最外层的标记外,其他的内层的标记都可以由并列的标记。也就是说最外层的标记只能有一个。通常这个最外层的标记被称做顶层元素。

不同的标记之间不能交叉,也就是说不能出现象下面这样的情况:

<Book>

<Title>

What's this?

</Book>

</Title>

这说明一个标记的结束必须在其内部标记都结束之后,否则就是非法的。综合以上这些规则不难推知任何XML文档都将是一个纯粹树型的结构。这也是检查一个XML文档是否符合规范要求的最直接的检验方法。

通常标记的用途有两个:

1)用标记来描述数据本身的结构,通常是树型的结构。

2)用来明确表达数据中的语义的,这由标记名称、属性、属性值来完成。

这样也可以看出XML是一种自描述的结构。即不需要任何额外的辅助内容,阅读者就可以完全掌握XML数据的内容,这是一个非常好的特性。

11.1.4 XML的用途

到这里应该基本的掌握了XML的大概。和学习其它类型的知识一样,肯定会产生这样的疑问,这种语言用来干什么?

其实它的用途很广,最主要的任务就是用来存储和交换数据的。

这听起来好像没有什么新意。那么想象这样一种情况:如果要存储一本图书的完整目录,应该怎么存储?如果还要求看到这个目录的任何人,一看到它就知道这是一个完整的目录,哪又该怎么做呢?

在前面的章节中,已经介绍了关于存储数据的方法,这里同样可以用表来存储这个目录。但是别得意,仔细地想想,表中的数据通常是线性的,既记录间除了先后顺序就没有别的什么关系了。这时候目录中的层次关系怎么表示呢?当然还可以像前面章节介绍的级次编码那样,使用一套有规则的级次编码来表示这种层次关系,但是这套编码又怎么让别人一下子就明白其中的层次关系呢?

其实最合适地做法就是使用XML来表示这个目录。因为目录也是树型结构,所以完全可以用XML来表示。

概括起来XML有这样几种主要的用途:

1)存储数据< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

可以象下面这样,使用XML存储一组工人的信息。

<Factory>

Factory Name

<Workshop>NO.1 Workshop

<Term1>

<Worker ID="1" Name="Zhang" …/>

<Worker ID="2" Name="Wang" …/>

……

</Term1>

</Workshop>

</Factory>

2)交换数据

在计算机的世界中有成千上万种格式的数据文件。有时候会为找不到某一种格式文件的程序而懊恼。甚至某一格式的数据要转换为另一格式时,需要付出高昂的代价。由于XML被发明的初衷就是开放、免费、通用、标准。所以在约定了一个公开的免费的XML格式(后面的内容中有关于如何约定XML格式的较完整的信息)标准后,就可以和任何其它程序简单的交换数据了。其实这也是目前XML用途较广泛的一个方面。

3)使数据保值

想象一下到了50年后,现在的每台电脑甚至超级电脑,除了部分进了博物馆,其余的都被丢进了垃圾堆。那时候更不要想有什么软件能打开50年前的文件,并查看里面的数据。这时候就会发现现在将数据以XML保存是个非常明智的举动。因为W3C组织在制定XML标准时就充分的考虑了未来XML文档格式都将是一个标准,甚至50年后的电脑(或许那时候已经不叫电脑了)上都有支持XML标准的软件。这样一来,只要标记定义的合理,到那时人们仍然能够看得懂50年前的XML文件。由此所有今天用XML保存起来的数据就不必担心将来没有了支持这种格式的软件,从而所有的数据都得到了保值。

这样就理解为什么SQL Server 2005要包含完整且强大的针对XML的支持了。这不单单是为了顺应技术发展的趋势,而更多的是为了满足对各种不同结构数据存储和操作的要求。

其实数据库方面一直有两种主要的流派:

1)一种就是现在看到的像SQL Server 2005这样的基于关系代数模型的关系型数据库。

2)另一种就是管理像目录这类有明显层次关系的层次数据库。比如Windows系统的注册表就是一个典型的层次型数据库。

有了XML支持后,要在关系型数据库中存储这种层次型的数据就不再是繁琐的任务了。

接下去整个这一章将详细介绍如何在SQL Server 2005中操作XML型数据。

 

原创粉丝点击