2016-01-13 6 views
0

Мне нужно создать таблицу, вызвав шаблон в XSL: FO . Я надеялся вызвать шаблонную функциюXSL fo Создать таблицу динамически

Таблица шаблона

<xsl:template name="getTable"> 

Создать таблицу с помощью ВОК: табличные теги и вызовите шаблон столбца и не передавать параметр для не столбцов

Создайте тег fo: body и вызовите шаблон строки и передайте номер строки в качестве параметра

</xsl:template> 

Столбец-шаблон, например.

<xsl:template name="getcolumn"> 
</xsl:template> 
Row template 

Вызов шаблона Cell и передать не параметра Cells

</xsl:template> 

шаблон Cell

<xsl:template name="getCell"> 

Вызовите другой шаблон

</xsl:template> 

У меня есть, как далеко создаю таблицу в XSL: FO. Я могу создать таблицу в XSL: fo по таблице ниже, но я ищу для создания таблицы, поскольку мне нужно многократно ее реплицировать в зависимости от ввода.

<fo:table xsl:use-attribute-sets="Table" > 
           <fo:table-column /> 
           <fo:table-column /> 
           <fo:table-body> 
            <fo:table-row > 
            <fo:table-cell > 


             <fo:block xsl:use-attribute-sets="JobTaskHeaderBackground"> 

             School1 
             </fo:block> 
            </fo:table-cell> 
            <fo:table-cell> 
            <fo:block> 
<xsl:call-template name="Required"> 
             <xsl:with-param name="ElementToCheck" select='m:SchoolName' /> 
</xsl:call-template> 
            </fo:block> 
           </fo:table-cell> 
           </fo:table-row> 
           </fo:table-body> 
           </fo:table> 
+0

До сих пор неясно, как вы собираетесь заполнять несколько таблиц - если вы не хотите, чтобы у них были идентичные данные. –

+0

В этих точках XSLT не разрешены 'xsl: with-param'. –

+0

Тони, ты прав, это была опечатка, которую я заключил в теги шаблона вызова. – user1339913

ответ

0

мне нужно повторить это много раз в зависимости от параметра например (NoOfTables) параметров = 2

Вы можете иметь шаблон рекурсивно вызывать себя, например:

<xsl:template name="generate-tables"> 
    <xsl:param name="number-of-tables"/> 
    <xsl:param name="number-of-rows"/> 
    <xsl:param name="number-of-columns"/> 

    <xsl:if test="$number-of-tables > 1"> 

    <!-- code to generate a table --> 

    <!-- recursive call --> 
    <xsl:call-template name="generate-tables"> 
     <xsl:call-template name="repeat"> 
      <xsl:with-param name="number-of-tables" select="$number-of-tables - 1"/> 
      <xsl:with-param name="number-of-rows" select="$number-of-rows"/> 
      <xsl:with-param name="number-of-columns" select="$number-of-columns"/> 
     </xsl:call-template> 
    </xsl:if> 
</xsl:template> 

Предполагается, что все сгенерированные таблицы должны иметь одинаковое количество строк и столбцов.

+0

Спасибо, Майкл за ответ, но как передать параметр, чтобы динамически получить значение «m: SchoolName» (внутри шаблона ячейки). Название школы получено из другого шаблона ** Обязательно **. – user1339913

+0

@ user1339913 Боюсь, я понятия не имею, к чему это относится. Вам нужно отредактировать свой вопрос и предоставить [mcve]. –

Смежные вопросы