假设我有一个包含 n 张图像的目录。我想每页添加一张图像。
例如:
在名为“Images”的目录中,我有以下 2 张图像:
newpage0.jpg 和 newpage1.jpg
我想将每个图像映射到一个页面上。如何根据目录中存在的图像数量动态创建页面序列? 下面的代码适用于一张图像。
<fo:page-sequence master-reference="A4">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<fo:external-graphic src="url(Images/newpage0.jpg)" width="100%"
scaling="uniform" content-width="scale-to-fit" />
</fo:block>
</fo:flow>
</fo:page-sequence>
请帮忙。
为了让您将问题标记为已解决,我将我的评论发布为答案。
XSLT 的当前版本是 3.0,自 2017 年以来一直如此。在使用 Apache FOP 的 Java 世界中,您可以轻松地将 XSLT 3.0 与当前版本 12(.4) 的 Saxon HE(可在 Github 和 Maven 上获取)结合使用。
在 XSLT 3.0 中,有 XPath 3.1 函数
uri-collection
,通过一些供应商特定的扩展,Saxon 允许您选择例如uri-collection('Images/?select=*.jpg')
在该目录中拥有 jpg 文件的集合 URI 序列,然后您可以使用 XSLT 3 中您知道或喜欢的任何构造(xsl:apply-templates select="uri-collection('Images/?select=*.jpg')
、xsl:for-each select="uri-collection('Images/?select=*.jpg')"
、xsl:iterate select="uri-collection('Images/?select=*.jpg')"
)来处理该序列并输出fo:page-sequence
对于序列中的每个项目。