Документ XSL-FO: вставка атрибута break-before = "page" в конкретный объект fo: table-row

У меня есть документ XSL-FO. В этом документе много вложенных файлов fo: table. Существует внутренняя таблица fo: table с 9 столбцами и множеством строк, в этом примере первая строка для заголовка таблицы и другие строки от 1 до 20 для содержимого. В приведенном ниже примере вы можете увидеть, что в качестве комментария для каждой таблицы FOPTable (fo: table) указан уникальный идентификатор, но этот идентификатор не всегда одинаков для одной и той же таблицы. Он генерируется случайным образом приложением, которое создает этот документ XSL-FO.

Мой вопрос: я хочу найти таблицу, в которой значение заголовка первого столбца установлено на HEADER_COL1 (это значение всегда одно и то же), в этом примере таблица с идентификатором: 997 (помните, что я не могу искать таблицу в соответствии с этим идентификатор, поскольку он изменяется случайным образом каждый раз, когда приложение создает документ XSL-FO). Как только я нашел желаемую таблицу, я хочу ниже:

  1. Как мне вставить атрибут break-before = "page" для конкретного fo: элемент таблицы-строки?
  2. Я хочу получить количество строк в этой внутренней таблице.

Например:

Например, если я хочу вставить этот атрибут для 15-го элемента fo: table-row, как я могу это сделать? Мне нужен параметризованный универсальный метод, который принимает в качестве аргумента число, указывающее fo: table-row, куда поместить этот атрибут.

Я знаю, что могу прочитать документ XSL-FO, используя следующее:

string xmlFile = File.ReadAllText(@"C:\Temp\MyXSLFO.xml");
XmlDocument xdoc = new XmlDocument();
xdoc.LoadXml(xmlFile);

Но после загрузки я понятия не имею, как это сделать.

Примечание: я использую Visual Studio 2008, C# и .NET 3.5.

<?xml version = "1.0" encoding = "ISO-8859-1" ?>
<fo:root xmlns:fo = "http://www.w3.org/1999/XSL/Format">

<fo:page-sequence force-page-count = "no-force" master-reference = "first" initial-page-number = "1">
<fo:flow flow-name = "xsl-region-body">
<!--  begin table FOPTable { id: 987 cur_size: 28.7 prv_size: 20.0 prev: <none> cols: 2 locks: 2 flow:FOPFlow: { type: BodyFlow size:4 region:FOPRegion: { type:3 extent:0.0}} } 
  --> 
<fo:table font-size = "8pt" font-family = "sans-serif" space-before.optimum = "0.05cm" table-layout = "fixed">
</fo:table>
<!--  endof table id FOPTable { id: 987 cur_size: 28.7 prv_size: 20.0 prev: <none> cols: 2 locks: 5 flow:FOPFlow: { type: BodyFlow size:4 region:FOPRegion: { type:3 extent:0.0}} } 
  --> 
<!--  begin table FOPTable { id: 992 cur_size: 28.7 prv_size: 20.0 prev: <none> cols: 2 locks: 2 flow:FOPFlow: { type: BodyFlow size:3 region:FOPRegion: { type:3 extent:0.0}} } 
  --> 
<fo:table font-size = "8pt" font-family = "sans-serif" space-before.optimum = "0.05cm" table-layout = "fixed">
</fo:table>
<!--  endof table id FOPTable { id: 992 cur_size: 28.7 prv_size: 20.0 prev: <none> cols: 2 locks: 4 flow:FOPFlow: { type: BodyFlow size:3 region:FOPRegion: { type:3 extent:0.0}} } 
  --> 
<!--  begin table FOPTable { id: 995 cur_size: 28.7 prv_size: 0.0 prev: <none> cols: 2 locks: 2 flow:FOPFlow: { type: BodyFlow size:2 region:FOPRegion: { type:3 extent:0.0}} } 
  --> 
<fo:table font-size = "8pt" font-family = "sans-serif" space-before.optimum = "0.05cm" table-layout = "fixed">

<!--  begin table FOPTable { id: 996 cur_size: 0.0 prv_size: 20.41 prev: 995 cols: 1 locks: 2 flow:null } 
  --> 
<fo:table font-size = "8pt" font-family = "sans-serif" table-layout = "fixed">

<!--  begin table FOPTable { id: 997 cur_size: 0.0 prv_size: 20.409999999999997 prev: 996 cols: 9 locks: 5 flow:null } 
  --> 
<fo:table font-size = "8pt" font-family = "sans-serif" table-layout = "fixed">
  <fo:table-column column-width = "2.87cm" /> 
  <fo:table-column column-width = "2.87cm" /> 
  <fo:table-column column-width = "2.87cm" /> 
  <fo:table-column column-width = "4.709999999999996cm" /> 
  <fo:table-column column-width = "2.87cm" /> 
  <fo:table-column column-width = "3.9cm" /> 
  <fo:table-column column-width = "2.87cm" /> 
  <fo:table-column column-width = "2.87cm" /> 
  <fo:table-column column-width = "2.87cm" /> 
<fo:table-header>
<fo:table-row>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
  <fo:block>HEADER_COL1</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
  <fo:block>HEADER_COL2</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
  <fo:block>HEADER_COL3</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
  <fo:block>HEADER_COL4</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
  <fo:block>HEADER_COL5</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
  <fo:block>HEADER_COL6</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
  <fo:block>HEADER_COL7</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
  <fo:block>HEADER_COL8</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
  <fo:block>HEADER_COL9</fo:block> 
  </fo:table-cell>
  </fo:table-row>
  </fo:table-header>
<fo:table-body>
<fo:table-row>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW1_COL1_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW1_COL2_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW1_COL3_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW1_COL4_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW1_COL5_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW1_COL6_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-right = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block text-align = "end">ROW1_COL7_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW1_COL8_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW1_COL9_VALUE</fo:block> 
  </fo:table-cell>
  </fo:table-row>


<!-- A LOT OF ROWS HERE -->

<!-- I want to insert a break-before attribute as below -->
<fo:table-row break-before = "page">
<!-- columns here -->
</fo:table-row>

<!-- MORE ROWS HERE -->

<!-- LAST ROW NEXT -->
<fo:table-row>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW20_COL1_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW20_COL2_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW20_COL3_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW20_COL4_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW20_COL5_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW20_COL6_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-right = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block text-align = "end">ROW20_COL7_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW20_COL8_VALUE</fo:block> 
  </fo:table-cell>
<fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" font-family = "sans-serif" font-size = "7pt">
  <fo:block>ROW20_COL9_VALUE</fo:block> 
  </fo:table-cell>
  </fo:table-row>
  </fo:table-body>
  </fo:table>
<!--  endof table id FOPTable { id: 997 cur_size: 28.7 prv_size: 20.409999999999997 prev: 996 cols: 9 locks: 6 flow:null } 
  --> 
</fo:table>

</fo:table>

</fo:flow>
</fo:page-sequence>
</fo:root>

Я бы использовал XSLT. Поскольку вы используете VS2008, см. w3.org/TR/1999/REC-xslt-19991116. Вы можете создать шаблон для своего контекста, который добавляет атрибут для свойства, и создать шаблон удостоверения, который копирует остальную часть документа в результирующее дерево.

Tony Graham 12.11.2018 22:58

Вложить таблицы на 3 уровня кажется слишком сложным. Это действительно необходимо?

Hobbes 15.11.2018 09:39
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
368
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Взяв ваши данные и удалив все ячейки и другое неважное содержимое, можно просто применить идентификационный XSL к XSL FO и изменить только целевую строку.

начиная с этого XML:

<fo:root xmlns:fo = "http://www.w3.org/1999/XSL/Format">

    <fo:page-sequence force-page-count = "no-force" master-reference = "first" initial-page-number = "1">
        <fo:flow flow-name = "xsl-region-body">
            <fo:table font-size = "8pt" font-family = "sans-serif" space-before.optimum = "0.05cm" table-layout = "fixed">
            </fo:table>
            <fo:table font-size = "8pt" font-family = "sans-serif" space-before.optimum = "0.05cm" table-layout = "fixed">
            </fo:table>
            <fo:table font-size = "8pt" font-family = "sans-serif" space-before.optimum = "0.05cm" table-layout = "fixed">
                <fo:table font-size = "8pt" font-family = "sans-serif" table-layout = "fixed">
                    <fo:table font-size = "8pt" font-family = "sans-serif" table-layout = "fixed">
                        <fo:table-column column-width = "2.87cm" /> 
                        <fo:table-column column-width = "2.87cm" /> 
                        <fo:table-column column-width = "2.87cm" /> 
                        <fo:table-column column-width = "4.709999999999996cm" /> 
                        <fo:table-column column-width = "2.87cm" /> 
                        <fo:table-column column-width = "3.9cm" /> 
                        <fo:table-column column-width = "2.87cm" /> 
                        <fo:table-column column-width = "2.87cm" /> 
                        <fo:table-column column-width = "2.87cm" /> 
                        <fo:table-header>
                            <fo:table-row>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL1</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL2</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL3</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL4</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL5</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL6</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL7</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL8</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL9</fo:block> 
                                </fo:table-cell>
                            </fo:table-row>
                        </fo:table-header>
                        <fo:table-body>
                            <fo:table-row/>
                            <fo:table-row/>
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                        </fo:table-body>
                    </fo:table>
                </fo:table>

            </fo:table>

        </fo:flow>
    </fo:page-sequence>
</fo:root>

И применяя этот XSL, который выводит все как есть, за исключением шаблона, который вставляет разрыв страницы в 12-ю строку целевой таблицы:

<xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
    xmlns:fo = "http://www.w3.org/1999/XSL/Format"
    version = "2.0">
    <xsl:param name = "breakrow" select = "12"/>

    <xsl:template match = "fo:table-row">
        <xsl:variable name = "rowcnt" select = "count(preceding-sibling::fo:table-row)"/>
        <xsl:choose>
            <xsl:when test = "parent::fo:table-header">
                <fo:table-row>
                    <xsl:apply-templates/>
                </fo:table-row>
            </xsl:when>
            <xsl:when test = "$rowcnt = $breakrow and ancestor::fo:table[1]/fo:table-header/fo:table-row[1]/fo:table-cell[1]/fo:block/text() = 'HEADER_COL1'">
                <fo:table-row break-before = "page"/>
            </xsl:when>
            <xsl:otherwise>
                <fo:table-row/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    <xsl:template match = "@* | node()">
        <xsl:copy>
            <xsl:apply-templates select = "@*"/>
            <xsl:apply-templates select = "node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Результат такой:

<fo:root xmlns:fo = "http://www.w3.org/1999/XSL/Format">

    <fo:page-sequence force-page-count = "no-force" master-reference = "first" initial-page-number = "1">
        <fo:flow flow-name = "xsl-region-body">
            <fo:table font-size = "8pt" font-family = "sans-serif" space-before.optimum = "0.05cm" table-layout = "fixed">
            </fo:table>
            <fo:table font-size = "8pt" font-family = "sans-serif" space-before.optimum = "0.05cm" table-layout = "fixed">
            </fo:table>
            <fo:table font-size = "8pt" font-family = "sans-serif" space-before.optimum = "0.05cm" table-layout = "fixed">
                <fo:table font-size = "8pt" font-family = "sans-serif" table-layout = "fixed">
                    <fo:table font-size = "8pt" font-family = "sans-serif" table-layout = "fixed">
                        <fo:table-column column-width = "2.87cm"/> 
                        <fo:table-column column-width = "2.87cm"/> 
                        <fo:table-column column-width = "2.87cm"/> 
                        <fo:table-column column-width = "4.709999999999996cm"/> 
                        <fo:table-column column-width = "2.87cm"/> 
                        <fo:table-column column-width = "3.9cm"/> 
                        <fo:table-column column-width = "2.87cm"/> 
                        <fo:table-column column-width = "2.87cm"/> 
                        <fo:table-column column-width = "2.87cm"/> 
                        <fo:table-header>
                            <fo:table-row>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL1</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL2</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL3</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL4</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL5</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL6</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL7</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL8</fo:block> 
                                </fo:table-cell>
                                <fo:table-cell padding-top = "2.0pt" padding-left = "2.0pt" border-style = "solid" border-width = "0.5pt" border-color = "#000000" background-color = "#D6DEE7" font-family = "sans-serif">
                                    <fo:block>HEADER_COL9</fo:block> 
                                </fo:table-cell>
                            </fo:table-row>
                        </fo:table-header>
                        <fo:table-body>
                            <fo:table-row/>
                            <fo:table-row/>
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row break-before = "page"/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                            <fo:table-row/>                            
                        </fo:table-body>
                    </fo:table>
                </fo:table>

            </fo:table>

        </fo:flow>
    </fo:page-sequence>
</fo:root>

Я передал 12 в качестве параметра и предположил, что у вас есть только одно место ... 12-я строка. Вы, конечно, можете использовать "мод" и делать каждый 12-й ряд или что хотите.

Например:

 <xsl:when test = "$rowcnt mod $breakrow = $breakrow - 1 and ancestor::fo:table[1]/fo:table-header/fo:table-row[1]/fo:table-cell[1]/fo:block/text() = 'HEADER_COL1'">

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

Отличный подход, из любопытства могу я применить еще <xsl: when>? например: если $ rowcnt> 10 и $ rowcnt <20, тогда примените $ rowcnt = $ breakrow else, если $ rowcnt> = 20 и $ rowcnt <50, затем примените $ rowcnt = $ AnotherBreakrow иначе примените $ rowcnt mod $ breakrow = $ breakrow - 1

Ralph 18.11.2018 17:33

Конечно, но обычно можно делать то, что я написал последним, используя мод, который вставляет разрыв каждые «x» строк.

Kevin Brown 18.11.2018 18:18

Если ответ помог, подумайте о том, чтобы правильно поставить вопрос.

Kevin Brown 18.11.2018 18:21

Ответ помог, но не могли бы вы указать мне, как делать то, что объяснялось в моем предыдущем комментарии?

Ralph 19.11.2018 00:11

Другие вопросы по теме