XML学习笔记

最近两天抽空看完了一位台湾人士写的一本《无废话XML》,标题看上去不错,正好也没有系统的学习过XML,索性完整的学习一下。结果看了不到两页,心里就大喊上当,简直就是废话连篇啊,当时狂晕。但是还是忍着看了下去,因为里面有很多业界的一些咨询包含在里面,是我很缺乏的。

其实XML也挺简单,没有必要专门的去深入,会用足以。所以记下来的笔记也只是一些零散的点,毕竟教程在网上可以信手拈来,这里只是供偶尔路过的有兴趣的同学们参考,也当作自己以后温习的素材把。

1.大小写有分:

XML与HTML是在区分大小写方面是截然不同的,XML严格的区分大小写,就像Unix家族的操作系统一样。在这方面,HTML就好比是Windows和MacOS。

2.CDATA区:

什么是CDATA区呢?大家平时肯定见的很多,但是不一定知道这个区域的特点。其实CDATA区就是一个不许解析器乱碰的区域。类似HTML中的<pre></pre>。在这个区域中的字符解析器不能去碰,只能交给下游程序去处理,换行符和空格也是如此。例如:<![CDATA[.......这里的字符都默认为Unicode编码........]]>> 

3.PI与样式表:

PI:Processing Instruction 在XML中的标记为<?...............?>。通常XML中会有多处这样的标记,严格来说它的作用是传递情报给下游程序。举例:<?xml-stylesheet href="style.css" type="text/css"?>。这样就在XML中建立了与样式表的链接了。

4.空白字元:

定义:space,tab,CR,LF,其中CR means Carriage Return,MacOS平台的换行记号。LF means Line Feed,Unix上的换行符号,也即字符‘\n’。Dos/Windows上的换行符为CR+LF,也就是字符'\r\n'。另外,很多同学喜欢在代码里面直接硬编码'\r\n'为换行符,这样是错误的。应该用System.***下面的各种静态变量来获取系统的换行符。

5.关于Unicode:

Unicode标准中经常会有ISO和UCS,什么东东?ISO--指的是位于瑞士的国际标准局的缩写;而UCS则是指Univeral character Set,即世界通用字符集,这种编码占4个字节。XML中默认的编码为Unicode(2bytes)。还有一种很常用的是UTF-8,它是一种变长的编码方式,对于英文字符是用1个字节表示,对于汉文可能会用到3个字节来表示。这样就避免了所有字符对字符的处理利用Unicode的两字节来表示,而在网络上传输的,更多的还是英文字符,因此UTF-8诞生很重要的一个原因也就是可以节约网络上的消耗。

6.URL-URN-URI别搞混了:

UR:Uniform Resource,L:locater,N:name,I:Identifier。从命名上看就知道这三者肯定有不小的联系了。URI实际上是对网络上所有用字符串表示的资源的一个总称,URL大家众所周知的,是基于某种特定协议下标识的网络资源,如HTTP,FTP等,而URN则是一种持久的,有专门机构负责的网络资源。

7.名称空间:

这个是XML的一个核心,没有它,XML不可能像我们现在认识的这么强大。书中是这样解释的:如果每套XML语汇,都各自用一个独一无二的标志来代表并且在使用时,这个标志和语汇中的元素,属性名连在一块儿使用,就绝不会和其它的语汇扯不清了,因为每个语汇中的名称,都已经先被被该语汇的独特标识码给修饰,限定了。

这么说可能还不是很清楚,举个例子。现在用一个XML文件来描述两个对象,一个业务员,一个客户。每个客户都有姓名,年龄,薪水等属性,大家可以想象出标签是怎么样的把,这里就不列举了,还有一个属性可能是业务员的姓名,因为是业务员拉他入伙的,可是会算绩效的哦。但是业务员这个时候也会有同样的属性,比如名字。这个时候解析器如何去辨别呢?但是我们也可以把标签利用DTD重新定义成<客户姓名><业务员姓名>也是可行的一种解决办法。但是记住,我们一般是不会去改DTD来定义我们的标签的。因此我们就需要有命名标签这个概念来帮我们来标识出这两者的不同。

具体名称空间如何定义,如何使用,很多XML教程都会写,这里我就没耐心一个个的敲出来了,有兴趣的同学可以自己去找,这里只是帮助大家理解。(也许被我这么一说,大家更乱了。)

另外,通过命名空间,还可以将HTML中的标签嵌入到XML中来传递,比如<form>,<input>等。

8.XHTML

 XHTML就是一个扮演着类似HTML的角色的XML,所以本质上说,XHTML是一个过渡技术,结合了部分XML的强大功能及大多数HTML的简单特性。之所以无法取代,因为现在有太多的HTML在应用当中。目前据说正式发布的是XHTML1.0。

后记:其实学习XML还需要学习XSL,大概就是用来定义XML如何显示把,但是篇幅太多没那个耐心看,以后要用的时候再了解一下把。还有一个当然是CSS,这个打算以后专门的再学习一下。

如果哪位高人路过,看到小弟文中写的不对的地方,还望指正。

你可能感兴趣的:(xml,css,网络协议,网络应用,咨询)