2017-12-20 27 views
1

私は中世の原稿をXMLでエンコードしています(TEIスキーマを使用しています)。原稿には、XSL:FOでxsl-region-bodyにマッピングされ、完全に出力される「ボディ」があります。原稿には、左右のマージンにもいくつかの「光沢」(注釈)があります。例えば、<add type="margin_gloss" place="left">Some foo note</add>XSL:FO身体からxsl-region-startとxsl-region-endに分かれた情報を流す方法

xsl-region-startxsl-region-endは、元の原稿の位置に関連してこれらのマージングロスを受け取るために予約しました。しかし、私はこれらの地域への '流れ'にマークアップされたテキストを得ることができません。

注:For "fo:page-sequence", only one "fo:flow" may be declared.

 <fo:page-sequence master-reference="odd"> 
      <fo:static-content flow-name="xsl-region-after" 
       font-family="Times" 
       font-size="8pt"> 
       <fo:block text-align="center">-<fo:page-number/>- 
       </fo:block> 
      </fo:static-content> 
      <fo:flow flow-name="xsl-region-end" 
       font-family="Times" 
       font-size="6pt"> 
       <xsl:call-template name="marginalia-right"/> 
      </fo:flow> 
      <fo:flow flow-name="xsl-region-body" 
       font-family="Times" 
       font-size="8pt" 
       space-before="8pt" 
       space-after="8pt"> 
       <xsl:apply-templates/> 
      </fo:flow> 
     </fo:page-sequence> 

私は抽出:私は何の問題例えば、これらの領域にハードコーディングされたデータを入れ、<fo:static-content flow-name="xsl-region-after">

問題は、以下のコードではApache FOPは私に言っていることですがありませんXSLテンプレートを使用したメモ:

<xsl:template match="//tei:add[@type='margin_gloss' and @place='right']" name="marginalia-right"> 
     <fo:block> 
      <xsl:value-of select="text()"/> 
     </fo:block> 
    </xsl:template> 

問題を要約すると、Xでマージングロスをマークしたいと思いますML とxsl-region-startxsl-region-endに表示されます。テキストの行に対しては、xsl-region-bodyです。 FPOは私が2回「流れない」ことを私に伝えます。

+0

おそらく、3列の 'xsl-fo tables'のような別の構造を使う必要がありますか?メインのコンテンツ(本文)は、表のセル内で視覚的に機能する段落に自然に壊れます。つまり、私は 'xsl-fo'でアプローチを再考することにはオープンしています。 – idjet

+0

float-leftとfloat-rightが機能しないのはなぜですか? marginaliaのように...この例を参照してくださいhttp://www.renderx.com/usecasestest.htmlとMarginalia –

答えて

2

region-startのコンテンツとregion-bodyのコンテンツを同期させることはできません。

ただし、region-bodyにコンテンツを配置し、その位置を操作してregion-startと重なるようにすることはできます。 XSL-FO providesfo:floatこれを行うためのメカニズム。

<fo:block --extra wide and a negative left margin to overlap the region-start> 
    <fo:float> this contains the margin note</fo:float> 
    <fo:block>this contains the body text linked to the note</fo:block> 
</fo:block> 

FOPのfo:floatはlimited supportです。市販のFOプロセッサー(私はAntennahouse Formatterを使用しています)は完全なサポートを提供しています。

+0

@ケビンブラウン両方のおかげで。私は今fo:floatを解決しようとしています。私はこれについて新しい投稿をする必要があるかもしれません。原則として、このようなテンプレートを使用してフロートを挿入する必要がありますか? ' – idjet

+0

はい、そのようなものです。 – Hobbes

+0

私はしばらくこの問題に取り組んできましたが、ここで新しい質問を投稿しました:https://stackoverflow.com/questions/47934126/xslfo-float-for-displaying-margin-notes-breaks-document – idjet

関連する問題