diff options
author | Vincent Hennebert <vhennebert@apache.org> | 2008-01-29 19:12:58 +0000 |
---|---|---|
committer | Vincent Hennebert <vhennebert@apache.org> | 2008-01-29 19:12:58 +0000 |
commit | ff01d55a3eb48c571cf0f949dc4ba0962c02d55e (patch) | |
tree | dd83a2ce78faf7913ada174fcc36444cf6393351 /test/layoutengine/standard-testcases | |
parent | 87263f843c3e0eb1cc5f55eab8e213f3905165a3 (diff) | |
download | xmlgraphics-fop-ff01d55a3eb48c571cf0f949dc4ba0962c02d55e.tar.gz xmlgraphics-fop-ff01d55a3eb48c571cf0f949dc4ba0962c02d55e.zip |
Replaced testcases for forced break on table-row with more complete ones. Tests failing because of bug #44320 have been commented out and will need to be re-enabled once the bug is fixed
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@616485 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test/layoutengine/standard-testcases')
7 files changed, 3412 insertions, 222 deletions
diff --git a/test/layoutengine/standard-testcases/table-row_break-after.xml b/test/layoutengine/standard-testcases/table-row_break-after.xml new file mode 100644 index 000000000..3533f0175 --- /dev/null +++ b/test/layoutengine/standard-testcases/table-row_break-after.xml @@ -0,0 +1,1018 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- $Id$ --> +<testcase> + <info> + <p> + This test checks that break-after set on table-rows work correctly in various conditions: + when headers/footers shall be repeated at page breaks or not, in the separate or collapsing + border model, etc. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="page" page-height="10cm" page-width="15cm" margin="1cm"> + <fo:region-body background-color="#F0F0F0"/> + </fo:simple-page-master> + </fo:layout-master-set> + + <!-- 1. separate border model, discarded borders, no header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>1. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 2. separate border model, discarded borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>2. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 3. separate border model, retained borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>3. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 4. separate border model, discarded borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>4. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 5. separate border model, retained borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>5. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 6. collapsing border model, discarded borders, no header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>6. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 7. collapsing border model, discarded borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>7. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 8. collapsing border model, discarded borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>8. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + </fo:root> + </fo> + <checks> + + <!-- 1. separate border model, discarded borders, no header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[1]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='1']//flow/block)"/> + <eval expected="1. Before the table" xpath="//pageViewport[@nr='1']//flow/block[1]//text"/> + <eval expected="48000" xpath="//pageViewport[@nr='1']//flow/block[2]/@bpd"/> + <eval expected="50000" xpath="//pageViewport[@nr='1']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='1']//flow/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='2']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='2']//flow/block[2]//text"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/@bpd"/> + <eval expected="26000" xpath="//pageViewport[@nr='2']//flow/block[1]/@bpda"/> + <eval expected="" xpath="//pageViewport[@nr='2']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@border-after"/> + + <!-- 2. separate border model, discarded borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[2]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='3']//flow/block)"/> + <eval expected="2. Before the table" xpath="//pageViewport[@nr='3']//flow/block[1]//text"/> + <eval expected="76000" xpath="//pageViewport[@nr='3']//flow/block[2]/@bpd"/> + <eval expected="78000" xpath="//pageViewport[@nr='3']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='3']//flow/block[2]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[7]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[7]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[7]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[7]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[8]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[8]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[8]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[8]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='4']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='4']//flow/block[2]//text"/> + <eval expected="52000" xpath="//pageViewport[@nr='4']//flow/block[1]/@bpd"/> + <eval expected="54000" xpath="//pageViewport[@nr='4']//flow/block[1]/@bpda"/> + <eval expected="" xpath="//pageViewport[@nr='4']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@border-after"/> + + <!-- 3. separate border model, retained borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[3]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='5']//flow/block)"/> + <eval expected="3. Before the table" xpath="//pageViewport[@nr='5']//flow/block[1]//text"/> + <eval expected="76000" xpath="//pageViewport[@nr='5']//flow/block[2]/@bpd"/> + <eval expected="80000" xpath="//pageViewport[@nr='5']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[7]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[7]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[7]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[7]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[8]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[8]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[8]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[8]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='6']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='6']//flow/block[2]//text"/> + <eval expected="52000" xpath="//pageViewport[@nr='6']//flow/block[1]/@bpd"/> + <eval expected="56000" xpath="//pageViewport[@nr='6']//flow/block[1]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@border-after"/> + + <!-- 4. separate border model, discarded borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[4]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='7']//flow/block)"/> + <eval expected="4. Before the table" xpath="//pageViewport[@nr='7']//flow/block[1]//text"/> + <eval expected="62000" xpath="//pageViewport[@nr='7']//flow/block[2]/@bpd"/> + <eval expected="64000" xpath="//pageViewport[@nr='7']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='7']//flow/block[2]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='8']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='8']//flow/block[2]//text"/> + <eval expected="38000" xpath="//pageViewport[@nr='8']//flow/block[1]/@bpd"/> + <eval expected="40000" xpath="//pageViewport[@nr='8']//flow/block[1]/@bpda"/> + <eval expected="" xpath="//pageViewport[@nr='8']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@border-after"/> + + <!-- 5. separate border model, retained borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[5]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='9']//flow/block)"/> + <eval expected="5. Before the table" xpath="//pageViewport[@nr='9']//flow/block[1]//text"/> + <eval expected="62000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpd"/> + <eval expected="66000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='10']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='10']//flow/block[2]//text"/> + <eval expected="38000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpd"/> + <eval expected="42000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@border-after"/> + + <!-- 6. collapsing border model, discarded borders, no header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[6]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='11']//flow/block)"/> + <eval expected="6. Before the table" xpath="//pageViewport[@nr='11']//flow/block[1]//text"/> + <eval expected="44000" xpath="//pageViewport[@nr='11']//flow/block[2]/@bpd"/> + <eval expected="44000" xpath="//pageViewport[@nr='11']//flow/block[2]/@bpda"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='12']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='12']//flow/block[2]//text"/> + <eval expected="22000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpd"/> + <eval expected="22000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpda"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@border-after"/> + + <!-- 7. collapsing border model, discarded borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[7]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='13']//flow/block)"/> + <eval expected="7. Before the table" xpath="//pageViewport[@nr='13']//flow/block[1]//text"/> + <eval expected="68000" xpath="//pageViewport[@nr='13']//flow/block[2]/@bpd"/> + <eval expected="68000" xpath="//pageViewport[@nr='13']//flow/block[2]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[7]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[7]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[7]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[7]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[8]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[8]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[8]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[8]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='14']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='14']//flow/block[2]//text"/> + <eval expected="46000" xpath="//pageViewport[@nr='14']//flow/block[1]/@bpd"/> + <eval expected="46000" xpath="//pageViewport[@nr='14']//flow/block[1]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[5]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[5]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[6]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[6]/@border-after"/> + + <!-- 8. collapsing border model, discarded borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[8]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='15']//flow/block)"/> + <eval expected="8. Before the table" xpath="//pageViewport[@nr='15']//flow/block[1]//text"/> + <eval expected="56000" xpath="//pageViewport[@nr='15']//flow/block[2]/@bpd"/> + <eval expected="56000" xpath="//pageViewport[@nr='15']//flow/block[2]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-outer)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-outer)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='16']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='16']//flow/block[2]//text"/> + <eval expected="34000" xpath="//pageViewport[@nr='16']//flow/block[1]/@bpd"/> + <eval expected="34000" xpath="//pageViewport[@nr='16']//flow/block[1]/@bpda"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[3]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[3]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[4]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[4]/@border-after"/> + + </checks> +</testcase> diff --git a/test/layoutengine/standard-testcases/table-row_break-after_last-row-footer.xml b/test/layoutengine/standard-testcases/table-row_break-after_last-row-footer.xml deleted file mode 100644 index 41e7369df..000000000 --- a/test/layoutengine/standard-testcases/table-row_break-after_last-row-footer.xml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<!-- $Id$ --> -<testcase> - <info> - <p> - This test checks that break-after on the last row of a table with footers works properly. - </p> - </info> - <fo> - <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> - <fo:layout-master-set> - <fo:simple-page-master master-name="page" page-height="10cm" page-width="15cm" - margin-top="1cm" margin-bottom="0" margin-left="1cm" margin-right="1cm"> - <fo:region-body/> - </fo:simple-page-master> - </fo:layout-master-set> - <fo:page-sequence master-reference="page"> - <fo:flow flow-name="xsl-region-body"> - <fo:block>Before the table</fo:block> - <fo:table width="100%" table-layout="fixed" border-collapse="collapse" border="4pt solid black"> - <fo:table-column number-columns-repeated="2" column-width="proportional-column-width(1)"/> - <fo:table-footer> - <fo:table-row> - <fo:table-cell border="2pt solid blue"> - <fo:block>Footer 1</fo:block> - </fo:table-cell> - <fo:table-cell border="2pt solid blue"> - <fo:block>Footer 2</fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-footer> - <fo:table-body> - <fo:table-row break-after="page"> - <fo:table-cell border="2pt solid black"> - <fo:block>Cell 1.1</fo:block> - </fo:table-cell> - <fo:table-cell border="2pt solid black"> - <fo:block>Cell 1.2</fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-body> - </fo:table> - <fo:block>After the table</fo:block> - </fo:flow> - </fo:page-sequence> - </fo:root> - </fo> - <checks> - <!-- Two pages --> - <eval expected="2" xpath="count(//pageViewport)"/> - <!-- Line "Before the table" + table on the first page --> - <eval expected="2" xpath="count(//pageViewport[@nr=1]//flow/block)"/> - <eval expected="Before the table" xpath="//pageViewport[@nr=1]//flow/block[1]/lineArea/text[1]"/> - <!-- Line "After the table" on the second page --> - <eval expected="1" xpath="count(//pageViewport[@nr=2]//flow/block)"/> - <eval expected="After the table" xpath="//pageViewport[@nr=2]//flow/block[1]/lineArea/text[1]"/> - </checks> -</testcase> diff --git a/test/layoutengine/standard-testcases/table-row_break-after_last-row-header.xml b/test/layoutengine/standard-testcases/table-row_break-after_last-row-header.xml deleted file mode 100644 index b23ec7292..000000000 --- a/test/layoutengine/standard-testcases/table-row_break-after_last-row-header.xml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<!-- $Id$ --> -<testcase> - <info> - <p> - This test checks that break-after on the last row of a table with headers works properly. - </p> - </info> - <fo> - <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> - <fo:layout-master-set> - <fo:simple-page-master master-name="page" page-height="10cm" page-width="15cm" - margin-top="1cm" margin-bottom="0" margin-left="1cm" margin-right="1cm"> - <fo:region-body/> - </fo:simple-page-master> - </fo:layout-master-set> - <fo:page-sequence master-reference="page"> - <fo:flow flow-name="xsl-region-body"> - <fo:block>Before the table</fo:block> - <fo:table width="100%" table-layout="fixed" border-collapse="collapse" border="4pt solid black"> - <fo:table-column number-columns-repeated="2" column-width="proportional-column-width(1)"/> - <fo:table-header> - <fo:table-row> - <fo:table-cell border="2pt solid blue"> - <fo:block>Header 1</fo:block> - </fo:table-cell> - <fo:table-cell border="2pt solid blue"> - <fo:block>Header 2</fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-header> - <fo:table-body> - <fo:table-row break-after="page"> - <fo:table-cell border="2pt solid black"> - <fo:block>Cell 1.1</fo:block> - </fo:table-cell> - <fo:table-cell border="2pt solid black"> - <fo:block>Cell 1.2</fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-body> - </fo:table> - <fo:block>After the table</fo:block> - </fo:flow> - </fo:page-sequence> - </fo:root> - </fo> - <checks> - <!-- Two pages --> - <eval expected="2" xpath="count(//pageViewport)"/> - <!-- Line "Before the table" + table on the first page --> - <eval expected="2" xpath="count(//pageViewport[@nr=1]//flow/block)"/> - <eval expected="Before the table" xpath="//pageViewport[@nr=1]//flow/block[1]/lineArea/text[1]"/> - <!-- Line "After the table" on the second page --> - <eval expected="1" xpath="count(//pageViewport[@nr=2]//flow/block)"/> - <eval expected="After the table" xpath="//pageViewport[@nr=2]//flow/block[1]/lineArea/text[1]"/> - </checks> -</testcase> diff --git a/test/layoutengine/standard-testcases/table-row_break-after_last-row.xml b/test/layoutengine/standard-testcases/table-row_break-after_last-row.xml new file mode 100644 index 000000000..6911a6946 --- /dev/null +++ b/test/layoutengine/standard-testcases/table-row_break-after_last-row.xml @@ -0,0 +1,688 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- $Id$ --> +<testcase> + <info> + <p> + This test checks that break-after set on table-rows work correctly in various conditions: + when headers/footers shall be repeated at page breaks or not, in the separate or collapsing + border model, etc. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="page" page-height="10cm" page-width="15cm" margin="1cm"> + <fo:region-body background-color="#F0F0F0"/> + </fo:simple-page-master> + </fo:layout-master-set> + + <!-- 1. separate border model, discarded borders, no header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>1. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 2. separate border model, discarded borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>2. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 3. separate border model, discarded borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>3. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 4. collapsing border model, discarded borders, no header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>4. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 5. collapsing border model, discarded borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>5. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 6. collapsing border model, discarded borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>6. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange" break-after="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + </fo:root> + </fo> + <checks> + + <!-- 1. separate border model, discarded borders, no header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[1]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='1']//flow/block)"/> + <eval expected="1. Before the table" xpath="//pageViewport[@nr='1']//flow/block[1]//text"/> + <eval expected="72000" xpath="//pageViewport[@nr='1']//flow/block[2]/@bpd"/> + <!--eval expected="76000" xpath="//pageViewport[@nr='1']//flow/block[2]/@bpda"/--> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/@border-before"/> + <!--eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/@border-after"/--> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[6]/@border-after"/> + <!-- page 2 --> + <eval expected="1" xpath="count(//pageViewport[@nr='2']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='2']//flow/block[1]//text"/> + + <!-- 2. separate border model, discarded borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[2]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='3']//flow/block)"/> + <eval expected="2. Before the table" xpath="//pageViewport[@nr='3']//flow/block[1]//text"/> + <eval expected="100000" xpath="//pageViewport[@nr='3']//flow/block[2]/@bpd"/> + <!--eval expected="104000" xpath="//pageViewport[@nr='3']//flow/block[2]/@bpda"/--> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/@border-before"/> + <!--eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/@border-after"/--> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[7]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[7]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[7]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[7]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[8]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[8]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[8]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[8]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[9]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[9]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[9]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[9]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[10]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[10]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[10]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[10]/@border-after"/> + <!-- page 2 --> + <eval expected="1" xpath="count(//pageViewport[@nr='4']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='4']//flow/block[1]//text"/> + + <!-- 3. separate border model, discarded borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[3]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='5']//flow/block)"/> + <eval expected="3. Before the table" xpath="//pageViewport[@nr='5']//flow/block[1]//text"/> + <eval expected="100000" xpath="//pageViewport[@nr='5']//flow/block[2]/@bpd"/> + <!--eval expected="104000" xpath="//pageViewport[@nr='5']//flow/block[2]/@bpda"/--> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/@border-before"/> + <!--eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/@border-after"/--> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[7]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[7]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[7]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[7]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[8]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[8]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[8]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[8]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[9]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[9]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[9]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[9]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[10]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[10]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[10]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[10]/@border-after"/> + <!-- page 2 --> + <eval expected="1" xpath="count(//pageViewport[@nr='6']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='6']//flow/block[1]//text"/> + + <!-- 4. collapsing border model, discarded borders, no header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[4]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='7']//flow/block)"/> + <eval expected="4. Before the table" xpath="//pageViewport[@nr='7']//flow/block[1]//text"/> + <eval expected="66000" xpath="//pageViewport[@nr='7']//flow/block[2]/@bpd"/> + <eval expected="66000" xpath="//pageViewport[@nr='7']//flow/block[2]/@bpda"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@border-after"/> + <!-- page 2 --> + <eval expected="1" xpath="count(//pageViewport[@nr='8']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='8']//flow/block[1]//text"/> + + <!-- 5. collapsing border model, discarded borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[5]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='9']//flow/block)"/> + <eval expected="5. Before the table" xpath="//pageViewport[@nr='9']//flow/block[1]//text"/> + <eval expected="90000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpd"/> + <eval expected="90000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[7]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[7]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[7]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[7]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[8]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[8]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[8]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[8]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[9]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[9]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[9]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[9]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[10]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[10]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[10]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[10]/@border-after"/> + <!-- page 2 --> + <eval expected="1" xpath="count(//pageViewport[@nr='10']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='10']//flow/block[1]//text"/> + + <!-- 6. collapsing border model, discarded borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[6]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='11']//flow/block)"/> + <eval expected="6. Before the table" xpath="//pageViewport[@nr='11']//flow/block[1]//text"/> + <eval expected="90000" xpath="//pageViewport[@nr='11']//flow/block[2]/@bpd"/> + <eval expected="90000" xpath="//pageViewport[@nr='11']//flow/block[2]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[6]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[7]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[7]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[7]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[7]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[8]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[8]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[8]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[8]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[9]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[9]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[9]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[9]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[10]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[10]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[10]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[10]/@border-after"/> + <!-- page 2 --> + <eval expected="1" xpath="count(//pageViewport[@nr='12']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='12']//flow/block[1]//text"/> + + </checks> +</testcase> diff --git a/test/layoutengine/standard-testcases/table-row_break-before.xml b/test/layoutengine/standard-testcases/table-row_break-before.xml new file mode 100644 index 000000000..6bb05810a --- /dev/null +++ b/test/layoutengine/standard-testcases/table-row_break-before.xml @@ -0,0 +1,1018 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- $Id$ --> +<testcase> + <info> + <p> + This test checks that break-before set on table-rows work correctly in various conditions: + when headers/footers shall be repeated at page breaks or not, in the separate or collapsing + border model, etc. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="page" page-height="10cm" page-width="15cm" margin="1cm"> + <fo:region-body background-color="#F0F0F0"/> + </fo:simple-page-master> + </fo:layout-master-set> + + <!-- 1. separate border model, discarded borders, no header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>1. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 2. separate border model, discarded borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>2. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 3. separate border model, retained borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>3. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 4. separate border model, discarded borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>4. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 5. separate border model, retained borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>5. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 6. collapsing border model, discarded borders, no header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>6. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 7. collapsing border model, discarded borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>7. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 8. collapsing border model, discarded borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>8. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + </fo:root> + </fo> + <checks> + + <!-- 1. separate border model, discarded borders, no header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[1]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='1']//flow/block)"/> + <eval expected="1. Before the table" xpath="//pageViewport[@nr='1']//flow/block[1]//text"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/@bpd"/> + <eval expected="26000" xpath="//pageViewport[@nr='1']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='1']//flow/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='2']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='2']//flow/block[2]//text"/> + <eval expected="48000" xpath="//pageViewport[@nr='2']//flow/block[1]/@bpd"/> + <eval expected="50000" xpath="//pageViewport[@nr='2']//flow/block[1]/@bpda"/> + <eval expected="" xpath="//pageViewport[@nr='2']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[4]/@border-after"/> + + <!-- 2. separate border model, discarded borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[2]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='3']//flow/block)"/> + <eval expected="2. Before the table" xpath="//pageViewport[@nr='3']//flow/block[1]//text"/> + <eval expected="52000" xpath="//pageViewport[@nr='3']//flow/block[2]/@bpd"/> + <eval expected="54000" xpath="//pageViewport[@nr='3']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='3']//flow/block[2]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[4]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='4']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='4']//flow/block[2]//text"/> + <eval expected="76000" xpath="//pageViewport[@nr='4']//flow/block[1]/@bpd"/> + <eval expected="78000" xpath="//pageViewport[@nr='4']//flow/block[1]/@bpda"/> + <eval expected="" xpath="//pageViewport[@nr='4']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[7]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[7]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[7]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[7]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[8]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[8]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[8]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[8]/@border-after"/> + + <!-- 3. separate border model, retained borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[3]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='5']//flow/block)"/> + <eval expected="3. Before the table" xpath="//pageViewport[@nr='5']//flow/block[1]//text"/> + <eval expected="52000" xpath="//pageViewport[@nr='5']//flow/block[2]/@bpd"/> + <eval expected="56000" xpath="//pageViewport[@nr='5']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[4]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='6']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='6']//flow/block[2]//text"/> + <eval expected="76000" xpath="//pageViewport[@nr='6']//flow/block[1]/@bpd"/> + <eval expected="80000" xpath="//pageViewport[@nr='6']//flow/block[1]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[7]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[7]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[7]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[7]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[8]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[8]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[8]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[8]/@border-after"/> + + <!-- 4. separate border model, discarded borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[4]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='7']//flow/block)"/> + <eval expected="4. Before the table" xpath="//pageViewport[@nr='7']//flow/block[1]//text"/> + <eval expected="38000" xpath="//pageViewport[@nr='7']//flow/block[2]/@bpd"/> + <eval expected="40000" xpath="//pageViewport[@nr='7']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='7']//flow/block[2]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='7']//flow/block[2]/block[4]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='8']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='8']//flow/block[2]//text"/> + <eval expected="62000" xpath="//pageViewport[@nr='8']//flow/block[1]/@bpd"/> + <eval expected="64000" xpath="//pageViewport[@nr='8']//flow/block[1]/@bpda"/> + <eval expected="" xpath="//pageViewport[@nr='8']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[5]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[5]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[6]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[6]/@border-after"/> + + <!-- 5. separate border model, retained borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[5]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='9']//flow/block)"/> + <eval expected="5. Before the table" xpath="//pageViewport[@nr='9']//flow/block[1]//text"/> + <eval expected="38000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpd"/> + <eval expected="42000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/@border-after"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='9']//flow/block[2]/block[4]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='10']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='10']//flow/block[2]//text"/> + <eval expected="62000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpd"/> + <eval expected="66000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpda"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/@border-before"/> + <eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[5]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[5]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[6]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[6]/@border-after"/> + + <!-- 6. collapsing border model, discarded borders, no header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[6]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='11']//flow/block)"/> + <eval expected="6. Before the table" xpath="//pageViewport[@nr='11']//flow/block[1]//text"/> + <eval expected="22000" xpath="//pageViewport[@nr='11']//flow/block[2]/@bpd"/> + <eval expected="22000" xpath="//pageViewport[@nr='11']//flow/block[2]/@bpda"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[1]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='11']//flow/block[2]/block[2]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='12']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='12']//flow/block[2]//text"/> + <eval expected="44000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpd"/> + <eval expected="44000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpda"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[4]/@border-after"/> + + <!-- 7. collapsing border model, discarded borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[7]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='13']//flow/block)"/> + <eval expected="7. Before the table" xpath="//pageViewport[@nr='13']//flow/block[1]//text"/> + <eval expected="46000" xpath="//pageViewport[@nr='13']//flow/block[2]/@bpd"/> + <eval expected="46000" xpath="//pageViewport[@nr='13']//flow/block[2]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[4]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='14']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='14']//flow/block[2]//text"/> + <eval expected="68000" xpath="//pageViewport[@nr='14']//flow/block[1]/@bpd"/> + <eval expected="68000" xpath="//pageViewport[@nr='14']//flow/block[1]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[5]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[6]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[7]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[7]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[7]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[7]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[8]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[8]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[8]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='14']//flow/block[1]/block[8]/@border-after"/> + + <!-- 8. collapsing border model, discarded borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[8]/pageViewport)"/> + <eval expected="2" xpath="count(//pageViewport[@nr='15']//flow/block)"/> + <eval expected="8. Before the table" xpath="//pageViewport[@nr='15']//flow/block[1]//text"/> + <eval expected="34000" xpath="//pageViewport[@nr='15']//flow/block[2]/@bpd"/> + <eval expected="34000" xpath="//pageViewport[@nr='15']//flow/block[2]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='15']//flow/block[2]/block[4]/@border-after"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='16']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='16']//flow/block[2]//text"/> + <eval expected="56000" xpath="//pageViewport[@nr='16']//flow/block[1]/@bpd"/> + <eval expected="56000" xpath="//pageViewport[@nr='16']//flow/block[1]/@bpda"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-outer)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-outer)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[4]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[5]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[5]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[6]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='16']//flow/block[1]/block[6]/@border-after"/> + + </checks> +</testcase> diff --git a/test/layoutengine/standard-testcases/table-row_break-before_first-row-header.xml b/test/layoutengine/standard-testcases/table-row_break-before_first-row-header.xml deleted file mode 100644 index f05f0096d..000000000 --- a/test/layoutengine/standard-testcases/table-row_break-before_first-row-header.xml +++ /dev/null @@ -1,74 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. ---> -<!-- $Id$ --> -<testcase> - <info> - <p> - This test checks that break-before on the first row of a table with headers works properly. - </p> - </info> - <fo> - <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> - <fo:layout-master-set> - <fo:simple-page-master master-name="page" page-height="10cm" page-width="15cm" - margin-top="1cm" margin-bottom="0" margin-left="1cm" margin-right="1cm"> - <fo:region-body/> - </fo:simple-page-master> - </fo:layout-master-set> - <fo:page-sequence master-reference="page"> - <fo:flow flow-name="xsl-region-body"> - <fo:block>Before the table</fo:block> - <fo:table width="100%" table-layout="fixed" border-collapse="collapse" border="4pt solid black" table-omit-header-at-break="true"> - <fo:table-column number-columns-repeated="2" column-width="proportional-column-width(1)"/> - <fo:table-header> - <fo:table-row> - <fo:table-cell border="2pt solid blue"> - <fo:block>Header 1</fo:block> - </fo:table-cell> - <fo:table-cell border="2pt solid blue"> - <fo:block>Header 2</fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-header> - <fo:table-body> - <fo:table-row break-before="page"> - <fo:table-cell border="2pt solid black"> - <fo:block>Cell 1.1</fo:block> - </fo:table-cell> - <fo:table-cell border="2pt solid black"> - <fo:block>Cell 1.2</fo:block> - </fo:table-cell> - </fo:table-row> - </fo:table-body> - </fo:table> - <fo:block>After the table</fo:block> - </fo:flow> - </fo:page-sequence> - </fo:root> - </fo> - <checks> - <!-- Two pages --> - <eval expected="2" xpath="count(//pageViewport)"/> - <!-- Only one line on the first page --> - <eval expected="1" xpath="count(//pageViewport[@nr=1]//flow/block)"/> - <eval expected="Before the table" xpath="//pageViewport[@nr=1]//flow/block[1]/lineArea/text[1]"/> - <!-- Table plus line "After the table" on the second page --> - <eval expected="2" xpath="count(//pageViewport[@nr=2]//flow/block)"/> - <eval expected="After the table" xpath="//pageViewport[@nr=2]//flow/block[2]/lineArea/text[1]"/> - </checks> -</testcase> diff --git a/test/layoutengine/standard-testcases/table-row_break-before_first-row.xml b/test/layoutengine/standard-testcases/table-row_break-before_first-row.xml new file mode 100644 index 000000000..8321c2019 --- /dev/null +++ b/test/layoutengine/standard-testcases/table-row_break-before_first-row.xml @@ -0,0 +1,688 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- $Id$ --> +<testcase> + <info> + <p> + This test checks that break-before set on table-rows work correctly in various conditions: + when headers/footers shall be repeated at page breaks or not, in the separate or collapsing + border model, etc. + </p> + </info> + <fo> + <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> + <fo:layout-master-set> + <fo:simple-page-master master-name="page" page-height="10cm" page-width="15cm" margin="1cm"> + <fo:region-body background-color="#F0F0F0"/> + </fo:simple-page-master> + </fo:layout-master-set> + + <!-- 1. separate border model, discarded borders, no header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>1. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-body> + <fo:table-row border="2pt solid green" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 2. separate border model, discarded borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>2. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 3. separate border model, discarded borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>3. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="separate" border="2pt solid black" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 4. collapsing border model, discarded borders, no header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>4. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-body> + <fo:table-row border="2pt solid green" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 5. collapsing border model, discarded borders, repeated header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>5. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black" + table-omit-header-at-break="false" table-omit-footer-at-break="false"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + <!-- 6. collapsing border model, discarded borders, omitted header/footer --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block>6. Before the table</fo:block> + <fo:table width="100%" table-layout="fixed" + border-collapse="collapse" border="2pt solid black" + table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table-column column-width="proportional-column-width(1)" number-columns-repeated="2"/> + <fo:table-header> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"><fo:block>Header 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Header 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-header> + <fo:table-footer> + <fo:table-row border="2pt solid purple"> + <fo:table-cell border="inherit"><fo:block>Footer 1.1</fo:block></fo:table-cell> + <fo:table-cell border="inherit"><fo:block>Footer 1.2</fo:block></fo:table-cell> + </fo:table-row> + </fo:table-footer> + <fo:table-body> + <fo:table-row border="2pt solid green" break-before="page"> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.1</fo:block> + <fo:block>Cell 1.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 1.2</fo:block> + <fo:block>Cell 1.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid red"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2</fo:block> + <fo:block>Cell 2.2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid orange"> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.1</fo:block> + <fo:block>Cell 3.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit"> + <fo:block>Cell 3.2</fo:block> + <fo:block>Cell 3.2</fo:block> + </fo:table-cell> + </fo:table-row> + </fo:table-body> + </fo:table> + <fo:block>After the table</fo:block> + </fo:flow> + </fo:page-sequence> + + </fo:root> + </fo> + <checks> + + <!-- 1. separate border model, discarded borders, no header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[1]/pageViewport)"/> + <eval expected="1" xpath="count(//pageViewport[@nr='1']//flow/block)"/> + <eval expected="1. Before the table" xpath="//pageViewport[@nr='1']//flow/block[1]//text"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='2']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='2']//flow/block[2]//text"/> + <eval expected="72000" xpath="//pageViewport[@nr='2']//flow/block[1]/@bpd"/> + <!--eval expected="76000" xpath="//pageViewport[@nr='2']//flow/block[1]/@bpda"/--> + <!--eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/@border-before"/--> + <!--eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/@border-after"/--> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[4]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[5]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[6]/@border-after"/> + + <!-- 2. separate border model, discarded borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[2]/pageViewport)"/> + <eval expected="1" xpath="count(//pageViewport[@nr='3']//flow/block)"/> + <eval expected="2. Before the table" xpath="//pageViewport[@nr='3']//flow/block[1]//text"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='4']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='4']//flow/block[2]//text"/> + <eval expected="100000" xpath="//pageViewport[@nr='4']//flow/block[1]/@bpd"/> + <!--eval expected="104000" xpath="//pageViewport[@nr='4']//flow/block[1]/@bpda"/--> + <!--eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/@border-before"/--> + <!--eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/@border-after"/--> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[6]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[7]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[7]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[7]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[7]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[8]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[8]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[8]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[8]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[9]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[9]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[9]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[9]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[10]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[10]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[10]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[10]/@border-after"/> + + <!-- 3. separate border model, discarded borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[3]/pageViewport)"/> + <eval expected="1" xpath="count(//pageViewport[@nr='5']//flow/block)"/> + <eval expected="3. Before the table" xpath="//pageViewport[@nr='5']//flow/block[1]//text"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='6']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='6']//flow/block[2]//text"/> + <eval expected="100000" xpath="//pageViewport[@nr='6']//flow/block[1]/@bpd"/> + <!--eval expected="104000" xpath="//pageViewport[@nr='6']//flow/block[1]/@bpda"/--> + <!--eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/@border-before"/--> + <!--eval expected="(solid,#000000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/@border-after"/--> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[6]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[7]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[7]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[7]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[7]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[8]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[8]/@bpda"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[8]/@border-before"/> + <eval expected="(solid,#ffa500,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[8]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[9]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[9]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[9]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[9]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[10]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[10]/@bpda"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[10]/@border-before"/> + <eval expected="(solid,#800080,2000)" xpath="//pageViewport[@nr='6']//flow/block[1]/block[10]/@border-after"/> + + <!-- 4. collapsing border model, discarded borders, no header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[4]/pageViewport)"/> + <eval expected="1" xpath="count(//pageViewport[@nr='7']//flow/block)"/> + <eval expected="4. Before the table" xpath="//pageViewport[@nr='7']//flow/block[1]//text"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='8']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='8']//flow/block[2]//text"/> + <eval expected="66000" xpath="//pageViewport[@nr='8']//flow/block[1]/@bpd"/> + <eval expected="66000" xpath="//pageViewport[@nr='8']//flow/block[1]/@bpda"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-outer)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[4]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[5]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-outer)" xpath="//pageViewport[@nr='8']//flow/block[1]/block[6]/@border-after"/> + + <!-- 5. collapsing border model, discarded borders, repeated header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[5]/pageViewport)"/> + <eval expected="1" xpath="count(//pageViewport[@nr='9']//flow/block)"/> + <eval expected="5. Before the table" xpath="//pageViewport[@nr='9']//flow/block[1]//text"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='10']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='10']//flow/block[2]//text"/> + <eval expected="90000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpd"/> + <eval expected="90000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[6]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[7]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[7]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[7]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[7]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[8]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[8]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[8]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[8]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[9]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[9]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[9]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[9]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[10]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='10']//flow/block[1]/block[10]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[10]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='10']//flow/block[1]/block[10]/@border-after"/> + + <!-- 6. collapsing border model, discarded borders, omitted header/footer --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[6]/pageViewport)"/> + <eval expected="1" xpath="count(//pageViewport[@nr='11']//flow/block)"/> + <eval expected="6. Before the table" xpath="//pageViewport[@nr='11']//flow/block[1]//text"/> + <!-- page 2 --> + <eval expected="2" xpath="count(//pageViewport[@nr='12']//flow/block)"/> + <eval expected="After the table" xpath="//pageViewport[@nr='12']//flow/block[2]//text"/> + <eval expected="90000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpd"/> + <eval expected="90000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpda"/> + <!-- header 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@border-after"/> + <!-- header 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpda"/> + <eval expected="(solid,#0000ff,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@border-before"/> + <eval expected="(solid,#0000ff,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@border-after"/> + <!-- cell 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[3]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[3]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[3]/@border-after"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[4]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[4]/@border-before"/> + <eval expected="(solid,#008000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[4]/@border-after"/> + <!-- cell 2.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[5]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[5]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[5]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[5]/@border-after"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[6]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[6]/@bpda"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[6]/@border-before"/> + <eval expected="(solid,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[6]/@border-after"/> + <!-- cell 3.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[7]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[7]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[7]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[7]/@border-after"/> + <!-- cell 3.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[8]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[8]/@bpda"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[8]/@border-before"/> + <eval expected="(solid,#ffa500,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[8]/@border-after"/> + <!-- footer 1.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[9]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[9]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[9]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[9]/@border-after"/> + <!-- footer 1.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[10]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[10]/@bpda"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[10]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-outer)" xpath="//pageViewport[@nr='12']//flow/block[1]/block[10]/@border-after"/> + + </checks> +</testcase> |