2

XSL-FOマーカーを使用してランニングヘッドを生成していますが、本のタイトルを取得できません。回避策はありますが、もっとエレガントな解決策があるはずだと思いました。本のタイトルは本の冒頭にテキストとしてのみ表示されるため、私のマーカーは静的コンテンツと同じページシーケンスにありません。ページ外のマーカーを取得するメカニズムはありますか?

PDF生成にXSLTFormatterV 4.3を使用していますが、結婚していません。

非常に単純化されたXMLの例:

<book>
<bktitle>Alice in Wonderland</bktitle>
<chapter>
<chaptitle>Chapter 1</chaptitle>
<para>This is the story of Alice in Wonderland.</para>
</chapter>
</book>

XSL-FOのスニペット:

<fo:page-sequence master-reference="fm">
  <fo:title>Alice in Wonderland</fo:title>
  <fo:flow flow-name="xsl-region-body">
     <fo:block font-variant="small-caps">
        <fo:marker marker-class-name="book">Alice in Wonderland</fo:marker>Alice in Wonderland</fo:block>
  </fo:flow>
</fo:page-sequence>

<fo:page-sequence master-reference="body">
  <fo:title>Chapter 1</fo:title>
  <fo:static-content flow-name="header">
     <fo:block><fo:retrieve-marker retrieve-class-name="book"/></fo:block>
  </fo:static-content>
  <fo:flow flow-name="xsl-region-body">
     <fo:block font-variant="small-caps">
        <fo:marker marker-class-name="chapter">Chapter 1</fo:marker>Chapter 1</fo:block>
     <fo:block>This is the story of Alice in Wonderland.</fo:block>
  </fo:flow>
</fo:page-sequence>
4

2 に答える 2

1

次を使用すると機能するはずですretrieve-boundary="document"

<fo:retrieve-marker retrieve-boundary="document" retrieve-class-name="book"/>
于 2012-08-28T17:27:55.150 に答える
0

静的コンテンツは実際には静的であるため(結局のところ、本のタイトルは本の途中で変更されません)、のコンテンツをbktitle最初fo:page-sequenceに配置するのと同じロジックを使用して、それをに配置しfo:static-content/fo:blockます。

FOフォーマッターでは、保存するマーカーが1つ少なくなり、実行するマーカールックアップがかなり少なくなりますが、処理速度に測定可能な違いが生じることはおそらくないでしょう。

于 2015-11-16T17:28:54.837 に答える