2013-04-17 35 views
0

我創建了一個包含25列的fo:表格。 當我轉換爲PDF時,表格對於頁面大小(A4)來說太寬,我怎麼能按列分割表格,例如,我想在另一頁上寫入每5列?XSL-FO表格每隔5列破壞

由於

回答

0

我的解決方案是創建兩個獨立的表。 然後我創建了兩個xsl模板塊,以區分我使用模式函數的第二個塊的第一個塊。 像這樣:

Table 
.... 
<xsl:apply-templates select="content[@teste='1']" mode="first" /> 
.... 
<xsl:apply-templates select="content[@teste='1']" mode="second" /> 
.... 
XSL Templates block 
.... 
<xsl:template match="content[@teste='1']" mode="first"> 
.... 
<xsl:template match="content[@teste='1']" mode="second"> 
.... 
0

我已具有9列像表的一個例子:

<Table> 
    <thead> 
    <tr> 
     <td>Head1</td> 
     <td>Head2</td> 
     <td>Head3</td> 
     <td>Head4</td> 
     <td>Head5</td> 
     <td>Head6</td> 
     <td>Head7</td> 
     <td>Head8</td> 
     <td>Head9</td> 
    </tr> 
    </thead> 
    <tbody> 
    <tr> 
     <td>1</td> 
     <td>2</td> 
     <td>3</td> 
     <td>4</td> 
     <td>5</td> 
     <td>6</td> 
     <td>7</td> 
     <td>8</td> 
     <td>9</td> 
    </tr> 
    <tr> 
     <td>2-1</td> 
     <td>2-2</td> 
     <td>2-3</td> 
     <td>2-4</td> 
     <td>2-5</td> 
     <td>2-6</td> 
     <td>2-7</td> 
     <td>2-8</td> 
     <td>2-9</td> 
    </tr> 
    <tr> 
     <td>3-1</td> 
     <td>3-2</td> 
     <td>3-3</td> 
     <td>3-4</td> 
     <td>3-5</td> 
     <td>3-6</td> 
     <td>3-7</td> 
     <td>3-8</td> 
     <td>3-9</td> 
    </tr> 
    </tbody> 
</Table> 

現在,我已經創建XSLT通過< XSL傳遞整數值將其分成多表:PARAM NAME = 「得到columnnumber」/ > PARAM:

<?xml version='1.0' ?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

    <xsl:output indent="yes"/> 

    <xsl:param name="columnNumber" select="xs:integer(4)"/> 

    <xsl:template match="Table"> 
    <xsl:param name="countColumn" select="count(//tbody/tr[1]/td)"/> 
    <xsl:choose> 
     <xsl:when test="$countColumn gt $columnNumber"> 
     <xsl:call-template name="divideTable"> 
      <xsl:with-param name="tableToGenerate" select="ceiling($countColumn div $columnNumber)"/> 
      <xsl:with-param name="orginialTable" select="self::*"/> 
     </xsl:call-template> 
     </xsl:when> 
     <xsl:otherwise> 
     <xsl:copy> 
      <xsl:copy-of select="*"/> 
     </xsl:copy> 
     </xsl:otherwise> 
    </xsl:choose> 
    </xsl:template> 

    <xsl:template name="divideTable"> 
    <xsl:param name="tableToGenerate"/> 
    <xsl:param name="orginialTable"/> 
    <xsl:param name="start" select="xs:integer(1)"/> 
    <xsl:param name="end" select="$columnNumber"/> 
    <xsl:param name="counter" select="xs:integer(1)"/> 
    <xsl:choose> 
     <xsl:when test="$counter le $tableToGenerate"> 
     <Table> 
      <thead> 
      <xsl:copy-of 
       select="$orginialTable/thead/tr/td[position() le $end and position() ge $start]"/> 
      </thead> 
      <tbody> 
      <xsl:for-each select="$orginialTable/tbody/tr"> 
       <tr> 
       <xsl:copy-of select="td[position() le $end and position() ge $start]"/> 
       </tr> 
      </xsl:for-each> 
      </tbody> 
     </Table> 
     <xsl:call-template name="divideTable"> 
      <xsl:with-param name="start" select="xs:integer(($columnNumber * $counter) + 1)"/> 
      <xsl:with-param name="end" select="xs:integer(($columnNumber * $counter) + $columnNumber)"/> 
      <xsl:with-param name="tableToGenerate" select="$tableToGenerate"/> 
      <xsl:with-param name="orginialTable" select="$orginialTable"/> 
      <xsl:with-param name="counter" select="xs:integer($counter + 1)"/> 
     </xsl:call-template> 
     </xsl:when> 
    </xsl:choose> 
    </xsl:template> 
</xsl:stylesheet> 

它給我輸出繼電器:

<?xml version="1.0" encoding="UTF-8"?> 
<Table xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <thead> 
     <td>Head1</td> 
     <td>Head2</td> 
     <td>Head3</td> 
     <td>Head4</td> 
    </thead> 
    <tbody> 
     <tr> 
     <td>1</td> 
     <td>2</td> 
     <td>3</td> 
     <td>4</td> 
     </tr> 
     <tr> 
     <td>2-1</td> 
     <td>2-2</td> 
     <td>2-3</td> 
     <td>2-4</td> 
     </tr> 
     <tr> 
     <td>3-1</td> 
     <td>3-2</td> 
     <td>3-3</td> 
     <td>3-4</td> 
     </tr> 
    </tbody> 
</Table> 
<Table xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <thead> 
     <td>Head5</td> 
     <td>Head6</td> 
     <td>Head7</td> 
     <td>Head8</td> 
    </thead> 
    <tbody> 
     <tr> 
     <td>5</td> 
     <td>6</td> 
     <td>7</td> 
     <td>8</td> 
     </tr> 
     <tr> 
     <td>2-5</td> 
     <td>2-6</td> 
     <td>2-7</td> 
     <td>2-8</td> 
     </tr> 
     <tr> 
     <td>3-5</td> 
     <td>3-6</td> 
     <td>3-7</td> 
     <td>3-8</td> 
     </tr> 
    </tbody> 
</Table> 
<Table xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <thead> 
     <td>Head9</td> 
    </thead> 
    <tbody> 
     <tr> 
     <td>9</td> 
     </tr> 
     <tr> 
     <td>2-9</td> 
     </tr> 
     <tr> 
     <td>3-9</td> 
     </tr> 
    </tbody> 
</Table> 

請對此有外觀和檢查這個例子有助於

+0

如果你對此感到滿意,請在答案 –

+0

您的解決方案不工作,我無法從FOP引擎找出最錯誤的。不管怎麼說,還是要謝謝你! – luso1