用 JavaMail 和 XSLT 管理 ezine(转载)
这样,您已经学过了 XML。并且已经逐步掌握了 DTD、XSLT、SAX 和 DOM。您解开了名称空间的秘密,并认为掌握了常人难以理解的技术。祝贺您!那么,现在该做什么呢? 我从开发人员的反馈得知,不只您一个人自问那个妙极了的问题。本文将通过一个实际的应用程序给出一个答案。它演示了如何用 Java 和 XML 自动进行发布。我想,这会给您一些鼓舞。 本文不介绍 XML。我假设您已熟悉 XSLT,并有一些 SAX 语法分析的概念。即使需要有关那些主题的背景知识,您可能仍想通读本文,因为它会激励您学习更多的新知识。但是请务必参考参考资料一节以学习基本的 XML 知识。 XML ... 和电子邮件? XML 看起来可能不象是天生与电子邮件搭档的技术。但是别急,当看到这种奇异组合的效果时,您可能会感到惊奇的。 正如您可能知道的那样,Eudora、Outlook、Netscape 和其它新式电子邮件客户机允许您发送 HTML 格式的电子邮件。最初的电子邮件消息只限于纯文本,并且不支持粗体、斜体或超链接。而最新的电子邮件客户机可以识别 HTML,因此,现在可以发送纯文本格式的消息,也可以发送具有多种格式的文档。 这种电子邮件格式的选择为电子邮件杂志 (e-zine) 的发布人员提出了一个问题。实际上,这种选择在 e-zine 发布人员开发各种策略来克服其两个最大问题(争取和保留订户)方面起了一定的作用。不幸的是,订户对支持或反对 HTML 电子邮件抱有很强的立场。 更糟的是,一些客户机(包括流行的 AOL 4.0 到 5.0)根本不支持 HTML。除非极其小心,否则使用那些旧式电子邮件客户机的订户只能看到一些无用信息。 一般地,e-zine 发布人员都尽力为读者着想。在纯文本电子邮件时代,精明的发布人员会手工地改变文章的格式。有些人在 HTML 电子邮件时代还继续保持这个好的传统,不遗余力地为每份文档准备两种版本:为旧式电子邮件客户机提供纯文本,以及为新式客户机提供 HTML 版本。听说这点之后,我灵机一动,想到了“XSLT 样式表”。(这可能就是我将成功的确切信号。) 原理 在这个共分为两部分的文章里,您将看到 XML、XSLT 和一些 Java 编程如何简化工作。在这样做的过程中,您将使用各种 XML 技术。在开始之前,让我们全面回顾一下: 当然,首先是 XML 本身。e-zine 将用 XML(更确切地说,是 DocBook)编写。DocBook 是一种用于技术文档的流行 XML 词汇表。 XSLT 通常用于将 XML 转换成 HTML。那将解决一半问题(即,准备 e-zine 的 HTML 版本)。 增强文本 XSLT 支持的特殊文本格式化器。事实上,正如您所理解的那样,e-zine 的首要需求是最好的文本格式化。 JavaMail,发送电子邮件的标准 Java API。 图 1 演示了这些组件之间的关系。从左至右,最终目标是用 e-zine 的文本和 HTML 版本准备所谓的多部分电子邮件。 图 1. 解决方案中的组件如何交互 准备电子邮件涉及到两个样式表:一个输出文本,另一个输出 HTML 版本。文本格式化器辅助样式表。JavaMail 获得两个副本并将它们发送到订户。 本系列的第一部分重点讨论文本变换。第二部分将用 JavaMail 发送两种版本的消息。