<fo:table-body>
<xsl:for-each select="dummy">
<xsl:variable name="r" select="position()"/>
<fo:table-row>
<fo:table-cell>
<fo:block>
some text
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
所以这是我的代码。我想要做的是在特定行数(在我的情况下为17)之后中断页面并继续下一页。
到目前为止我尝试了什么:
<fo:table-body>
<xsl:for-each select="dummy">
<xsl:variable name="r" select="position()"/>
<fo:table-row>
<xsl:if test="$r mod 17 = 0">
<xsl:attribute name="break-after">page</xsl:attribute>
</xsl:if>
<fo:table-cell>
<fo:block>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
这会将该属性添加到该行。 但是,当fo用于创建PDF时,不会发生分页。
我正在使用Altsoft XML2PDF Converter。但我认为问题出在xslt。
答案 0 :(得分:2)
fo:table-row / @ page-break-after未在XSL 1.1中定义。如果XML2PDF符合XSL 1.1,那么你可以修改这个属性:
<xsl:if test="$r mod 17 = 0">
<xsl:attribute name="break-after">page</xsl:attribute>
</xsl:if>
请参阅以下URL中适用的fo:table-row属性:
根据你的评论,我用简单的例子进行了测试。
[输入XML]
<?xml version="1.0" encoding="UTF-8"?>
<root>
<dummy>A</dummy>
<dummy>B</dummy>
<dummy>C</dummy>
...
<dummy>P</dummy>
<dummy>Q</dummy>
<dummy>R</dummy>
...
<dummy>X</dummy>
<dummy>Y</dummy>
<dummy>Z</dummy>
</root>
[样式表]
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="2.0">
<xsl:output indent="yes"/>
<xsl:template match="root">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master master-name="spm" page-width="210mm" page-height="297mm">
<fo:region-body margin="10mm 10mm 10mm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="spm">
<fo:flow flow-name="xsl-region-body">
<fo:table>
<fo:table-body>
<xsl:for-each select="dummy">
<xsl:variable name="r" select="position()"/>
<fo:table-row>
<xsl:if test="$r mod 17 = 0">
<xsl:attribute name="break-after">page</xsl:attribute>
</xsl:if>
<fo:table-cell>
<fo:block>
<xsl:value-of select="."/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</xsl:for-each>
</fo:table-body>
</fo:table>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
</xsl:stylesheet>
[结果FO(摘录)]
<fo:table-row>
<fo:table-cell>
<fo:block>P</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row break-after="page">
<fo:table-cell>
<fo:block>Q</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell>
<fo:block>R</fo:block>
</fo:table-cell>
</fo:table-row>
[格式化结果]