Skip to content

可扩展标记语言

XML(eXtensible Markup Language,可扩展标记语言)是一种可按应用目标进行扩展的通用标记语言。旨在通过使用 XML,使互联网数据共享变得更容易。

XML 和 HTML 都是从标准通用标记语言 SGML(Standard Generalized Markup Language)简化而成。与 HTML 相比,它对数据的记录方式做了特殊处理。

下面我们以 HTML 编写的某公司的研讨会议议程为例进行说明:

html
<html>
  <head>
    <title>T公司研讨会介绍</title>
  </head>
  <body>
    <h1>T公司研讨会介绍</h1>
    <ul>
      <li>研讨会编号:TR001
        <ul>
          <li>Web应用程序脆弱性诊断讲座</li>
        </ul>
      </li>
      <li>研讨会编号:TR002
        <ul>
          <li>网络系统脆弱性诊断讲座</li>
        </ul>
      </li>
    </ul>
  </body>
</html>

用浏览器打开该文档时,就会显示排列的列表内容,但如果这些数据被其他程序读取会发生什么? 某些程序虽然具备可通过识别布局特征取出文本的方法,但这份 HTML 的样式一旦改变,要读取数据内容也就变得相对困难了。 可见,为了保持数据的正确读取,HTML 不适合用来记录数据结构。

接着将这份列表以 XML 的形式改写就成了以下的示例:

xml
<研讨会 编号="TR001" 主题="Web应用程序脆弱性诊断讲座">
  <类别>安全</类别>
  <概要>为深入研究Web应用程序脆弱性诊断必要的…</概要>
</研讨会>
<研讨会 编号="TR002" 主题="网络系统脆弱性诊断讲座">
  <类别>安全</类别>
  <概要>为深入研究网络系统脆弱性诊断必要的…</概要>
</研讨会>

XML 和 HTML 一样,使用标签构成树形结构,并且可自定义扩展标签。

从 XML 文档中读取数据比起 HTML 更为简单。由于 XML 的结构基本上都是用标签分割而成的树形结构, 因此通过语法分析器(Parser)的解析功能解析 XML 结构并取出数据元素,可更容易地对数据进行读取。

更容易地复用数据使得 XML 在互联网上被广泛接受。比如,可用在 2 个不同的应用之间的交换数据格式化。

发布更新信息的 RSS/Atom

RSS(Really Simple Syndication, 简易信息聚合,也叫聚合内容)是一种 XML 格式,用于发布更新信息。 和 Atom 都是发布新闻或博客日志等更新信息文档的格式的总称。两者都用到了 XML。

RSS 有以下版本,名称和编写方式也不相同:

RSS 0.9(RDF Site Summary):最初的 RSS 版本。1999年3月由网景通信公司自行开发用于其门户网站。基础构图创建在初期的 RDF 规格上。

RSS 0.91(Rich Site Summary):在 RSS 0.9 的基础上扩展元素,于1999年7月开发完毕。非 RDF 规格,使用 XML 方式编写。

RSS 1.0(RDF Site Summary):RSS 规格正处于混乱状态。2000年12月由 RSS-DEV 工作组再次采用 RSS 0.9 中使用的 RDF 规格发布。

RSS 2.0(Really Simple Syndication):非 RSS 1.0 发展路线。增加支持 RSS 0.91 的兼容性,2000年12月由 UserLand Software 公司开发完成。

Atom 具有以下两种标准:

Atom 供稿格式(Atom Syndication Format):为发布内容而制定的网站消息来源格式,单讲 Atom 时,就是指此标准。

Atom 出版协定(Atom Publishing Protocol):为 Web 上内容的新增或修改而制定的协议。

用于订阅博客更新信息的 RSS 阅读器,这种应用几乎支持 RSS 的所有版本以及 Atom。

下面是 RSS 1.0 的示例:

xml
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet href="http://d.hatena.ne.jp/sen-u/rssxsl" type==>
"text/xsl" media="screen"?>
<rdf:RDF
xmlns="http://purl.org/rss/1.0/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xml:lang="ja">
<channel rdf:about="http://d.hatena.ne.jp/sen-u/rss">
<title>兔子的文学日记</title>
<link>http://d.hatena.ne.jp/sen-u/</link>
<description>兔子的文学日记</description>
</channel>
<item rdf:about="http://d.hatena.ne.jp/sen-u/20121215/p1">
<title>[security]提供脆弱性悬赏奖金计划的网站一览</title>
<link>http://d.hatena.ne.jp/sen-u/20121215/p1</link>
<description>正是所谓“是所谓Bounty Programs”、=>
处理接受Web脆弱性的相关信息,并提供奖金的计划 ...</description>
<dc:creator>sen-u</dc:creator>
<dc:date>2012-12-15</dc:date>
<dc:subject>security</dc:subject>
</item>

JavaScript 衍生的轻量级易用 JSON

JSON(JavaScript Object Notation,JavaScript 对象表示法)是一种以 JavaScript 的对象表示法为基础的轻量级数据标记语言。 能够处理的数据类型有 false / null / true / 对象 / 数组 / 数字 / 字符串,这 7 种类型。

json
{"name":"Web Application Security","num":"TR001"}

JSON 让数据更轻更纯粹,并且 JSON 的字符串形式可被 JavaScript 轻易地读入。 当初配合 XML 使用的 Ajax 技术也让 JSON 的应用变得更为广泛。另外,其他各种编程语言也提供丰富的库类,以达到轻便操作 JSON 的目的。

有关 JSON 更为翔实的内容请参考 RFC4627 “The application/json Media Type for JavaScript Object Notation (JSON)”

如有转载或CV请标注本站原文地址