如何在xsl-fo中居中?

时间:2013-08-28 11:59:51

标签: css xml xslt xsl-fo

我试图将一个表集中在xsl-fo命名空间的块元素中。

以下是我的尝试:

 <fo:block margin-right="auto" margin-left="auto" background-color="#eaeaea">
     <fo:table margin-top="1cm" margin-left="auto" margin-right="auto" margin-bottom="1cm" width="auto">

这是输出:

enter image description here

如何将此表置于此块的中心?

谢谢。

3 个答案:

答案 0 :(得分:5)

根据规范,<table>通过在父text-align="center"元素上使用<table-and-caption>来居中。 <table-caption>兄弟是可选的,可以省略,使表格成为唯一的子节点。

请注意,将text-align放在父<block>上是行不通的......子<table>仍然是块级构造,不会受到影响。它必须位于父<table-and-caption>上。

我提醒我的XSL-FO学生,他们可能希望在text-align="start"上使用<table>,除非他们还希望由于属性在后代构造上的继承而使表的内容居中

我应该注意一下基于我的商业工作的后记,并非所有XSL-FO处理器都支持这方面的规范。

答案 1 :(得分:2)

如果我们有十个列,那么我们可以按如下方式将表放在中心

<fo:table width="100%">
  <fo:table-column column-width="10%">
  <fo:table-column column-width="10%">
  <fo:table-column column-width="10%">
  <fo:table-column column-width="10%">
  <fo:table-column column-width="10%">
  <fo:table-column column-width="10%">
  <fo:table-column column-width="10%">
  <fo:table-column column-width="10%">
  <fo:table-column column-width="10%">
  <fo:table-column column-width="10%">
 </fo:table>

答案 2 :(得分:1)

如果使用Apache FOP,他们会在这里解释一个表格中心技术: https://xmlgraphics.apache.org/fop/fo.html#fo-center-table-horizon