在表行上是不是有“keep-together='always'”的替代方法?
Posted
技术标签:
【中文标题】在表行上是不是有“keep-together=\'always\'”的替代方法?【英文标题】:Is there an alternative to "keep-together='always'" on table-row?在表行上是否有“keep-together='always'”的替代方法? 【发布时间】:2012-12-05 14:48:59 【问题描述】:在找到“keep-together”属性并且不需要在行内分页后,我在我的 xslt 中的每个 table-row 元素上添加了keep-together="always"
。
有没有更好的方法来达到同样的效果?这似乎有点hacky。
(ps。如果没有人提供更好的答案,我会接受“不”作为答案,前提是提供某种解释。)
【问题讨论】:
【参考方案1】:keep-together="always"
很危险,因为这是一个复合属性,它也间接设置了keep-together.within-line="always"
(禁止在表格单元格内换行)。您应该改用keep-together.within-column="always"
。但是在表格行上指定它实际上是要走的路。没什么可笑的。
另请参阅:http://www.w3.org/TR/xsl11/#datatype
【讨论】:
我怎样才能在更多的行上使用这些来始终在一个站点上显示它?我尝试在更多行上使用一个块,但它不起作用:( 这是 fo:table-row 上 keep-with-next.within-column="always" 的情况(假设您正在谈论一张桌子)。您可能需要在此处结合 keep-together 和 keep-with-next(或 -previous)。 我在使用keep-together="always"
禁止表格单元格内的换行符时遇到了问题。非常感谢您的解释。 keep-together.within-column="always"
帮助了我,使整个表格在溢出时中断,但在表格单元格内保持换行符完整。【参考方案2】:
当我需要将表格锁定在一起时,这个答案解决了我的表格行在分页符上流动的问题。我用<fo:table keep-together="always"></fo:table>
谢谢。
【讨论】:
【参考方案3】:我使用以下三种方法将表格行保持在一起并取得了一些成功:
将整个区块保持在一起
<tr keep-together.within-page="always">
...
</tr>
将相邻的块保持在一起
<tr keep-with-next.within-page="always">
<td keep-together.within-page="always">...</td>
...
</tr>
<tr>...</tr>
<tr>...</tr>
<tr keep-with-previous.within-page="always">
<td keep-together.within-page="always">...</td>
...
</tr>
尽管您必须小心 - 如果行或单元格将跨越生成文档的多页,您将失去该页面的底部!
【讨论】:
【参考方案4】:使用处理整数保留的 XSL 格式化程序,您可以使用整数值,以便格式化程序将尝试将行保持在一起,但会破坏行而不是跑出页面的末尾。然而,这个问题被标记为 FOP,并且 FOP 的合规页面目前声明它对整数保持 (http://xmlgraphics.apache.org/fop/compliance.html#fo-property-keep-together) 的支持有限,所以 YMMV。
【讨论】:
以上是关于在表行上是不是有“keep-together='always'”的替代方法?的主要内容,如果未能解决你的问题,请参考以下文章
应该插入还是更新新数据?当我尝试在表行中插入空值时,为啥会死锁?
根据 URL 参数重定向,如果 URL 参数在表行中可用 - PHP MySQL
无法添加表行,因为“当 IDENTITY_INSERT 设置为 OFF 时,无法在表 'Users' 中插入标识列的显式值”错误