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是区分大小写的,如:MyXML和myXML是不同的名称。在实验后面的例子时要特别注意不要输错了大小写。
11.1.2 XML中的元素
下面详细的介绍一下XML中的主要元素和规则。
XML文本中那个用尖括号括起来的部分叫做标记(tags,有些地方被称作标签,本书中将使用标记这一名称)。
标记的作用是用来定义结构并且说明语义的。标记中第一个文本单词表示标记的名称。标记必须成对出现或明确表示为没有内容的标记,同时它可以包含很多个属性,例如:
<MyTable KID="38" Name = "Car">
以上XML片段是包含了两个属性的一个标记,属性名称分别为KID和Name。
这里要记住的是:
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文件扩展名可能会被改为xsl或xsd等。但本质都是以文本方式保存了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型数据。
- XML (1) 什么是XML
- xml学习--1什么是XML
- 什么是XML?(1)
- 1、什么是XML
- 1、什么是XML
- XML简明教程(1)什么是XML元素
- XML简明教程(1)什么是XML元素
- 什么是XML?
- 什么是XML?
- 什么是XML?
- 什么是XML?
- 什么是XML?
- 什么是XML
- 什么是XML
- 什么是XML
- 什么是XML
- 什么是XML?
- 什么是XML
- USB FAQ: Introductory Level
- 简单讲述DES加密算法
- Payroll & Time Management
- ESFramework 通信框架
- SQL SERVER中查询到的数据导成一个Excel文件
- 1、什么是XML
- 20个VC使用技巧经典总结
- linux设备驱动之——dm9000移植
- 虚拟机安装BSD前配置
- XmlIgnoreAttribute使得无法序列号的原因
- 项目经理
- eat.py
- linux设置套接字缓冲区的大小
- 颜色参照表