2012-02-28 72 views
0

我現在正在開發一個xslfo樣式表,它使用RenderX XEP處理器將內容設置爲2列顯示。但是,我仍然希望將這些表格作爲1列顯示,因爲它們更寬。我發現這篇文章非常有幫助:使用XEP處理器在多列xslfo中設置span屬性?

http://www.sagehill.net/docbookxsl/MultiColumns.html(向下導航「頁面列跨越「部分)

事實上,自從我使用XEP處理器,它不會讓我把一個@跨度=‘所有’屬性在包含我的表格元素的外部fo:block中,因爲那個fo:block不是fo:flow的直接子元素。所以,在這篇文章中使用了建議的解決方案,我將包含的fo:block更改爲fo:wrapper ,現在的FO看起來是這樣的:

<fo:wrapper font-size="80%" id="table_1ECAD9B3F5FC44A68240330AEFC1C2E2" space-after.optimum="1em" span="all"> 
    <fo:table border-bottom-color="black" border-bottom-style="solid" border-bottom-width="1pt" border-left-color="black" border-left-style="solid" border-left-width="1pt" border-right-color="black" border-right-style="solid" border-right-width="1pt" border-top-color="black" border-top-style="solid" border-top-width="1pt" id="" space-after.optimum="5pt" space-before.optimum="5pt" table-layout="fixed" width="100%"> 
.... 
    </fo:table> 
</fo:wrapper> 

沒有任何警告的消息現在在生成過程中,好像它做了接受fo:wrapper的@ span =「all」。但是,在生成的pdf中,表格仍然像以前一樣分成兩列。該文章指的是Docbook xslfo,而我正在使用XMetal附帶的自定義xslfo。

想知道是否有專家有類似的經驗(使用XEP,在多列環境中設置@span)共享?

回答

1

您提到的解決方法意味着<fo:block span="all">塊保持原樣,並且其所有<fo:block>祖先都替換爲<fo:wrapper>

像這樣的結構,

<fo:page-sequence master-reference="my-page"> 
    <fo:flow flow-name="xsl-region-body"> 
    <fo:block> 
     <fo:block> 
      <fo:block span="all"> 
      <fo:table> 
       ... 

需要與此替換:

<fo:page-sequence master-reference="my-page"> 
    <fo:flow flow-name="xsl-region-body"> 
    <fo:wrapper> 
     <fo:wrapper> 
      <fo:block span="all"> 
      <fo:table> 
       ... 
+0

非常感謝。 – Kevin 2012-03-04 16:05:43

+0

不客氣。你的樣式表祝你好運! – mzjn 2012-03-04 17:47:24

+0

你可以看看我的後續問題:http://stackoverflow.com/questions/9710903/put-a-spanning-table-in-its-own-page-sequence – Kevin 2012-03-14 22:00:16

1

只有當fo:flow的fo:block和fo:block-container屬性爲「span」屬性applies。所以,你的fo:wrapper需要變成一個fo:block。

+0

如果我把該FO:包裝到FO:塊,我仍然不能@span上使用它,因爲它不是一個流:直接的孩子。你能提出解決這個問題的方法嗎? – Kevin 2012-03-02 20:39:50