diff options
author | Vincent Hennebert <vhennebert@apache.org> | 2008-02-11 18:10:09 +0000 |
---|---|---|
committer | Vincent Hennebert <vhennebert@apache.org> | 2008-02-11 18:10:09 +0000 |
commit | c7d1a19cab78c16211f006a220bcb882cb207144 (patch) | |
tree | bd301a7bbef474b1b376f7717eecb996bc11277c /test/layoutengine | |
parent | c29d8e5488fa1b749647f2e5f35129271b2dae48 (diff) | |
download | xmlgraphics-fop-c7d1a19cab78c16211f006a220bcb882cb207144.tar.gz xmlgraphics-fop-c7d1a19cab78c16211f006a220bcb882cb207144.zip |
Added full support for breaks inside table-cell elements
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@620558 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'test/layoutengine')
3 files changed, 2477 insertions, 0 deletions
diff --git a/test/layoutengine/standard-testcases/table-cell_break-after_inside.xml b/test/layoutengine/standard-testcases/table-cell_break-after_inside.xml new file mode 100644 index 000000000..670858565 --- /dev/null +++ b/test/layoutengine/standard-testcases/table-cell_break-after_inside.xml @@ -0,0 +1,1138 @@ +<?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 blocks in table-cells works 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 break-after="page">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"> + <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 break-after="page">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"> + <fo:table-cell border="inherit" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain"> + <fo:block break-after="page">Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain"> + <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"> + <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 break-after="page">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"> + <fo:table-cell border="inherit" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain"> + <fo:block break-after="page">Cell 2.1</fo:block> + <fo:block>Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain"> + <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"> + <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 break-after="page">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"> + <fo:table-cell border="inherit"> + <fo:block break-after="page">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"> + <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 break-after="page">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="36000" xpath="//pageViewport[@nr='1']//flow/block[2]/@bpd"/> + <eval expected="38000" 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="10000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/block//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="36000" xpath="//pageViewport[@nr='2']//flow/block[1]/@bpd"/> + <eval expected="38000" 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="10000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/block//text"/> + <!-- 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="64000" xpath="//pageViewport[@nr='3']//flow/block[2]/@bpd"/> + <eval expected="66000" 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="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/block//text"/> + <!-- 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="64000" xpath="//pageViewport[@nr='4']//flow/block[1]/@bpd"/> + <eval expected="66000" 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="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/block//text"/> + <!-- 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="66000" xpath="//pageViewport[@nr='5']//flow/block[2]/@bpd"/> + <eval expected="70000" 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="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,#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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.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,#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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/block//text"/> + <!-- 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="66000" xpath="//pageViewport[@nr='6']//flow/block[1]/@bpd"/> + <eval expected="70000" 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="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@bpd"/> + <eval expected="14000" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@bpd"/> + <eval expected="14000" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/block//text"/> + <!-- 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="50000" xpath="//pageViewport[@nr='7']//flow/block[2]/@bpd"/> + <eval expected="52000" 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="10000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/block//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="50000" xpath="//pageViewport[@nr='8']//flow/block[1]/@bpd"/> + <eval expected="52000" 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="10000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/block//text"/> + <!-- 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="52000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpd"/> + <eval expected="56000" 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="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@bpd"/> + <eval expected="14000" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@bpd"/> + <eval expected="14000" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/block//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="52000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpd"/> + <eval expected="56000" 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="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,#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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.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,#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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/block//text"/> + <!-- 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="33000" xpath="//pageViewport[@nr='11']//flow/block[2]/@bpd"/> + <eval expected="33000" 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="10000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/block//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="33000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpd"/> + <eval expected="33000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpda"/> + <!-- cell 2.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/block//text"/> + <!-- 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="58000" xpath="//pageViewport[@nr='13']//flow/block[2]/@bpd"/> + <eval expected="58000" 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="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,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.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,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/block//text"/> + <!-- 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="58000" xpath="//pageViewport[@nr='14']//flow/block[1]/@bpd"/> + <eval expected="58000" 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="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#0000ff,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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#0000ff,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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/block//text"/> + <!-- 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="45000" xpath="//pageViewport[@nr='15']//flow/block[2]/@bpd"/> + <eval expected="45000" 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="10000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/block//text"/> + <!-- 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="45000" xpath="//pageViewport[@nr='16']//flow/block[1]/@bpd"/> + <eval expected="45000" xpath="//pageViewport[@nr='16']//flow/block[1]/@bpda"/> + <!-- cell 2.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/block//text"/> + <!-- 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-cell_break-before_inside.xml b/test/layoutengine/standard-testcases/table-cell_break-before_inside.xml new file mode 100644 index 000000000..780d60015 --- /dev/null +++ b/test/layoutengine/standard-testcases/table-cell_break-before_inside.xml @@ -0,0 +1,1138 @@ +<?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"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block break-before="page">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"> + <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 break-before="page">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"> + <fo:table-cell border="inherit" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain"> + <fo:block>Cell 2.1</fo:block> + <fo:block break-before="page">Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain"> + <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"> + <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 break-before="page">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"> + <fo:table-cell border="inherit" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain"> + <fo:block>Cell 2.1</fo:block> + <fo:block break-before="page">Cell 2.1</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit" + border-before-width.length="2pt" border-before-width.conditionality="retain" + border-after-width.length="2pt" border-after-width.conditionality="retain"> + <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"> + <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 break-before="page">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"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.1</fo:block> + <fo:block break-before="page">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"> + <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 break-before="page">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="36000" xpath="//pageViewport[@nr='1']//flow/block[2]/@bpd"/> + <eval expected="38000" 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="10000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='1']//flow/block[2]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='1']//flow/block[2]/block[4]/block//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="36000" xpath="//pageViewport[@nr='2']//flow/block[1]/@bpd"/> + <eval expected="38000" 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="10000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/block//text"/> + <!-- 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="64000" xpath="//pageViewport[@nr='3']//flow/block[2]/@bpd"/> + <eval expected="66000" 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="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='3']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='3']//flow/block[2]/block[6]/block//text"/> + <!-- 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="64000" xpath="//pageViewport[@nr='4']//flow/block[1]/@bpd"/> + <eval expected="66000" 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="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='4']//flow/block[1]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='4']//flow/block[1]/block[4]/block//text"/> + <!-- 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="66000" xpath="//pageViewport[@nr='5']//flow/block[2]/@bpd"/> + <eval expected="70000" 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="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,#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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='5']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.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,#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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='5']//flow/block[2]/block[6]/block//text"/> + <!-- 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="66000" xpath="//pageViewport[@nr='6']//flow/block[1]/@bpd"/> + <eval expected="70000" 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="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/@bpd"/> + <eval expected="14000" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='6']//flow/block[1]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/@bpd"/> + <eval expected="14000" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='6']//flow/block[1]/block[4]/block//text"/> + <!-- 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="50000" xpath="//pageViewport[@nr='7']//flow/block[2]/@bpd"/> + <eval expected="52000" 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="10000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='7']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='7']//flow/block[2]/block[6]/block//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="50000" xpath="//pageViewport[@nr='8']//flow/block[1]/@bpd"/> + <eval expected="52000" 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="10000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='8']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='8']//flow/block[1]/block[2]/block//text"/> + <!-- 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="52000" xpath="//pageViewport[@nr='9']//flow/block[2]/@bpd"/> + <eval expected="56000" 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="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/@bpd"/> + <eval expected="14000" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='9']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/@bpd"/> + <eval expected="14000" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='9']//flow/block[2]/block[6]/block//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="52000" xpath="//pageViewport[@nr='10']//flow/block[1]/@bpd"/> + <eval expected="56000" 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="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,#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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='10']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.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,#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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='10']//flow/block[1]/block[2]/block//text"/> + <!-- 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="33000" xpath="//pageViewport[@nr='11']//flow/block[2]/@bpd"/> + <eval expected="33000" 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="10000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='11']//flow/block[2]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='11']//flow/block[2]/block[4]/block//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="33000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpd"/> + <eval expected="33000" xpath="//pageViewport[@nr='12']//flow/block[1]/@bpda"/> + <!-- cell 2.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='12']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='12']//flow/block[1]/block[2]/block//text"/> + <!-- 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="58000" xpath="//pageViewport[@nr='13']//flow/block[2]/@bpd"/> + <eval expected="58000" 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="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,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='13']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.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,#ff0000,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@border-before"/> + <eval expected="(solid,#800080,2000,collapse-inner)" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='13']//flow/block[2]/block[6]/block//text"/> + <!-- 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="58000" xpath="//pageViewport[@nr='14']//flow/block[1]/@bpd"/> + <eval expected="58000" 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="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/@bpda"/> + <eval expected="(solid,#0000ff,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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='14']//flow/block[1]/block[3]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@bpd"/> + <eval expected="14000" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/@bpda"/> + <eval expected="(solid,#0000ff,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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='14']//flow/block[1]/block[4]/block//text"/> + <!-- 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="45000" xpath="//pageViewport[@nr='15']//flow/block[2]/@bpd"/> + <eval expected="45000" 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="10000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/@border-after"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='15']//flow/block[2]/block[5]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/@bpd"/> + <eval expected="12000" 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="" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/@border-after"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='15']//flow/block[2]/block[6]/block//text"/> + <!-- 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="45000" xpath="//pageViewport[@nr='16']//flow/block[1]/@bpd"/> + <eval expected="45000" xpath="//pageViewport[@nr='16']//flow/block[1]/@bpda"/> + <!-- cell 2.1 --> + <eval expected="10000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.1" xpath="//pageViewport[@nr='16']//flow/block[1]/block[1]/block//text"/> + <!-- cell 2.2 --> + <eval expected="10000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@bpd"/> + <eval expected="12000" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/@bpda"/> + <eval expected="" 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"/> + <eval expected="Cell 2.2" xpath="//pageViewport[@nr='16']//flow/block[1]/block[2]/block//text"/> + <!-- 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-cell_breaks.xml b/test/layoutengine/standard-testcases/table-cell_breaks.xml new file mode 100644 index 000000000..1bdb2449f --- /dev/null +++ b/test/layoutengine/standard-testcases/table-cell_breaks.xml @@ -0,0 +1,201 @@ +<?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 breaks collaborate nicely with the increasing of steps, when the first + step of a row is computed or when applied to row-spanning cells once the end of the current + row is reached. + </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="4in" page-width="5in" margin="0.5in"> + <fo:region-body background-color="#F0F0F0"/> + </fo:simple-page-master> + </fo:layout-master-set> + + <!-- table 1: the first step consists of 2 lines, yet the second cell should only have one + line on the first page due to the break-after --> + <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 blue"> + <fo:table-cell border="inherit"> + <fo:block keep-with-next="always">Cell 1.1 Line 1</fo:block> + <fo:block>Cell 1.1 Line 2</fo:block> + <fo:block>Cell 1.1 Line 3</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit" border-color="red"> + <fo:block break-after="page">Cell 1.2 Line 1</fo:block> + <fo:block>Cell 1.2 Line 2</fo:block> + <fo:block>Cell 1.2 Line 3</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid blue"> + <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> + + <!-- table 2: there is room to put 3 lines of cell 1.1 on the first page, but the break-before + should prevent that. --> + <fo:page-sequence master-reference="page" font-size="8pt" line-height="10pt"> + <fo:flow flow-name="xsl-region-body"> + <fo:block + space-after.minimum="170pt" + space-after.optimum="172pt" + space-after.maximum="175pt">2. 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 blue"> + <fo:table-cell border="inherit" number-rows-spanned="2" border-color="red"> + <fo:block>Cell 1.1 Line 1</fo:block> + <fo:block>Cell 1.1 Line 2</fo:block> + <fo:block break-before="page">Cell 1.1 Line 3</fo:block> + <fo:block>Cell 1.1 Line 4</fo:block> + </fo:table-cell> + <fo:table-cell border="inherit" border-after-width="10pt"> + <fo:block>Cell 1.2 Line 1</fo:block> + <fo:block>Cell 1.2 Line 2</fo:block> + </fo:table-cell> + </fo:table-row> + <fo:table-row border="2pt solid blue"> + <fo:table-cell border="inherit"> + <fo:block>Cell 2.2 Line 1</fo:block> + <fo:block>Cell 2.2 Line 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> + + <!-- table 1 --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[1]/pageViewport)"/> + <eval expected="22000" xpath="//pageViewport[@nr='1']//flow/block[2]/@bpd"/> + <eval expected="24000" 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="22000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/@border-after"/> + <eval expected="2" xpath="count(//pageViewport[@nr='1']//flow/block[2]/block[1]/block)"/> + <eval expected="Cell 1.1 Line 1" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/block[1]"/> + <eval expected="Cell 1.1 Line 2" xpath="//pageViewport[@nr='1']//flow/block[2]/block[1]/block[2]"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@bpd"/> + <eval expected="22000" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/@border-after"/> + <eval expected="1" xpath="count(//pageViewport[@nr='1']//flow/block[2]/block[2]/block)"/> + <eval expected="Cell 1.2 Line 1" xpath="//pageViewport[@nr='1']//flow/block[2]/block[2]/block[1]"/> + <!-- page 2 --> + <eval expected="46000" xpath="//pageViewport[@nr='2']//flow/block[1]/@bpd"/> + <eval expected="48000" 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 1.1 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpd"/> + <eval expected="22000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#0000ff,2000)" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/@border-after"/> + <eval expected="1" xpath="count(//pageViewport[@nr='2']//flow/block[1]/block[1]/block)"/> + <eval expected="Cell 1.1 Line 3" xpath="//pageViewport[@nr='2']//flow/block[1]/block[1]/block[1]"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpd"/> + <eval expected="22000" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/@bpda"/> + <eval expected="" 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"/> + <eval expected="2" xpath="count(//pageViewport[@nr='2']//flow/block[1]/block[2]/block)"/> + <eval expected="Cell 1.2 Line 2" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/block[1]"/> + <eval expected="Cell 1.2 Line 3" xpath="//pageViewport[@nr='2']//flow/block[1]/block[2]/block[2]"/> + + <!-- table 2 --> + <!-- page 1 --> + <eval expected="2" xpath="count(//pageSequence[2]/pageViewport)"/> + <eval expected="32000" xpath="//pageViewport[@nr='3']//flow/block[2]/@bpd"/> + <eval expected="34000" 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"/> + <!-- cell 1.1 --> + <eval expected="30000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@bpd"/> + <eval expected="32000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@bpda"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@border-before"/> + <eval expected="" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/@border-after"/> + <eval expected="2" xpath="count(//pageViewport[@nr='3']//flow/block[2]/block[1]/block)"/> + <eval expected="Cell 1.1 Line 1" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/block[1]"/> + <eval expected="Cell 1.1 Line 2" xpath="//pageViewport[@nr='3']//flow/block[2]/block[1]/block[2]"/> + <!-- cell 1.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@bpd"/> + <eval expected="32000" 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,10000)" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/@border-after"/> + <eval expected="2" xpath="count(//pageViewport[@nr='3']//flow/block[2]/block[2]/block)"/> + <eval expected="Cell 1.2 Line 1" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/block[1]"/> + <eval expected="Cell 1.2 Line 2" xpath="//pageViewport[@nr='3']//flow/block[2]/block[2]/block[2]"/> + <!-- page 2 --> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/@bpd"/> + <eval expected="26000" 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"/> + <!-- cell 1.1 --> + <eval expected="22000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@bpd"/> + <eval expected="24000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@bpda"/> + <eval expected="" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@border-before"/> + <eval expected="(solid,#ff0000,2000)" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/@border-after"/> + <eval expected="2" xpath="count(//pageViewport[@nr='4']//flow/block[1]/block[1]/block)"/> + <eval expected="Cell 1.1 Line 3" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/block[1]"/> + <eval expected="Cell 1.1 Line 4" xpath="//pageViewport[@nr='4']//flow/block[1]/block[1]/block[2]"/> + <!-- cell 2.2 --> + <eval expected="20000" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/@bpd"/> + <eval expected="24000" 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"/> + <eval expected="2" xpath="count(//pageViewport[@nr='4']//flow/block[1]/block[2]/block)"/> + <eval expected="Cell 2.2 Line 1" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/block[1]"/> + <eval expected="Cell 2.2 Line 2" xpath="//pageViewport[@nr='4']//flow/block[1]/block[2]/block[2]"/> + + </checks> +</testcase> |