理解 GRML





1.00/5 (19投票s)
2003 年 6 月 18 日
8分钟阅读

62791
标记语言的开发。
引言
HTML 是网络上使用的主要标记语言。在首次发布后,它缺少许多如今在网络上司空见惯的功能。HTML 花费了许多年才演变成现在的样子。事实上,从第一次尝试创建标记语言到 HTML 2.0,几乎过去了四年。自 1995 年以来,HTML 一直在不断变化。这表明了开发标记语言所必需的投入。
在 HTML 开发开始之前,需要软件来测试其功能。开发的软件是第一个 HTML 网页浏览器的前身。没有软件,就无法测试标记语言。这表明了开发标记语言的要求。软件驱动着它的发展。
本文的目的是展示通用重用标记语言(General Reuse Markup Language,简称 GRML)是如何发展成其当前格式的。通过示例展示 GRML v1.0 和 GRML v2.0 格式之间的差异。将描述每种标记语言的属性以及它们如何在网络上使用。
背景
这是关于 GRML 系列文章中的一篇。在继续阅读之前,请阅读文章《介绍 GRML》。它概述了现有的文件格式和标记语言,并解释了 GRML 的创建原因。
如果您对标记语言、潜在的替代方法或网页浏览器技术不感兴趣,那么本文不适合您。对于认为 HTML 是浏览网页唯一方式的任何人来说,本讨论都不合适。
开始
创建 GRML 的过程是间接的。它源于创建前端以从网页中提取内容的愿望。想法是提交一个网页请求,并以多种应用程序可用的格式检索内容。HTML 以一种方式显示内容,因此不能被多种应用程序使用。由于目标网页使用 HTML,因此检索到的内容需要以另一种格式提供。
从 HTML 网页中提取内容的唯一解决方案是使用适配器。适配器读取一种格式的数据并将其写入另一种格式。这是一个完美的解决方案,但有一个问题。每次请求网页时,HTML 网页的描述方式都不同。如果没有为每个网页创建适配器,就无法提取作者信息、文章文本或产品描述。必须有更好的方法。
构建网页前端
在尝试寻找一种实用的方法来从网页中提取内容时,正在开发一个用于显示内容的前端。开发了一个单一的适配器,用于将单个网页的 HTML 转换为前端使用的非正式格式。这种非正式格式是创建标记语言的初步步骤。
从 2002 年 6 月到 2002 年 8 月,前端使用网站适配器将 HTML 网页转换为文本进行显示。除了从适配器读取单行文本外,没有其他格式。随着开发的继续,添加了更多适配器,直到有 6 个可用。前端发送的网页请求必须使用这 6 个适配器之一。没有功能让用户输入自己的网页请求。
第一次尝试
在构建网页前端时,需要一个用于使用输入控件发送请求的表单。这需要一种正式的方法来处理与网页的请求和响应。使用任意行文本效率低下。这是个人标记语言(Personal Markup Language)的开始。
新的标记语言具有*表单*支持,并为格式化网页内容提供了结构。但是,*表单*是有限的。起初,前端从第一个网页请求创建了一个*表单*。无法显示另一个*表单*。为了让标记语言为每个网页请求创建*表单*,对前端进行了更新。
升级格式
有了*表单*支持后,前端现在从输入控件发送网页请求,并在必要时从网页响应创建*表单*。唯一缺失的功能是能够将网页内容组织成组,并在前端单独显示每个内容组。这需要一种新的标记语言。这是简单标记语言(Simple Markup Language,SML)的开始。
当前端显示网页内容时,称为一个维度。将内容分成不同的组会为每个组创建一个维度。前端需要显示用于预测、物流和数据分析的不同维度内容。一旦添加了此支持,前端就显示了多维*视图*。
在标记语言开发过程中,有一点是恒定的。前端不允许用户直接输入网页请求。用户必须从前端使用的 6 个网页请求中进行选择。或者,使用*表单*提交请求。一旦移除了这个限制,就必须完全重新设计标记语言。这种新的标记语言是 GRML 的第一个版本。
GRML 版本 1.0
GRML 于 2003 年 1 月完成,支持*表单*输入控件、列和结果。它具有多维支持,并使用了“Web 应用程序”的概念。每个“Web 应用程序”代表用户在网上执行的一项活动。第一个 GRML 网页浏览器具有用于使用搜索引擎、获取新闻头条、查看拍卖列表和查找工作的“Web 应用程序”。
“Web 应用程序”是网页前端时代的遗留物,当时不支持提交网页请求或打开文件。虽然网页浏览器允许网页请求,但如果网页要显示,这些请求必须是“Web 应用程序”之一。
“Web 应用程序”的目的是在 GRML 网页浏览器中使用来自 HTML 网页的内容。由于 HTML 网页非常多,而 GRML 较新,因此能够将 HTML 适应 GRML 是有利的。“Web 应用程序”就是这样做的。
GRML 中“Web 应用程序”的示例。
<GRML>
<a class=navi_13 name=AUCT type=title>Auctions</>
<a class=navi_13 name=JOBS type=title>Job Search</>
<a class=navi_13 name=SRCH type=title>Search Engine</>
<a class=navi_13 name=AUCT type=location>127.0.0.1/auc.asp?search2=</>
<a class=navi_13 name=JOBS type=location>127.0.0.1/jobs.asp?search2=</>
<a class=navi_13 name=SRCH type=location>127.0.0.1/parse.asp?search2=</>
<a class=hist_13 type=item>127.0.0.1/startup.asp</>
<a class=hist_13 type=item>127.0.0.1/over.asp</>
</GRML>
GRML 的设计目的是供许多不同的浏览器使用。由于只有一个 GRML 网页浏览器,因此无法测试此功能。随着其他浏览器的创建和标记语言的发展,GRML 在 2003 年的前四个月升级到了 1.1 版本。
GRML 的下一个主要升级发生在解决“Web 应用程序”问题时。
GRML 版本 1.2
“Web 应用程序”方法的一个限制是每个“Web 应用程序”和使用的每个网站都需要一个单独的网页。由于有数百万个网站,因此为每个网站创建“Web 应用程序”是不切实际的。另一个问题是,如果网站发生变化,则需要更新“Web 应用程序”。如果支持数百万个网站已经很困难,那么保持更新几乎是不可能的。GRML 需要进行更改。
在 2004 年 3 月,与“Web 应用程序”相关的所有内容都从 GRML 中移除。这使得标记语言能够专注于*表单*输入控件、列和结果。随着“Web 应用程序”的移除,现在可以使用更通用、更一致的 Web 适配器读取任何网页。
GRML 版本 1.2 的示例如下
<a class=edit_13 name=url1 type=title>Enter URL:</>
<a class=edit_13 name=url1 type=location>http://127.0.0.1/links.asp</>
<a class=column_13 type=item>Title</>
<a class=column_13 type=item>Result</>
<a control=result_13 type=item>RIAA, MPAA Ask High Court To Review</>
<a control=result_13 type=item>It's official: Hollywood studios and record
companies on Friday asked the United States Supreme Court to overturn a
controversial series of recent court decisions that have kept file-swapping
software legal." (Previous /. coverage here.)</>
<a control=result_13 type=link>http://slashdot.org/article.pl?sid=04/10/11/1846208</>
GRML 版本 1.2 是 GRML 1.x 系列的最后一个版本。在接下来的六个月使用中,它为标记语言语法的一次新变化奠定了基础。
GRML 版本 2.0
GRML 的早期版本在 Web 和本地文件系统上运行良好。它允许开发使用其*表单*和列/结果方法的各种网页浏览器。除了移除“Web 应用程序”之外,GRML 的语法从 1.0 到 1.2 版本变化不大。速度、控制和可靠性问题未被考虑。然而,GRML 版本 2.0 改变了这一点。
GRML 的此版本旨在创建小文件大小,使用更少的浏览器资源处理文件和网页内容,并提供更多安排文件和网页内容的方式。旧语法被完全抛弃,取而代之的是更小的标签和更具体的标签关键字。1.2 版本中的 GRML 样本在 2.0 版本中如下所示。
<edit url1>
<location>Enter URL:
<title>http://127.0.0.1/links.asp
</edit>
<column>
<Title>
<Description>
<Link>
</column>
<result>
<Title>RIAA, MPAA Ask High Court To Review
<Descriptiong>The Hobo writes "It's official: Hollywood studios and record
companies on Friday asked the United States Supreme Court to overturn a
controversial series of recent court decisions that have kept
file-swapping software legal." (Previous /. coverage here.)
<link>http://slashdot.org/article.pl?sid=04/10/11/1846208
</result>
使用 GRML 2.0 语法,标签大小比 1.2 版本减少了三分之一。此外,当网页的行非常长时,不会出现内容被截断的问题。在 1.2 版本中,内容将不会被读取,因为结束标签*必须*与开始标签在同一行。对于非常长的内容,结束标签将出现在下一行,并带有剩余的内容。2.0 版本解决了这个问题,因为它不使用结束标签。
使用 2.0 版本可以组织列和结果,而 1.2 版本无法做到。使用上述 GRML 中的column
标签,列显示顺序由将顶部的列列为第一,底部的列列为最后来设置。结果的顺序无关紧要。如果有五个列项目,并且第三个应该首先显示,则将其放在column
标签项的顶部。
当结果项在其标签中指定了列时,只有当该列出现在<column> ... </column>
标签之间时,才会显示。如果只需要显示一列结果,则只指定该列。或者,指定任意数量的列,并仅显示结果中的那些。这在之前的 GRML 版本中是不可能的。
结论
GRML 自 2003 年 1 月首次发布以来,已经经历了多个版本。它已从“Web 应用程序”标记语言发展成为网页标记语言。随着 2.0 版本的推出,它拥有了迄今为止所有版本中最小、最快、最灵活的语法。
通过支持*表单*输入控件、列和结果,GRML 能够支持许多网页浏览器,并提供与其内容相适应的视图,无论使用何种浏览器。