2013-07-29 21 views
0

在XSL-FO中,将纯文本对齐到文档的右侧很容易。但是,将整个表格对齐到文档的右侧是相当困难的。Float整个表右 - XSL-FO

我希望做的是这样的:

fo:table align=left 

{Table content} 

/fo:table 

而且据我所知,有一个<fo:float>对象,但它似乎并不在我希望的方式工作,或者如果它确实,对于它是如何工作的解释在我找到的每一个例子中措辞都很差。

简而言之:如何让表格在XSL-FO的左边浮动?

编辑:我想通了为什么浮动不起作用。显然它在我们的Apache FOP版本中不受支持。任何已知的选择?

回答

3

术语“float”在XSL-FO中有特定的含义。如果您的意思是将表格从垂直流程中取出,请将其放在页面的开始一侧,并让表格的其余部分在表格的结尾处继续,然后使用<float float="start"><table>...</table></float>即可完成XSL-FO。

你的问题的标题和文字谈论浮动到“正确”,所以然后我假设你的意思是浮动到页面的末端。那当然是<float float="end">

如果您不打算将表格从流程中移出,而只是简单地将表格对齐并将表格对齐到页面的末尾,则可以使用<table-and-caption text-align="end">在XSL-FO中完成然后不使用标题。但并不是所有的商业XSL-FO引擎都支持这方面的规范。

我不能在FOP上给您建议,因为它不是我用于我的任何客户的工具。

+0

我对我的解释的松散性质表示歉意。我承认,当谈到技术术语(比如“浮动”对象的确切含义)时,我倾向于比我应该少一些雄辩。 不幸的是,我试过使用你的解决方案(顺便说一句,你确定它是而不是),但它似乎不适用于我的FOP版本(无论是哪种情况)。 但是,如果他们使用不同的驱动程序,我不会阻止其他人使用它。 – Zibbobz

+3

在我的样式表中,我使用'xmlns =“http://www.w3.org/1999/XSL/Format”',这样我就可以编写没有前缀的''。关于“fo:”前缀没有什么特别之处......如果是'xmlns:hello =“http://www.w3.org/1999/XSL/Format”',它可能是''。 –

0

经过一番实验,我想出了一个解决方案。至少可以说,这是......不雅,但它很有效。这将产生一个右对齐7厘米的桌子,3厘米柱子和5厘米柱子,尽管它会阻止用户将任何内容写入桌子的左边,除非非常仔细地将其格式化为空白的7厘米柱子。

fo:table width="15cm" 
fo:table-column column-width="7cm"/ 
fo:table-column column-width="3cm"/ 
fo:table-column column-width="5cm"/ 
fo:table-row 
fo:table-cell border="none" 
[Intentionally left blank] 
/fo:table-cell 
fo:table-cell border="solid" 
[Content of 3cm column] 
/fo:table-cell 
fo:table-cell border="solid" 
[Content of 5cm column] 
/fo:table-cell 
/fo:table-row 
/fo:table 

注意,这有一些缺陷(不能够写入表的左侧没有明确地格式化每一行,是非常不雅的),但它工作在Apache的FOP的解决方案。

+0

不是优雅的,而不是一个浮点数,即格式化三列表的两列内容。 “浮动”意味着让我浮动,并让内容在我周围流动。所以它不是真正的答案你的问题,除非你措辞不正确。 –

+0

我想这是对我的问题的解决方案,而不是对问题的实际答案。一个理想的答案将适用于任何情况,并允许文本环绕(在这种情况下,我实际上并不希望这样做,但我试图提出一个问题,可能会导致一个答案,而不仅仅是我的情况)。 – Zibbobz