我正在为我的学士论文尝试使用 XSLT 将一些 XML 数据转换为 HTML。
我的教授希望我也考虑 XSL-FO,或者至少写一些关于它的文字。但我对此很菜鸟。
所以我的问题是:
我可以将 FO 与 HTML 结合起来吗?我可以使用 FO 代替 HTML 和 CSS 吗?如果是,我的浏览器将如何呈现?是否有关于如何使用 FO 将 xml 转换为网页的示例/教程?
从 XSLT 生成 XSL-FO 和 XHTML 不一定是非此即彼的选择。
XSL-FO通常用于生成 PDF。为此,您将需要一个XSL-FO 引擎,例如FOP、RenderX、Antenna House、IBex等。但是,您可以将XSL-FO转换为XHTML,然后在浏览器中呈现。
通常,让您的 XSLT 创建XSL-FO然后转换为XHTML (直接生成 XHTML)是不值得的,除非您想轻松地创建两种输出格式(PDF 和 XHTML)。
可以同时创建 **XSL-FO和XHTML,而无需维护两套完整的样式表以在不同的词汇表中创建类似的输出**。
您可以创建主样式表库来生成XSL-FO或XHTML,然后使用第二个转换从 XSL- FO 到 XHTML,反之亦然。您可以利用现有的 XSLT 样式表来执行此操作。
过去,我开发了XSL-FO样式表,然后使用Render-X FO2HTML 样式表将XSL-FO转换 为 XHTML输出。它将<block>
元素转换为<div>
、等。 <inline>
<span>
我以前没有使用过它们,但您也可以尝试使用HTML2FO 样式表将XHTML输出转换为XSL-FO。
开箱即用,您可以获得两种格式的惊人相似的输出,同时维护一个专用于一种特定输出格式的 XSLT 库。
如果您碰巧需要稍微自定义输出(例如XHTML的不同标题内容),那么您只需要导入/扩展转换样式表并为不同的内容覆盖适当的模板。这使维护变得更加容易,因此您不必担心使用基本相同的信息更新多组样式表。
XSL-FO 仅用于 PDF 显示(这并不严格,但您可以将其作为指导)。所以 HTML 输出和 FO 输出是不相关的。从您的 XML 源,您可以使用 XSLT 生成 XHTML或XSL-FO,但不能同时生成两者。
参见例如 DocBook。它带有几个可以使用的 XSLT 样式表,一个用于 HTML 输出,一个用于 PDF(通过 Apache Fop)。如果您对结果感到满意,可能是另一个问题。