1. 什么是信息标记?

我们先来说,信息标记的重要性:

  • 标记后的信息可形成信息组织结构,增加了信息维度;
  • 标记后的信息可用于通信、存储或展示;
  • 标记的结构与信息一样具有重要价值;
  • 标记后的信息更利于程序理解和运用。

什么是信息标记呢?这里以HTML格式作为例子来了解什么是信息标记。

HTML:Hyper Text Markup Language,超文本标记语言。

HTML是WWW(World Wide Web)的信息组织方式。

HTML能将声音、图像、视频等超文本信息嵌入到文本之中。

HTML通过预定义的<>...</>标签形式组织不同类型的信息,也就是通过标签标记各种信息是什么。

那么信息标记有哪些种类呢?这里说的种类是指信息标记上的一般类型的种类。

简单说,现在国际公认的信息标记种类有三种形式,分别是XMLJSONYAML

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
2
3
4
"UserInfo": {
"name": "gukaifeng",
"age": 18
}

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
2
3
UserInfo:
name: gukaifeng
age: 18

YAML使用'-'表达并列关系,例如

1
2
3
name:
-gukaifeng
-wuyanzu

YAML中还有一种很特殊的表达方式,用'|'表示整块数据,'#'表示注释。

1
2
3
4
text: | # 这个属性有一大段话
这是一大段话!这是一大段话!这是一大段话!这是一大段话!这是一大段话!这是一大段话!
这是一大段话!这是一大段话!这是一大段话!这是一大段话!这是一大段话!这是一大段话!
这是一大段话!这是一大段话!这是一大段话!这是一大段话!这是一大段话!这是一大段话!

5. 三种信息标记形式的比较

上面介绍了三种信息标记形式,XML、JSON和YAML。

事实上,世界上的所有信息都可以通过这三种形式进行组织和标记,使得信息发挥更大的作用和价值

XML是一种使用尖括号标签,标记和表达信息的形式。

JSON是一种使用有类型键值对,标记和表达信息的形式。

YAML是一种使用无类型键值对,标记和表达信息的形式。

我们下面分别用三种信息标记形式,表达同一份信息,观察这三种形式的不同。

1
2
3
4
5
6
7
8
9
10
11
<person>
<firstName>Kaifeng</firstName>
<lastName>Gu</lastName>
<address>
<streetAddr>中关村</streetAddr>
<city>北京</city>
<zipcode>100080</zipcode>
</address>
<prof>Computer System</prof>
<prof>Security</prof>
</person>
1
2
3
4
5
6
7
8
9
10
{
"firstName": "Kaifeng",
"lastName": "Gu",
"address": {
"streetAddr": "",
"city": "",
"zipcode": "100080"
},
"prof": ["Computer System", "Security"]
}
1
2
3
4
5
6
7
8
9
firstName: Kaifeng
lastName: Gu
address:
streetAddr: 中关村
city: 北京
zipcode: 100080
prof:
-Computer System
-Security

三种形式的代码风格比较:
XML:最早的通用信息标记语言,可扩展性好,但繁琐。
JSON:信息有类型,适合程序处理(js),叫XML简洁。
YAML:信息无类型,文本信息比例最高,可读性好。

三种形式的应用场景比较:
XML:Internet上的信息交互与传递以及信息表达主要采用XML格式,包括HTML也是和XML同类别的。
JSON:移动应用云端和结点的信息通信,无注释。一般来讲,JSON格式用在程序对接口处理的地方,JSON数据在经过传输之后,能够作为程序代码的一部分被程序直接运行,这样JSON格式中对信息类型的定义才能最大的发挥作用,这是JSON格式最大的价值。然而,JSON格式有一个比较大的缺陷,就是其中无法写注释
YAML:各类系统的配置文件,有注释易读。