代码改变世界

XML初探

2011-01-19 09:15  闫妍  阅读(278)  评论(0编辑  收藏  举报

一.什么是XML,XML能做什么

      XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可以处理包含各种信息的文章等。如何定义这些标记,既可以选择国际通用的标记语言,比如HTML,也可以使用象XML这样由相关人士自由决定的标记语言,这就是语言的可扩展性。XML是从SGML中简化修改出来的。即XML就是一种数据的描述语言,虽然它是语言,但是通常情况下,它并不具备常见语言的基本功能——被计算机识别并运行。只有依靠另一种语言,来解释它,使它达到你想要的效果或被计算机所接受。

(核心:结构化描述的代表,即可以将任何信息通过XML进行描述出来,如HTML,Silverlight用的Xaml都符合XML标准,开发Android的前端表示均为XML,以及即将到来的HTML5也符合XML标准)XMl由W3C组织制定,这个组织是由各大公司的相关人员进行沟通和协作,最后将标准制定出来。

     如果我们打开程序中的.aspx,.config文件,我们可以看到里面的每一个标签以及里面的格式都符合XMl的标准。如图:

image

还有当我们新建一个不Excel表。当我把它的扩展名改为.zip格式,然后我们双击它,会看到它里面的文件都是.xml格式,如图:

image

还有当我们打开一个网页,如:163。我们打开它的源文件,我们可以看到其实实现网页的代码也是符合XML标准的,如图:

image

可见XML的用处是无处不在。

二.XML的语法结构

1.在说XML的语法结构之前我们还需要打开我们功能请大的VS2010,一会我们可以一边演示一边做。打开之后我们再Visual C# 中找到Data,建立一个XML File,XML文件的第一行必须是声明该文件是XML文件以及它所使用的XML规范版本。在文件的前面不能够有其它元素或者注释。界面如下:

image

2.在XML文件中用的为自定义的标记。其中有且只能够有一个根元素,如图中的<People></People>:
image

如果出现两个根目录,如图:

image我们还看到里面有错误显示。

3.双标签必须对应着成对出现,如上图中的<身高></身高>,<工资></工资>,<People></People>。可以将属性写在第一个标签内,也可以在标签中夹字符,格式为<元素名 属性名=”属性值”>需要的字符</元素名>。而对于单标签就不能这么做了,我们可以看上面2中的图中<性别 真值为=”女”  /性别>就是一个单标签的结构,它只能在标签里面添加属性,格式为<元素名 属性名=”属性值“/元素名>,而里面属性的值要用””括起来,’’也可以,一般使用””号。

4.XML控制标记、指令和属性名称等英文要区分大小写。如<People></People>,<people></people>是可以的,但是<People></people>就是不可以的,即要大写两个都大写,要小写都小写。

5.标记之间不得交叉。如<身高>,<工资>,</身高>,</工资>
6.XML处理空白字符和HTML不一样。HTML标准规定,不管有多少个空白,都当作一个空白来处理;而在XML中规定,所有标记以外的空白,解析器都要忠实地交给下游的应用程序处理。因此我们要谨慎处理空白字符。

7.在HTML文件中,如果我们要浏览器原封不动地将我们所输入的东西显示出来,可以将这些东西放到〈pre〉〈/pre〉或者〈xmp〉〈/xmp〉标记中间。而在XML中,要实现这样的功能,就必须使用CDATA标记。在CDATA标记中的信息被解析器原封不动地传给应用程序,并且不解析该段信息中的任何控制标记。CDATA区域是由:“〈![CDATA[”为开始标记,以“>〉”为结束标记。例如:


〈![CDATA[明天会更好>>>>>>>!

    >〉

除了“〈![CDATA[”和“>〉”符号,其余的内容解析器将原封不动地交给下游的应用程序,即使CDATA区域中的开始和结尾的空白以及换行字符等,都同样会被转交(注意CDATA是大写的字符)。


      

三.XML相关技术

1.XML文档的验证
1)DTD:约定编写XML文件可以用哪些标记,母元素中能够包括哪些子元素,各个元素出现的顺序,元素中的属性怎样定义等。这样人们在用XML交换数据时才能够畅通无阻。这种约定称为DTD(Document Type Definition,文档格式定义)。就是规定XML文档的。可以把DTD看作编写XML文件的模板。
2)Schemas(模式)同DTD一样,Schema也提供了一套完整的机制以约束XML文档中置标的使用,但相比之下,后者基于XML,更具有规范性。Schema利用元素的内容和属性来定义XML文档的整体结构,如哪些元素可以出现在文档中、元素间的关系是什么、每个元素有哪些内容和属性以及元素出现的顺序和次数等等。

  XDR - XML-DR (XML Data Reduced),Microsoft提出的技术标准
  W3C Schemas(XSD)-国际标准

2.XSL - XML文档的转换和显示(实现文档内容和表现形式的分离):将XML里的数据转换成另一种形式的数据。
1)XSLT - XSL Transformation,XSL转换语言
  XSLT描述如何将一个XML文档进行转换
2)XML-FO - XML Formatted Object,XML格式化对象

3.XML文档的访问
1)DOM(文档对象模型):
DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询,但是,DOM的缺点在于它需要一次性的加载整个文档到内存中,对于大型的文档,这会造成资源问题。
2)流模型:任何时候在内存中只有当前节点,但它也有它的不足,它是只读的,仅向前的,不能在文档中执行向后导航操作。
  "推"模型-SAX(Simple API for XML):推模型也就是常说的SAX,SAX是一种靠事件驱动的模型,也就是说:它每发现一个节点就用推模型引发一个事件,而我们必须编写这些事件的处理程序,这样的做法非常的不灵活,也很麻烦。
  "拉"模型:.NET中使用的是基于“拉”模型的实现方案,“拉”模型在遍历文档时会把感兴趣的文档部分从读取器中拉出,不需要引发事件,允许我们以编程的方式访问文档,这大大的提高了灵活性,在性能上“拉”模型可以选择性的处理节点,而SAX每发现一个节点都会通知客户机,从而,使用“拉”模型可以提高Application的整体效率。

4.XML文档的定位、查询
1)XPath:定义XMl里的数据路径结构的读取方法。
2)XQuery:定义如何更好地查询XML里的数据。