跳转到内容

ETD 指南/技术问题/渲染样式表

来自维基教科书,开放的书籍,开放的世界

问题

在将文档转换为 SGML/XML 的情况下,原始文件必须使用结构化样式表(模板)编写。但学生往往非常重视最终文档的布局,并在原始结构化样式表上进行许多个性化和调整。我们的职责也是将他们工作中的这方面也转换过来。专门用于文档内容的转换工具必须由可以生成渲染样式表的转换工具来完成:通常是 XML 文档的 XSL 文件。

布局需求

由于 SGML 或 XML 不能直接被使用当今浏览器(Opera、Netscape、Internet Explorer)的用户读取,因此需要以样式表的形式提供布局信息,或者将这些高度结构化的文档转换为 HTML、PDF、PS 的布局或可打印版本,这些版本更容易被用户用来阅读文档。

通常,大学有两种方法来应对对布局的需求

  1. 尝试保留作者(学生)为 MS Word 或其他文档提供的全部布局信息。此策略通过作者对其工作的标准样式表进行个性化来直接涉及作者。
  2. 大学可以决定开发一个单一的样式表或选择某些可用于所有 ETD 的样式表。这将支持企业设计,并在更一般的层面上解决布局问题,将其留给 ETD 生产部门。

用于 SGML 或 XML 文档的样式表

在法国(里昂 2 和马恩拉瓦莱的合作)正在开发这种工具,用于在 MS Word 和其他与 RTF 兼容的创作工具中生成的文档。他们的工具基于对与每个使用样式相关联的排版特征的分析和提取。

等效工具

对于使用 LateX 生成的文档,等效工具应易于开发,因为这种语言在本质上使用渲染样式表的概念。

用于 XML 的样式表语言是

  • 层叠样式表(CSS)
  • 可扩展样式语言(XSL)。

由于 CSS 无法处理像论文和学位论文那样大的 XML 文档的复杂性和需求,因此不建议使用 CSS。

XSL 标准内的子标准

在 XSL 标准内,区分了几个子标准

  • 可扩展样式表转换(XSLT)。这部分允许用户生成充当小型程序的样式表。它们转换原始文档,该文档始终对指定的 DTD 有效,转换为遵循另一个 DTD(这使得在浏览器中更容易渲染,例如 HTML.dtd)的文档,或者允许将文档转换为其他文档描述语言,例如 Rich Text Format(RTF)、LaTeX、PDF。从这些格式中,可以生成打印版本。
  • XPath 允许作者构建链接到其他 XML 文档的表达式,而不仅仅是链接到整个文档。一旦通用浏览器支持这种链接技术,就可以引用某个子部分,并引用例如第 3 节到第 5 节。
  • XSL:Fo(格式词汇,可以应用于 XML 文档的节点)

基于使用样式表的按需打印服务(POD)示例

将文档服务器用作长期电子档案的数字图书馆不会使印刷信息变得多余。相反:对于这些信息系统的用户来说,对印刷文档的需求正在增加。在大多数情况下,这种需求往往并不集中在整个文档本身,而是集中在文档的特定部分,如章节、引用等等。为此,柏林洪堡大学的按需打印项目旨在开发一项技术,允许用户仅打印特定文档的所需部分。

使用 XML 按需打印

对于使用 XML 的按需打印组件,选择了 Apache/Cocoon。此软件使用 XSLT 引擎来实时生成 HTML 或 PDF 版本。“Cocoon 项目是一个在 Apache 软件基金会 (ASF) 的指导下进行的开源志愿者项目,并且与 Apache 服务器本身保持一致,它是在非常开放的许可下发布的。即使 Cocoon 的最常见用途是通过处理静态或动态生成的 XML 文件来自动创建 HTML,但 Cocoon 也能够执行更复杂的格式化,例如 XSL:FO 渲染到 PDF 文件,客户端相关的转换,例如适用于支持 WAP 的设备的 WML 格式化,或直接将 XML 提供给支持 XML 和 XSL 的客户端。”

Cocoon

由于 Cocoon 不包含按需打印组件(尤其是选择功能),因此必须创建一个使用不同 XSLT 样式表的小型变通方法。包含对实际文档的 HTML 视图的用户视图包括复选框,用户可以使用这些复选框来选择特定文档的部分。此视图由 XSLT 代理样式表生成,该样式表调用生成 HTML 的默认样式表(带有选项 document.xml?format=html 的 XSLT 样式表)。如果用户通过单击复选框选择文档的某些部分,然后单击“确定”按钮,则会调用一个 perl 脚本(PHP-Choise)。此脚本通过使用 XPath 表达式 (http://dochost.rz.huberlin.de/proprint/bsp/slides.xml?CHAPTER=3http://dochost.rz.huberlin.de/proprint/bsp/slides.xml?CHAPTER=4 ) 选择文档的所需章节和节,从文档中剪切这些部分,并将它们保存在主内存中。此过程由 XSLT 代理样式表执行,该样式表现在已使用 XML 选项(document.xml?format=xml)调用。这些部分被添加到一个单独的 XML 文档中(全部位于主内存中!),并通过 XSLT 代理样式表使用打印选项或 HTML 选项(document.xml?format=pdf 或 document.xml?format=html)进行处理。

Usage of Apache/Cocoon for Printing on Demand


下一节:元数据,交叉对照

华夏公益教科书