<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://www.w3.org/Bugs/Public/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4"
          urlbase="https://www.w3.org/Bugs/Public/"
          
          maintainer="sysbot+bugzilla@w3.org"
>

    <bug>
          <bug_id>6278</bug_id>
          
          <creation_ts>2008-12-04 16:43:23 +0000</creation_ts>
          <short_desc>Border-resolution in the collapsing-border model</short_desc>
          <delta_ts>2010-08-27 10:53:02 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>XSLFO</product>
          <component>XSL-FO</component>
          <version>1.1</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://lists.w3.org/Archives/Public/xsl-editors/2007AprJun/0000</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>6281</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Graham">tgraham</reporter>
          <assigned_to name="Tony Graham">tgraham</assigned_to>
          <cc>ejiang</cc>
    
    <cc>vhennebert</cc>
          
          <qa_contact name="Mailing list for comments on XSL (XSl-FO)">xsl-editors</qa_contact>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>22684</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Graham">tgraham</who>
    <bug_when>2008-12-04 16:43:23 +0000</bug_when>
    <thetext>From xsl-editors@w3.org:

For the (cells of the) first row of a table, border-before on the
fo:table and applicable fo:table-column objects play into border
resolution. When the table is broken accross several pages, do they also
play for the first row of each page? Or only the very first row of the
table? We agreed upon yes. This means that if
border-conditionality=&quot;retain&quot; on fo:table, then it will appear on each
page (if it wins in the border resolution), which would be the same
behavior as in the separate-border model.

But if the fo:table-header is not omitted at page breaks, how should
border resolution be performed? Technically, the areas generated by the
table-cell children of fo:table-header are /replicated/ on each new
page, so they would have the is-first trait set to true. So assuming
that the conditionality of the fo:table&apos;s border-before is &quot;discard&quot;,
should it play or not in the border resolution of table-headers on the
second and following pages?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>23028</commentid>
    <comment_count>1</comment_count>
    <who name="Tony Graham">tgraham</who>
    <bug_when>2009-01-13 12:44:54 +0000</bug_when>
    <thetext>Adding original poster as CC since response will be required when a solution is proposed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>35942</commentid>
    <comment_count>2</comment_count>
    <who name="Edward Jiang">ejiang</who>
    <bug_when>2010-06-03 15:19:23 +0000</bug_when>
    <thetext>Hi Vincent,

First of all, all the members of XSL-FO working group feel so sorry that we haven&apos;t get back to you with a complete and final answer to the email you sent back in 2007.  I believe part of the problem we&apos;re dealing with here is that some of the questions and explanations in your email (http://lists.w3.org/Archives/Public/xsl-editors/2007AprJun/0000) are not quite clear and straightforward to us.

Let&apos;s take the 2 paragraphs you sent for &quot;Border-resolution in the collapsing-border model&quot; for example:

| For the (cells of the) first row of a table, border-before on the
| fo:table and applicable fo:table-column objects play into border
| resolution. When the table is broken accross several pages, do they
| also
| play for the first row of each page? Or only the very first row of the
| table? We agreed upon yes. This means that if
| border-conditionality=&quot;retain&quot; on fo:table, then it will appear on
| each
| page (if it wins in the border resolution), which would be the same
| behavior as in the separate-border model.

| But if the fo:table-header is not omitted at page breaks, how should
| border resolution be performed? Technically, the areas generated by
| the
| table-cell children of fo:table-header are /replicated/ on each new
| page, so they would have the is-first trait set to true. So assuming
| that the conditionality of the fo:table&apos;s border-before is &quot;discard&quot;,
| should it play or not in the border resolution of table-headers on the
| second and following pages?

According to my understanding, first of all, border resolution only happens during the &quot;collapse&quot; mode. Assuming we are talking about all the problems here during the &quot;collapse&quot; model.  And, please notice that XSL-FO shares the same &quot;border conflict resolution&quot; rule as CSS (http://www.w3.org/TR/CSS2/tables.html#border-conflict-resolution, hereinafter &quot;resolution&quot;).

Now let&apos;s take a look of your question here using following diagram:

+------------------+===resolved by rule===+
!                  !                      !  \
!                  !                      !   !
! 1st Page Header1 ! 1st Page Header2     !   !
!                  !                      !   !
+------------------+----------------------!   !
!  other rows      !  other rows          !   !
+------------------+----------------------+   !
                                              !
&lt;&lt;&lt;&lt; Page Break &gt;&gt;&gt;&gt;                           &gt; Single fo:table
                                              !
+------------------+ *Border in Question* +   !
!                  !                      !   !
!                  !                      !   !
! 2nd Page Header1 ! 2nd Page Header2     !   !
!                  !                      !   !
!                  !                      !  /
+------------------+----------------------+

So we are mainly discussing the second page&apos;s border marked as *Border in Question* in the diagram here, am I correct?

If I understand your logic correct, I tried to paraphrase your idea here:

Presumption:

1. fo:table has &quot;border-before&quot; property set
2. fo:table has &quot;border-before&quot; property&apos;s &quot;conditionality&quot; sub property set to &quot;retain&quot;
3. fo:table-column for 2nd column in diagram has &quot;border-before&quot; property set too
4. fo:table-header has a fo:table-cell that has &quot;border-before&quot; property set too

Now, the question lies in 2 aspects here, both are concerned with the *Border in Question*.

1. On the 2nd page, does the &quot;border-before&quot; property of fo:table will be still taken into consideration for resolution or not?

2. On the 2nd page, does the &quot;border-before&quot; property of fo:table-cell for the fo:table-header&apos;s 2nd column will be still taken into consideration for resolution or not?

Is this rewrite correct?

Also, my final question regarding the term &quot;separate-border model&quot; in your email.  Do you mean the model by just the model in &quot;non-collapse&quot; mode?

Sincerely,
Edward
Member of XSL-FO working group</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37201</commentid>
    <comment_count>3</comment_count>
    <who name="Vincent Hennebert">vhennebert</who>
    <bug_when>2010-08-02 10:49:05 +0000</bug_when>
    <thetext>(In reply to comment #2)

Hi Edward,

Thanks for your answer. Actually the problem must be broken down into two sub-cases:

1. &quot;table-omit-header-at-break&quot; property set to &quot;true&quot;

+------------------+===resolved by rule===+
!                  !                      !  \
!                  !                      !   !
! 1st Page Header1 ! 1st Page Header2     !   !
!                  !                      !   !
+------------------+----------------------!   !
!      row 1       !        row 1         !   !
+------------------+----------------------+   ! &gt; Single fo:table
                                              !
&lt;&lt;&lt;&lt; Page Break &gt;&gt;&gt;&gt;                          !
                                              !
+------------------+ *Border in Question* +   !
!      row 2       !        row 2         !   !
+------------------+----------------------+  /

Assumptions:
1. fo:table has &quot;border-before&quot; property set;
2. fo:table has &quot;border-before&quot; property&apos;s &quot;conditionality&quot; sub-property set to
   &quot;retain&quot;

Question regarding the resolution of *Border in Question*:
On the 2nd page, will the &quot;border-before&quot; property of fo:table be taken
into consideration for resolution or not?

In other words: must the &quot;border-before&quot; property of fo:table play into
resolution for the very first row of the table only, or, according to the value
of the &quot;conditionality&quot; sub-property, also for the first row on every new page?

That question can be equally worded by replacing &quot;fo:table&quot; with
&quot;fo:table-column&quot;.

It seems natural to answer yes. But then comes the second question:

2. table-omit-header-at-break property set to &quot;false&quot;

 +------------------+===resolved by rule===+
 !                  !                      !  \
 !                  !                      !   !
 ! 1st Page Header1 ! 1st Page Header2     !   !
 !                  !                      !   !
 +------------------+----------------------!   !
 !  other rows      !  other rows          !   !
 +------------------+----------------------+   !
                                               !
 &lt;&lt;&lt;&lt; Page Break &gt;&gt;&gt;&gt;                           &gt; Single fo:table
                                               !
 +------------------+ *Border in Question* +   !
 !                  !                      !   !
 !                  !                      !   !
 ! 2nd Page Header1 ! 2nd Page Header2     !   !
 !                  !                      !   !
 !                  !                      !  /
 +------------------+----------------------+

Assumptions:
1. fo:table has &quot;border-before&quot; property set;
2. fo:table has &quot;border-before&quot; property&apos;s &quot;conditionality&quot; sub-property set to
   &quot;discard&quot;

Question regarding the resolution of *Border in Question*:
On the 2nd page, will the &quot;border-before&quot; property of fo:table still be taken
into consideration for resolution or not?

The description of fo:table, section 6.7.3 of the XSL-FO 1.1 Recommendation,
says the following:
    &quot;The content of the fo:table-header and fo:table-footer, unless omitted as
    specified by the &quot;table-omit-header-at-break&quot; and &quot;table-omit-footer-at-break&quot;
    properties, shall be repeated for each normal block-area generated and returned
    by the fo:table formatting object.&quot;

If &quot;repeated&quot; means &quot;cloned&quot;, then *Border in Question* must be set to the same
value as the &quot;resolved by rule&quot; border. If &quot;repeated&quot; means &quot;generated&quot;, then
*Border in Question* will be resolved the same way as it is in case #1.


By &quot;separate-border model&quot;, I mean the border model applied when
&quot;border-collapse&quot; property has been set to &quot;separate&quot;.

Thanks,
Vincent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37373</commentid>
    <comment_count>4</comment_count>
    <who name="Edward Jiang">ejiang</who>
    <bug_when>2010-08-12 16:35:43 +0000</bug_when>
    <thetext>Hi Vincent,

Thank you for your reply.  As we discussed on the XSL working group, we believe that it&apos;s not a &quot;clone&quot;. the properties of the top edge *border-in-question* needs to be re-evaluated after the pagination.

In terms of the property &quot;table-omit-header-at-break&quot; [1], the XSL-FO 1.1 stands that:

==
The &quot;table-omit-header-at-break&quot; property specifies if a table whose first area is not at the beginning of an area produced by the table should start with the content of the fo:table-header formatting object or not.
==

So we believe the FO Processor needs to generate border based on the new context again, not just &quot;clones&quot; the behavior of the border rendered in last page.

[1] XSL-FO 7.28.18, http://www.w3.org/TR/xsl11/#table-omit-header-at-break</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37993</commentid>
    <comment_count>5</comment_count>
    <who name="Vincent Hennebert">vhennebert</who>
    <bug_when>2010-08-27 10:42:33 +0000</bug_when>
    <thetext>(In reply to comment #4)

Hi Edward,

Thanks, I think that solves the issue.

Regards,
Vincent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>37994</commentid>
    <comment_count>6</comment_count>
    <who name="Tony Graham">tgraham</who>
    <bug_when>2010-08-27 10:53:02 +0000</bug_when>
    <thetext>Original poster has stated that previous response solves the issue.

DOES NOT require new erratum for XSL 1.1.</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>