1. 什么是信息标记?
我们先来说,信息标记的重要性:
- 标记后的信息可形成信息组织结构,增加了信息维度;
- 标记后的信息可用于通信、存储或展示;
- 标记的结构与信息一样具有重要价值;
- 标记后的信息更利于程序理解和运用。
什么是信息标记呢?这里以HTML格式作为例子来了解什么是信息标记。
HTML:Hyper Text Markup Language,超文本标记语言。
HTML是WWW(World Wide Web)的信息组织方式。
HTML能将声音、图像、视频等超文本信息嵌入到文本之中。
HTML通过预定义的<>...</>
标签形式组织不同类型的信息,也就是通过标签标记各种信息是什么。
那么信息标记有哪些种类呢?这里说的种类是指信息标记上的一般类型的种类。
简单说,现在国际公认的信息标记种类有三种形式,分别是XML,JSON和YAML。
2. XML
XML:eXtensible Markup Language,扩展标记语言。
XML是一种与HTML很接近的标记语言。从历史发展来看,先有HTML格式后有XML格式,因此可以说XML格式是基于HTML格式的发展来的一种通用信息表达形式。
XML中采用以标签为主构建和表达信息的方式。
如下图,在XML中有名字和属性等相关内容,这与HTML的格式非常接近。
如果标签中没有内容,那么可以只用一个尖括号标签来表示,标签内最后加上/
。
在XML中也可以嵌入注释,注释的格式与HTML相同。
3. JSON
JSON:JavaScript Object Notation,基于JavaScript语言的轻量级的数据交换格式。
简单说,JSON是有类型键值对构建的信息表达方式。
例如,"name": "gukaifeng"
,"age": 18
等等。
当我们值的部分有多个信息的时候,使用[,]
的形式组织。例如,"school": ["清华大学", "北京大学"]
键值对也可以嵌套使用,例如
1 | "UserInfo": { |
JSON格式采用有类型的键值对,一个很大的好处就是,对于JavaScript等编程语言来说,可以直接将JSON格式作为程序的一部分,大大简化程序的编写。
4. YAML
YAML:YAML Ain’t Markup Language。
YAML是”YAML Ain’t a Markup Language”(YAML不是一种标记语言)的递归缩写。在开发的这种语言时,YAML 的意思其实是:”Yet Another Markup Language”(仍是一种标记语言),但为了强调这种语言以数据做为中心,而不是以标记语言为重点,而用反向缩略语重命名。——wikipedia
YAML格式采用无类型键值对,例如name: gukaifeng
,注意没有双引号。
我们可以通过缩进的方式来表达所属关系,这个特性和Python很像,例如
1 | UserInfo: |
YAML使用'-'
表达并列关系,例如
1 | name: |
YAML中还有一种很特殊的表达方式,用'|'
表示整块数据,'#'
表示注释。
1 | text: | # 这个属性有一大段话 |
5. 三种信息标记形式的比较
上面介绍了三种信息标记形式,XML、JSON和YAML。
事实上,世界上的所有信息都可以通过这三种形式进行组织和标记,使得信息发挥更大的作用和价值
XML是一种使用尖括号标签,标记和表达信息的形式。
JSON是一种使用有类型键值对,标记和表达信息的形式。
YAML是一种使用无类型键值对,标记和表达信息的形式。
我们下面分别用三种信息标记形式,表达同一份信息,观察这三种形式的不同。
1 | <person> |
1 | { |
1 | firstName: Kaifeng |
三种形式的代码风格比较:
XML:最早的通用信息标记语言,可扩展性好,但繁琐。
JSON:信息有类型,适合程序处理(js),叫XML简洁。
YAML:信息无类型,文本信息比例最高,可读性好。
三种形式的应用场景比较:
XML:Internet上的信息交互与传递以及信息表达主要采用XML格式,包括HTML也是和XML同类别的。
JSON:移动应用云端和结点的信息通信,无注释。一般来讲,JSON格式用在程序对接口处理的地方,JSON数据在经过传输之后,能够作为程序代码的一部分被程序直接运行,这样JSON格式中对信息类型的定义才能最大的发挥作用,这是JSON格式最大的价值。然而,JSON格式有一个比较大的缺陷,就是其中无法写注释
YAML:各类系统的配置文件,有注释易读。