目前需要用FOP将XSLT转换为PDF文件. PDF文件可以出来. 但是却是自动换页. 我需要在指定的位置另起一页,却始终没有实现本身就不熟悉XML.
所以请大家帮忙解决一下.
以下是XSLT代码
-----------------------------<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xalan="http://xml.apache.org/xslt"
xmlns:list="xalan://java.util.ArrayList"><xsl:param name="dateFrom"/>
<xsl:param name="dateTo"/>
<xsl:param name="regList"/>
<xsl:template match="/"><xsl:variable name="regNumRows" select="list:size($regList)"/>
<xsl:variable name="reg_row_indexes" select="transformutil:getArrayIndicesAsTokenisedString($regNumRows)"/>
<html>
<body>
<xsl:for-each select="xalan:tokenize($reg_row_indexes,';')">
<xsl:variable name="regrowIdx" select="number(.)"/>
    <xsl:variable name="regcurrRow" select="list:get($regList,$regrowIdx)"/>
    <xsl:variable name="colIdx" select="number(.)"/>
    <xsl:variable name="regNum" select="list:get($regcurrRow,0)"/> <table>
<tr>
<td><font color="#fffffb" size="4"><b>Registration Number :<xsl:value-of select="$regNum"/></b></font></td>
<td align="right"><xsl:value-of select="position()"/></td>
</tr>
<tr style="background-color:#b69968;font-weight:bold;">
<td><font color="#fffffb" size="4"><b>Registration Name :<xsl:value-of select="$regNum"/></b></font></td> 
</tr>
<tr>
<td><p/></td> 
</tr>
</table>

<xsl:variable name="businessUnits" select="list:get($regcurrRow,1)"/>
<xsl:variable name="numRows" select="list:size($businessUnits)"/>
<xsl:variable name="row_indexes" select="transformutil:getArrayIndicesAsTokenisedString($numRows)"/>
<xsl:for-each select="xalan:tokenize($row_indexes,';')">
<xsl:variable name="rowIdx" select="number(.)"/>
    <xsl:variable name="currRow" select="list:get($businessUnits,$rowIdx)"/>
<xsl:variable name="colIdx" select="number(.)"/>
<xsl:variable name="clearDatas" select="list:get($currRow,7)"/> <!-- 7(clear Items) 8(open Items)-->
<xsl:variable name="clearDataRows" select="list:size($clearDatas)"/>
<xsl:variable name="clearData_row_indexes" select="transformutil:getArrayIndicesAsTokenisedString($clearDataRows)"/>

<xsl:variable name="openDatas" select="list:get($currRow,8)"/> <!-- 8(clear Items) 9(open Items)-->
<xsl:variable name="openDataRows" select="list:size($openDatas)"/>
<xsl:variable name="openData_row_indexes" select="transformutil:getArrayIndicesAsTokenisedString($openDataRows)"/>
<xsl:variable name="isNull" select="list:get($currRow,0)"/>
<xsl:if test="$isNull = 0">
<table border="0" width="100%">
<tr>
<td>&#160;&#160;&#160;&#160;Banlance payable to <xsl:value-of select="list:get($currRow,9)"/>: $<xsl:value-of select="list:get($currRow,6)"/></td> 
</tr>
</table>

<table cellpadding="2" cellspacing="0" border="0" width="100%">
    <tr style="background-color:#D9D9D9;font-weight:bold;">
<td>Date</td>
<td >Document No.</td>
<td >Transaction Type</td>
<td >Amount(S$)</td>
    </tr>
    <tr>
<td colspan="3" style='border-bottom:solid windowtext 1.0pt;font-weight:bold;border-right:solid windowtext 1.0pt;'>Clear Items(<xsl:value-of select="$dateFrom"/> - <xsl:value-of select="$dateTo"/>)</td>
<td style='border-bottom:solid windowtext 1.0pt;font-weight:bold;border-right:solid windowtext 1.0pt;'>&#160;</td>
    </tr>
<xsl:for-each select="xalan:tokenize($clearData_row_indexes,';')">
<xsl:variable name="clearDataRowIdx" select="number(.)"/>
<xsl:variable name="clearDataCurrRow" select="list:get($clearDatas,$clearDataRowIdx)"/>
<xsl:variable name="divclearDataCols" select="list:size($clearDataCurrRow)"/>
<xsl:variable name="clearData_col_indexes" select="transformutil:getArrayIndicesAsTokenisedString($divclearDataCols)"/>
<tr> 
<xsl:for-each select="xalan:tokenize($clearData_col_indexes,';')">
<xsl:variable name="clearDataColIdx" select="number(.)"/>
<xsl:variable name="rowData" select="list:get($clearDataCurrRow,$clearDataColIdx)"/>
<xsl:choose>
<xsl:when test="$rowData = 0">
<td style='border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;'>&#160;</td>
</xsl:when>
<xsl:otherwise>
<td style='border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;'><xsl:value-of select="$rowData"/></td>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</tr>
</xsl:for-each>
<tr>
<td colspan="3" style='border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;font-weight:bold;'>Open Items As At <xsl:value-of select="$dateTo"/></td>
<td style='border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;'>&#160;</td>
    </tr>
<xsl:for-each select="xalan:tokenize($openData_row_indexes,';')">
<xsl:variable name="openDataRowIdx" select="number(.)"/>
<xsl:variable name="openDataCurrRow" select="list:get($openDatas,$openDataRowIdx)"/>
<xsl:variable name="divOpenDataCols" select="list:size($openDataCurrRow)"/>
<xsl:variable name="openData_col_indexes" select="transformutil:getArrayIndicesAsTokenisedString($divOpenDataCols)"/>
<tr> 
<xsl:for-each select="xalan:tokenize($openData_col_indexes,';')">
<xsl:variable name="openDataColIdx" select="number(.)"/>  
<xsl:variable name="rowData" select="list:get($openDataCurrRow,$openDataColIdx)"/>
<xsl:choose>
<xsl:when test="$rowData = 0">
<td style='border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;'>&#160;</td>
</xsl:when>
<xsl:otherwise>
<td style='border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;'><xsl:value-of select="$rowData"/></td>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</tr>
</xsl:for-each>
</table>
<table border="0" width="100%">
<tr>
<td align="left" style="font-family:sans-serif;font-size:11pt;font-weight:bold;" colspan="4">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;Summary of outstanding balance (As at:<xsl:value-of select="$dateTo"/>)</td> 
</tr>
<tr>
<td align="center" colspan="4">
<table cellpadding="2" cellspacing="0" border="0" width="90%" style="border:1.0pt solid black;">
<tr>
<td style='border-bottom:solid windowtext 1.0pt;font-weight:bold;'>Current Outstanding</td>
<td style='border-bottom:solid windowtext 1.0pt;font-weight:bold;'>Overdue 1 - 30 Days</td>
<td style='border-bottom:solid windowtext 1.0pt;font-weight:bold;'>Overdue 31 - 60 Days</td>
<td style='border-bottom:solid windowtext 1.0pt;font-weight:bold;'>Overdue 61 - 90 Days</td>
<td style='border-bottom:solid windowtext 1.0pt;font-weight:bold;'>Overdue > 90 Days</td>
<td style='border-bottom:solid windowtext 1.0pt;font-weight:bold;'>Outstanding Balance</td>
</tr>
<tr>
<td><xsl:value-of select="list:get($currRow,1)"/></td>
<td><xsl:value-of select="list:get($currRow,2)"/></td>
<td><xsl:value-of select="list:get($currRow,3)"/></td>
<td><xsl:value-of select="list:get($currRow,4)"/></td>
<td><xsl:value-of select="list:get($currRow,5)"/></td>
<td><xsl:value-of select="list:get($currRow,6)"/></td>
</tr>
</table>
</td>
</tr>
</table>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>