在 <fo:table-column> 中,number-columns-spanned 与 number-columns-repeated 属性之间有什么区别?

In <fo:table-column> what is the difference between the number-columns-spanned vs. number-columns-repeated attributes?

实际上,使用 AHFormatter,如果我有这个:

<fo:table-column column-number="2" number-columns-repeated="2" color="red"/>

如果我使用 from-table-column():[=14,那么第 3 列中的 table-cell 将显示红色文本=]

<fo:table-cell color="from-table-column()">

然而,

<fo:table-column column-number="2" number-columns-spanned="2" color="red"/>

不能这样工作,所以也许真正的问题是 number-columns-spanned 属性是什么 做什么,如果有的话?

Per the Spec

7.28.12 "number-columns-repeated"

XSL Definition: Value: Initial: 1 Inherited: no Percentages: N/A Media: visual

A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value

greater than or equal to 1.

The "number-columns-repeated" property specifies the repetition of a table-column specification n times; with the same effect as if the fo:table-column formatting object had been repeated n times in the result tree. The "column-number" property, for all but the first, is the column-number of the previous one plus its value of the "number-columns-spanned" property.

Note:

This handles HTML's "colgroup" element. 7.28.13 "number-columns-spanned"

XSL Definition: Value: Initial: 1 Inherited: no Percentages: N/A Media: visual

A positive integer. If a non-positive or non-integer value is provided, the value will be rounded to the nearest integer value

greater than or equal to 1.

For an fo:table-column the "number-columns-spanned" property specifies the number of columns spanned by table-cells that may use properties from this fo:table-column formatting object using the from-table-column() function.

For an fo:table-cell the "number-columns-spanned" property specifies the number of columns which this cell spans in the column-progression-direction starting with the current column.

先前提供的答案,直接从 W3C XSL-FO 1.1 spec 复制,对 number-columns-repeated="n" 的作用给出了相当清楚的解释,即这是一个方便的属性,其效果与 格式化对象在结果树中重复 n 次相同。这模拟了 xhtml 标签 span 属性。

规范中关于“这处理 HTML 的‘colgroup’元素”的评论通常不正确 . 可以是 标签的容器,每个 元素可以提供完全不同的格式化属性(除了跨越一列或多列之外)。这种说法只有在使用空 时才成立标签(这是允许的,但令人困惑,因为这等同于仅使用 标签并完全放弃 )。xhtml DTD 不允许 允许 和 成为兄弟姐妹。您可以使用所有 元素或所有 元素(可以有 子元素,或使用 span,但不能同时使用两者),或者两者都不使用。

number-columns-spanned 属性充当附加的 标识符。例如,给定

<fo:table-column column-number="2" color="green" number-columns-spanned="2"/>

如果这两个 都在第二列中:

<fo:table-cell color="from-table-column()">
<fo:table-cell number-columns-spanned="2" color="from-table-column()">

只有 second table 单元格会呈现绿色文本。

这允许对跨越不同列数的 table 单元格进行单独格式化;例如:

<fo:table-column column-number="2" color="red"/>
<fo:table-column column-number="2" background-color="lightgray" color="green" number-columns-spanned="2"/>

将提供使用 from-table-column() 函数为任何 单列 [=54] 中的文本着色的机会=] table-第二列中的单元格为红色,同时为 table- 单元格呈现浅灰色背景,并以绿色文本延伸到第二和第三列。

一分迷茫。规范对 from-table-column():

有这样的说法

The from-table-column function returns the inherited value of the property whose name matches the argument specified, or if omitted for the property for which the expression is being evaluated, from the fo:table-column whose column-number matches the column for which this expression is evaluated and whose number-columns-spanned also matches any span. If there is no match for the number-columns-spanned, it is matched against a span of 1. If there is still no match, the initial value is returned.

我觉得这有点令人困惑,所以这是翻译。假设您的

中只有以下 元素
<fo:table-column column-number="2" color="red" font-weight="bold"/>

出现在您 table 的第二列中:

<fo:table-cell number-columns-spanned="2" color="from-table-column()" font-weight="from-table-column()">

格式化程序将检查是否有第 2 列 number-columns-spanned="2"。查找 none、 它将继续使用单列 并将文本呈现为红色和粗体