标题: 使用单个 XSLT 样式表发布 HTML 和 PDF 格式的 XML 数据(1) [打印本页] 作者: look_w 时间: 2018-10-18 17:11 标题: 使用单个 XSLT 样式表发布 HTML 和 PDF 格式的 XML 数据(1)
存储数据,比如,存储为 XForms/REST/XQuery [XRX] 架构的一部分(参见 )在如今很常见。您可以查询、检索以这种方式存储的数据并将其序列化为想要的格式。对于 Web 应用程序,开发人员可能希望允许用户以 HTML 格式(以便在其 Web 浏览器中查看)或以 PDF 文件的形式(以便下载供以后使用)检索数据。
本文介绍如何借助一个基于 CSSToXSLFO 工具的 XQuery 扩展函数,将 XML 数据转换为 HTML,从该 HTML 转换为 XSL-FO,以及从 XSL-FO 转换为 PDF(参见 )。
将 XML 数据转换为其他格式常用缩略语
CSS:级联样式表
HTTP:超文本传输协议
JAR:Java 存档文件
LDAP:轻型目录访问协议
SQL:结构化查询语言
W3C:万维网联盟
XSL-FO:可扩展样式表语言格式对象
XSLT:可扩展样式表语言转换
通常,您需要两个 XSL 样式表来将数据从 XML 转换为 HTML 和 XSL-FO:一个将 XML 转换为 HTML,另一个 XSL-FO 样式表将 HTML 转换为 XSL-FO 文档,然后可以使用 XSL-FO 处理器将该文档转换为 PDF。这个过程表明,在以 HTML 和 PDF 格式生成报告的 Web 应用程序等环境中,您必须编写一个新 XSLT 样式表来将数据转换为 HTML,然后编写、调试和维护相应的 XSL-FO 样式表。这些样式表可能很难掌握,而且 XSL-FO 也不那么容易使用。幸运的是,因为报告不需要很复杂,所以您可以在 CSS 文件中轻松表达布局。然后,可以使用 CSSToXSLFO 实用工具进一步处理 CSS 文件,该实用工具只需少量编码即可生成 XSL-FO 文档。
这个过程和其他类似场景是本文所提供方法的完美用例,即,编写一个将 XML 转换为 HTML 的 XSLT 样式表,然后再向其添加些额外的 CSS 指令,以便它可将 HTML 转换为 XSL-FO,然后再转换为 PDF。
CSSToXSLFO 实用工具CSSToXSLFO 实用工具允许将 XML 文档连同一个 CSS version 2 (CSS2) 样式表转换为 XSL-FO 文档。为了使用此实用工具,我为 eXist XML 数据库开发了一个 XQuery 扩展函数,作为 XQuery 扩展模块中用于数字发布的一部分。
此实用工具可处理大部分 CSS2 规范。为了处理特定的 XSL-FO 功能,它提供了通常被浏览器忽略的多个 CSS 扩展指令。可在 CSS 样式表的 @media 打印部分的 @page 规则中使用这些属性。这些属性与页面区域、页码、引用、引导符、命名字符串、连字符、脚注、外部图形和外部元素相关。一定要查看 CSSToXSLFO 实用工具的收藏(参见 ),了解该工具的更多信息和完善您设计的 XSLT 样式表的技巧。
eXist XML 数据库eXist-db 是一个开源的数据库管理系统,完全使用 XML 技术构建。除了其他标准,它还支持 XQuery、XPath 和 XSLT。eXist 依据 XML 数据模型来存储数据,高度遵守 XQuery 标准。存储的数据使用 XQuery 通过基于索引的方式来处理。该数据库还有一个基于 Apache Lucene 的全文索引。
eXist 的 XQuery 引擎是可扩展的,所以 eXist 拥有各种各样的 XQuery 扩展模块。这些模块提供了 XQuery 扩展功能,比如: