XML Hype
每个人都在谈论XML。这里是XML,那里是XML。所有应用程序服务器支持XML,每个人都想使用XML进行B2B,web服务使用XML,甚至使用XML的数据库。
你应该关心它吗?考虑到大量炒作,你负担不起忽略XML就像忽略万维网十年前的网络:一个明显的错误。但为什么XML会这样呢?是什么XML在解决您的问题时似乎具有这种“魔力”?这不是吗再次改变您花费的IT基础架构在过去几年里,实施和修复了这么多时间?不是吗另一种从你口袋里掏钱的方法?
如果你曾经问过自己上述问题中的一个,这篇论文是为你。你不会发现歌舞营销炒作,你不会发现无聊而无用的功能列表,你找不到常用的缩写词轰炸或那些连接您的通过CORBA或诸如此类的东西将数据库连接到咖啡机。
本文档将向您解释Cocoon项目的内容以及我们是什么解决我们在网络工程中遇到的问题经验,但从管理层的角度来看,是的,因为我们都有管理网站、与同事打交道、匆忙等问题向图形大师提供带有新标题的小GIF,或晚上打电话给网络管理员,因为数据库正在返回没有理由的错误。
看到最好、最聪明的信息令人沮丧曾经发明的技术——网络——因缺乏工程而遭到破坏实践,被那些“让我们重新发明一个轮子”所折磨擅长独立完成工作的工匠无法在团队内扩展,导致项目增长饱和。
必须有更好的做事方式。
个人经历
1998年,Stefano Mazzocchi自愿为java.apache.org项目,它由一堆不同的代码库,由一群不同的人维护技能、不同的地理位置和不同的意愿并花时间致力于文档工作。
但很快他意识到,无论系统是,HTML是一个问题:它不是为这些类型的东西。通过查看主页(http://java.apache.org/)来自浏览器,您可以清楚地识别屏幕区域:侧栏,顶栏、新闻、状态。但是如果你查看了底层的HTML,就会发现:表标记和嵌套以及使HTML显示的小技巧每个浏览器都是一样的。
所以他四处寻找替代技术,但所有这些都是试图在GUI级别增加更多复杂性(Microsoft Frontpage,Macromedia Dreamweaver、Adobe GoLive等)希望“隐藏”所见即所得厚层下的HTML设计问题。
你看到的就是你得到的。
但你所看到的是你所拥有的。
如何告诉web服务器提取包含在侧边栏?如何让它在复杂的HTML页面中查找新闻文章?
对于人类读者来说,这当然很容易:只要看一下页面,你就会发现毫无疑问,可以区分侧边栏、横幅、新闻和股票报价。为什么机器这么难?
HTML模型
HTML是一种告诉浏览器如何在其上“绘制”内容的语言窗口。这里是图像,那里是字母,下面是颜色。没什么了。浏览器没有“边栏”的“高级”概念:它缺乏对HTML内容进行“语义分析”的能力。
语义分析?是的,人脑就是这样的只是做得很好,而计算机程序只是在大的时候失败。
因此,使用HTML,我们又向前迈进了一步,创建了一个高度可视化的吸引人的HTML内容web,但我们通过删除所有来自内容本身的高级语义信息。
好吧,让我们举个例子。。。你们大多数人都见过HTML第页。。。如果没有,下面是一个示例:
| | |
|
<html><body><p>嗨,我是一个HTML页面</p><p align=“center”>作者:Stefano</p></body></html>
| |
| | |
它对浏览器说:
-
我是HTML页面
-
我有一具尸体
-
我有一段
-
我包含一句话“嗨,我是一个HTML页面。”
-
我包含一句“由Stefano撰写”
假设你是一个不懂我们字母表的中国人,试试看回答以下问题:
谁写的这页?
你不能进行语义分析,你就像网络浏览器一样盲目。你唯一能做的就是把它画在屏幕上,因为这是你是按照程序来做的。换句话说,你的语义能力是修复了绘图功能和一些其他功能(如链接),因此有限。
语义标记
假设您收到此页面:
| | |
|
<第页><author>sflkjoiuer</author><内容><para>sofikdjflksj</content></页>
| |
| | |
你现在能告诉我是谁写的吗?简单,你说,“sflkjoiuer”做到了。很好,但稍后您将收到:
| | |
|
<dlkj><ruijfl>sofikdjflksj</ruijfl>软件<wijlkjf><oamkfkj>sflkjoiuer</wijlkjf></dlkj>
| |
| | |
现在,谁写的页面?你可以通过比较结构来猜测,但是你怎么知道这两个结构反映了相同的语义信息?
以上两个页面都是XML文档。
他们会帮你吗?他们是在简化你的工作吗?是他们会简化你的问题吗?
在这一点上,显然不是,相反。
所以,你可能会想,为什么我们要花这么多精力编写XML发布框架?这份文件写得很准确为了消除你对此的疑虑,让我们继续前进。
XML语言
XML通常被称为“可扩展标记语言”规范。一个相当小但复杂的规范,它表明如何编写语言。这是一种语法。说实话,一点也不奇怪。所以
是正确的,而
不是,但
是正确的。这还不止于此,但我将跳过这里的技术细节。
XML是新千年的ASCII,它比ASCII向前迈进了一步或UNICODE(ASCII的国际扩展,包括所有所有现代语言中的字符)。它定义了一种“通用语言”文本语言。
好的,很好,所以现在不要用一种统一的视觉语言语义(HTML)我们有各种语言,每种语言都有自己的语义。这对你有什么帮助?
XML转换
这就是Stefano两年前或多或少的处境org:我可以使用XML并用<侧栏>、<新闻>、<状态>所有这些我相信人们会发现那些XML文档更容易编写(因为XML语法是与HTML非常相似,并且非常用户友好)。。。但我会的从“所有浏览器”移动到“无浏览器”。
而且没有人可以浏览的文档是完全无用的。
转折点是XSL规范的创建包括一种将XML页面“转换”为其他内容的方法。(它是比这更复杂,但我还是跳过技术细节)。
现在你有了:
| | |
|
XML页面---(转换)-->HTML页面^|转换规则
| |
| | |
它允许您用XML编写页面,将“图形”创建为转换规则并直接从您的web服务器。
Apache Cocoon 1.0就是这样做的。
模型不断发展
如果XML是一种通用语言,这意味着XML软件几乎可以在什么都不在乎。所以,如果手机要求Cocoon只需更改转换规则并发送将WAP页发送至手机。或者,如果你想要一个漂亮的PDF来打印你的月报,你改变了转换规则,Cocoon创建了您的PDF、VRML、VoiceML或您自己的专有B2B标记。
任何不改变基本架构的东西都是基于简单的“尖括号”XML语法。
关注点分离(SoC)
Cocoon并不是第一个执行服务器端XML的产品转变,也不会是最后一次(几年后解决方案将是规则,而不是例外)。那么,什么是Cocoon项目添加的“加”?
我们认为Cocoon最重要的创新是基于SoC的设计。
SoC是你一直都知道的东西:并不是每个人都是平等,并不是每个人都有同样的能力做同样的工作。
可以观察到,在不同的工作组提高了生产力,减少了管理成本,但前提是集团没有重叠并且有明确的“合同”定义了它们的可操作性和关注点。
对于web发布系统,Cocoon项目使用我们称之为合同金字塔其中概述了四个主要关注领域和五个他们之间的合同。图片如下:
Cocoon是工程设计的为您提供一种隔离这四种病毒的方法关注仅使用这5个合同的领域,取消合同风格和逻辑之间的冲突,自那时以来一直困扰着网站开发Web的开始。
为什么?因为程序员和绘图人员的技能截然不同和工作习惯。。。因此,与其创建GUI来隐藏可能有害(如图形对程序员或逻辑对设计师),Cocoon允许您将内容分成不同的文件您可以将您的工作组“密封”到连接的单独虚拟房间中其他房间只有那些“管道”(合同)从管理区给他们。
让我们举一个例子:
| | |
|
<第页><内容>今天是动态的:今天</content></页>
| |
| | |
由内容编写者编写,您为他们提供“contract”表示标签<dynamic:today/>打印出当天的时间当包含在页面中时。内容作者不在乎(也不在乎应该)使用了什么语言,也不是可能会弄乱生成内容,因为它存储在系统的另一部分没有访问权限。
因此,<dynamic:today/>是“逻辑内容”合同。
同时,页面结构作为合同提供给必须提出转换规则的图形设计师在浏览器可以使用的语言中转换此结构理解(例如HTML)。
因此,页面结构就是“内容风格”契约。
只要这些合同不变,这三个领域就可以在完全平行的方式,而不会压倒过去的人力资源管理它们:成本降低,因为上市时间缩短由于错误不会传播到关注领域。
例如,你可以告诉你的设计师设计一个“圣诞节造型”对于您的网站,甚至不告诉其他人:只需切换到圣诞节早上的圣诞变换规则,你就完成了。。。。只是想象一下,今天在你的网站上这样做是多么痛苦。
使用Cocoon架构,只需几行更改即可完成所有这一切。
我们开始吧
如果你在我的课文中达到了这一步,你应该能够掌握Cocoon项目的价值,以及区分大多数营销围绕XML和朋友的炒作。
就像你不应该在意有人给你提供的软件“符合ASCII”或“基于ASCII”,您不应该关心“XML“兼容”或“基于XML”:这没有任何意义。
Cocoon使用XML作为其框架的核心部分,但改进了模型为您提供所需的工具,并且设计得足够灵活遵循您当前的需求以及可能在未来。
|