微软在软件的兼容性上向来是很下功夫的,比如IE, windows xp,因为好用,一直到现在还有很多人不愿意放弃,搞得微软只能自己革自己的命,努力劝说大家放弃IE,放弃windows xp
office在兼容性上也是“杠杠”的,我们用office 2007制作一个word文档,然后我们使用高版本的office,比如office 2010,2013,甚至是最新的office 2019去打开它,可以发现文档 可以正常的打开,里面的内容,样式基本没有变化
反过来,我们可以用office 2019制作文档,并且加入一个新版本才特有的新样式,然后尝试用老版本的office 2007去打开,我们会发现文档的大部分功能和样式仍然是正常的
基本上office的版本号代表了它的发布年份(相差不会超过2年),所以从2007(忽略2007之前的版本)到2019,微软成功实现了差不多12年时间跨度的双向(向上,向下)的兼容性,而且理论上这个兼容性还可以一直持续下去,相比苹果的“喜新厌旧”,这里真的要跟微软点个赞[赞]
这一切究竟是怎么实现的呢?
在我之前的里面解释了一个word文档实际上是由若干个xml文件打包生成的,而office文档的超强兼容性就藏在这些xml文件中
微软在发布office 2007时,也同时发布了一个“用于办公的开放的xml文件格式规范”(The Office Open XML File Formats specification)(后面简称“规范”)
在规范中,利用了“标记语言”的特性,定义了所谓标记语言兼容性,office,包括word, powerpoint, spreadsheet,就是遵循了这个规范的3种实现,分别为文档处理标记语言(WordprocessingML),演示文档标记语言(PresentationML),表格标记语言(SpreadsheetML)
何为标记语言兼容性?
标记语言兼容性指的是一个特定的标记文档(比如上面提到的3种),自身带有一些特性的集合,比如不同的样式,字体等,拥有可以方便的跟不同版本的应用(这里就是不同版本的office)实现互操作性的能力
这种能力是通过规范定义的一系列预定义的兼容命名空间的xml元素和属性来支持的
看定义太绕了,其实说人话就是:
各个特性,比如样式,字体等,会利用xml的元素属性标识出它的兼容性,这里的兼容性包括了版本申明,替代内容,可忽略等,是一个宽泛的说法
比如有一个Ignorable属性可以指定哪些命名空间的元素可以在不支持的情况下忽略,在中,可以在解析出来的文档中找到这个属性
而相应的各版本的office在打开文档时,会根据申明的兼容性,和自身支持的特性,有选择的选择实际起作用的元素
除了兼容性申明,还可以指定替代内容,不同版本的office可以选择自己支持的替代内容
简而言之,office文档的兼容性主要在于文档本身利用了xml这种标记语言的特性,以“自省”的方式申明了自身的兼容性和替代内容,再加上office应用本身对这套规范的支持,两方面“亲密合作”,才有了office的强大兼容性