今日,一封辞职信引发广泛关注。网上流传的致全体员工函件如下图所示:
大龙突发奇想,如果将这封信做成结构化文档,它会是怎样的呢?
来,说干就干。
将文档/辞职信进行结构化,一般分为这么几步:
-
定义文档类型
-
定义写一封辞职信应该遵循什么规则,并且将这些规则数字化,让软件能够按照规则检查文档
-
-
编写文档内容
-
这一步就是编写辞职信的内容
-
-
制定输出样式
-
结构化文档的内容和样式分离的,我们需要编制文档输出的样式模板,用于将内容展现
-
- 1 -
定义文档类型
我们写任何文档都有一定的规则,有些成文,有些不成文只是惯例。
对于辞职信,规则大体是这样的:
-
必须有一个标题
-
可以有或者没有副标题
-
必须要有且只有一个称谓
-
内容部分有1到n个段落
-
必须要有辞职人
-
必须要有辞职日期
不管成不成文,如果只是用文字将这些规则写出来,那么规则很难得到落实。
原因包括但不限于这些:
-
每个人对文字形式的规则理解不一样
-
每个人可能按照自己的风格来写
-
没有人检查,就算有人检查可能会遗漏
所以写出来的辞职信千奇百怪,各有各的风格。对于做艺术的,有个性是好的。但是对于一个企业的文档,则要按照统一的规则。
计算机特别擅长按照给定的规则来检查文档。在结构化文档中,我们将这些规则做成计算机能够理解的规则,计算机就会不打折扣地检查和确保文档符合这些规则,最终得到风格一致的文档。
上边的规则写成计算机能读懂的规则就是下边这样,感兴趣的读者可以看看。它也被称为Document Type Definision,简称DTD。
<?xml version="1.0" encoding="UTF-8" ?>
<!ELEMENT resign_letter (title, subtitle?, body, resignator, resign_date)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT subtitle (#PCDATA)>
<!ELEMENT body (greeting, para+)>
<!ELEMENT greeting (#PCDATA)>
<!ELEMENT para (#PCDATA)>
<!ELEMENT resignator (#PCDATA)>
<!ELEMENT resign_date (#PCDATA)>
- 2 -
编写辞职信的内容
有了辞职信的规则,我们来编写辞职信的内容。
结构化文档大多数情况是使用一种叫XML的格式来编写。这种格式有点类似于我们每天在手机上看新闻用到的网页格式。事实上,你现在正在看的这篇文章也是网页格式的。
结构化文档的特点是内容和样式分离。 编写内容的时候只关心内容本身,不关心输出的样子。事实上输出的样子是第三步关心的事情。
用结构化工具编写的辞职信最终是这样(大部分时候,咱们不用这样看这个内容,而是用一个更友好的界面查看):
- 3 -
制定输出样式模板
一般情况下,读者不希望看到第二步看到的像代码一样的内容。
事实上,上边的内容也不是直接给读者看的。它需要经过与样式模板结合才能呈现出最终的样子。
例如,我们要将辞职信在网页上显示,我们可以制定一个这个内容在网页上显示的样式文件,我们把它叫做HTML样式。它来决定文字大小、对齐方式、文字颜色、上边距下边距等。
将内容和HTML样式结合,就能得到如下图所示的输出。
- 4 -
总结
为啥要将文档进行结构化?
这是前人总结的原因:
今天这篇文章是为了好玩,让大家了解一下自定义文档类型的过程。