使用XSL-FO和HTML?

时间:2010-04-30 10:50:15

标签: xslt xsl-fo

我正在尝试使用XSLT将一些XML数据转换为HTML用于我的学士论文。

我的教授也希望我考虑XSL-FO,或者至少要写一些关于它的话。但我非常喜欢这个。

所以我的问题是:

我可以将FO与HTML结合使用吗?我可以使用FO而不是HTML和CSS吗?如果是,我的浏览器将如何渲染?是否有关于如何使用FO将xml转换为网页的示例/教程?

2 个答案:

答案 0 :(得分:8)

从XSLT生成XSL-FO和XHTML不一定是一种选择。

XSL-FO 通常用于生成PDF。为此,您需要 XSL-FO引擎,例如FOPRenderXAntenna HouseIBex等。但是,您可以将 XSL-FO 转换为 XHTML ,然后在浏览器中呈现。

一般来说,让XSLT创建 XSL-FO 然后转换为 XHTML (直接生成XHTML)是不值得的,除非你想要减少工作量创建两种输出格式(PDF和XHTML)。

可以同时创建** XSL-FO XHTML ,而无需维护两套完整的样式表,以便在不同的词汇表中创建类似的输出**

您可以创建主样式表库,以生成 XSL-FO XHTML ,然后使用第二个转换将 XSL-FO 转换为 XHTML 和副-versa。 您可以利用现有的XSLT样式表来执行此操作。

过去我开发了 XSL-FO 样式表,然后使用Render-X FO2HTML stylesheet XSL-FO 转换为 XHTML 输出。它会将<block>元素转换为<div>,将<inline>转换为<span>等。

我之前没有使用它们,但您也可以尝试使用HTML2FO stylesheets XHTML outut转换为 XSL-FO

开箱即用,您可以在两种格式中获得惊人相似的输出,同时维护一个专用于一个特定输出格式的XSLT库。

如果您碰巧需要稍微自定义输出(例如 XHTML 的不同标题内容),那么您只需要导入/扩展转换样式表并覆盖相应的模板以用于发散内容。这使维护变得更加容易,因此您不必担心使用基本相同的信息更新多组样式表。

答案 1 :(得分:5)

XSL-FO仅用于PDF显示(这不是严格意义上的,但您可以将其作为指导原则)。因此HTML输出和FO输出无关。从XML源代码中,您可以使用XSLT生成XHTML XSL-FO,但不能同时生成两者。

请参阅DocBook示例。它附带了几个可供使用的XSLT样式表,一个用于HTML输出,另一个用于PDF(通过Apache Fop)。如果您对结果感到满意可能是另一个问题。