XSL 样式 sheet for XML to XSL-FO

XSL style sheet for XML to XSL-FO

我需要将 XML 个文件转换为 PDF,将通过 XSL-FO 完成。 源 XML 文件有自己的结构和字典 (NITF),不应更改。我必须为这些文件创建特定的 XSL 样式器。在整个 XML 个元素中,我只需要几个:

文字

Google 是你的朋友。我搜索了 NITF XSL FO 并找到了这个 https://github.com/ydirson/serna-free/tree/master/serna/dist/plugins/nitf/nitf-xsl-serna

如果您使用的是行业标准 XML,那么 XSL 可能存在 HTML,许多 XSL FO。

我从 Github 克隆并下载了该项目。 XSL 在那里并引用了其他一些。您只需要 "dist" 目录及以下目录,但其中还有很多很多东西您不需要。实际上,如果您检查根 "nitf.xsl",您会看到:

<xsl:import href="../../../xml/stylesheets/xslbricks/fo/fonts.xsl"/>
<xsl:import href="../../../xml/stylesheets/xslbricks/fo/common.xsl"/>
<xsl:import href="../../../xml/stylesheets/xslbricks/fo/layoutsetup.xsl"/>
<xsl:import href="../../../xml/stylesheets/xslbricks/fo/default-elements.xsl"/>
<xsl:import href="../../../xml/stylesheets/xslbricks/fo/page-sizes.xsl"/>
<xsl:import href="../../../xml/stylesheets/xslbricks/fo/xhtml-tables.xsl"/>

<xsl:include href="nitf-param.xsl"/>
<xsl:include href="nitf-common.xsl"/>
<xsl:include href="nitf-struct.xsl"/>
<xsl:include href="nitf-meta.xsl"/>
<xsl:include href="nitf-blocks.xsl"/>
<xsl:include href="nitf-inlines.xsl"/>
<xsl:include href="nitf-lists.xsl"/>
<xsl:include href="nitf-images.xsl"/>
<xsl:include href="nitf-tables.xsl"/>

那些 imported/included 文件将代表所有 XSL(除非其中一些还引用其他文件,我没有检查)。

运行 你上面的 XML (在添加你省略的关闭 标签之后)并使用 Apache FOP 将生成的 FO 格式化为 PDF,它产生这个:

现在,如果您愿意,您当然可以检查这些 XSL 以观察您在 XSL 中做错了什么,但是正如您所看到的,已经有很多工作投入到这些 XSL 中。我总是尽量避免 "reinventing the wheel."

要重新组织所有这些,您只需隔离所需的 XSL,编辑主 "nitf.xsl" 以根据需要在一个目录中引用所有 XSL。我这样做了,它仍然有效(所以 none 我没有检查引用其他的 XSL),我的目录现在只有以下内容,我删除了所有其他内容: