私は、以下の単純化されたXML構造のXSL-FO 3.0変換に基づいてPDFを生成する大規模コーパスを持っている:XSL-FOの改ページ、未亡人や孤児
<corpus>
<deposition>
<text>
<deposition-title>foo title</deposition-title>
<seg>foo paragraph 1</seg>
<seg>foo paragraph 2</seg>
<seg>foo paragraph 3</seg>
<appnotes>
<appitem>foo apparatus item 1</appitem>
</appnotes>
<footnotes>
<footitem>foo note 1</footitem>
<footitem>foo note 1</footitem>
</footnotes>
</text>
</deposition>
<deposition>
<text>
<deposition-title>foo title</deposition-title>
<seg>foo paragraph 1</seg>
<seg>foo paragraph 2</seg>
<appnotes/>
<footnotes>
<footitem>foo note 1</footitem>
</footnotes>
</text>
</deposition>
[...]
</corpus>
私はXSL-FO 3.0を使用するようになります。以下の(上付き文字や斜体のためのマイナスいくつかのインラインマークアップは):一般的に次のようになりますように
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
xmlns:xd="http://www.pnp-software.com/XSLTdoc"
version="3.0">
<xsl:template match="/">
<fo:root>
<fo:layout-master-set>
<fo:simple-page-master
master-name="page-recto"
page-height="29.7cm" page-width="21cm"
margin-top="2cm" margin-bottom="2cm"
margin-left="3cm" margin-right="1.5cm">
<fo:region-body
region-name="xsl-region-body"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="page-recto">
<fo:flow flow-name="xsl-region-body"
font-family="Times" font-weight="normal"
font-size="8pt" space-before="8pt" space-after="8pt"
text-align="justify" end-indent="120pt">
<xsl:apply-templates/>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="text">
<fo:block widows="10" orphans="10"
font-size="9pt" font-weight="bold"
padding-bottom="1cm" end-indent="120pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="seg">
<fo:block
font-family="Times" font-weight="normal" line-height="12pt" line-stacking-strategy="font-height"
font-size="10pt" space-before="10pt" space-after="10pt" text-align="justify" end-indent="120pt">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="appnotes">
<xsl:choose>
<xsl:when test="./appitem">
<fo:leader leader-pattern="rule" leader-length="2cm" rule-style="solid" rule-thickness=".2pt"/>
<fo:block font-size="8pt" font-weight="normal" end-indent="120pt">
<xsl:for-each select="./appitem">
<fo:inline keep-together="always"><xsl:apply-templates/>   </fo:inline>
</xsl:for-each>
</fo:block></xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="footnotes">
<xsl:choose>
<xsl:when test="./footitem">
<fo:leader leader-pattern="rule" leader-length="2cm" rule-style="solid" rule-thickness=".2pt"/>
<xsl:for-each select="./footitem">
<fo:block font-size="8pt" font-weight="normal" end-indent="120pt">
<xsl:apply-templates/>
</fo:block>
</xsl:for-each>
<fo:leader leader-pattern="rule" leader-length="2cm" rule-style="solid" rule-thickness=".2pt"/>
</xsl:when>
<xsl:otherwise>
<fo:leader leader-pattern="rule" leader-length="2cm" rule-style="solid" rule-thickness=".2pt"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
それは繰り返しセクションを生成します。
しかし、XSL-FOは、いくつかの改ページ、私は一緒に保つの組み合わせを使用して解くことができないような問題、未亡人、孤児など<seg>
<deposition-title>
休憩を生成
<seg>
<appnotes>
から休憩と<footnotes>
目標:最終<seg>
<seg>
<appnotes>
と<footnotes>
スティックに
<deposition-title>
スティック:私はどんな<text>
を壊すページについて、次の2つのルールを適用したいのですが
事前の感想をお寄せいただきありがとうございます。あなたは
<xsl:template match="deposition-title">
<fo:block keep-with-next="always">
<xsl:apply-templates/>
</fo:block>
</xsl:template>
を追加する場合
驚くほど簡単です。どうもありがとう! – idjet
私は結果をよりよく調べるので、このソリューションは最初のsegブロックでタイトルを保持するように働いたことに気付きました。しかし、それはappnotesと脚注のためにそうしていない:私は既存のテンプレート内のすべてをとって、 ''で囲んだ。例えば、最初の ''は残りのappnotesから分割されます。ありがとう。 –
idjet
あなたはappnotesと脚注のために1つの 'fo:block'ラッパーを持っていますか?また、質問に情報を追加したり、どのFOプロセッサを使用しているかを示すタグとして、XSL-FOプロパティが実際にどのように機能しているかについての知識がある程度認められていますが、 FOプロセッサーについて言及すると、より具体的な提案を与えることができるさまざまな製品の経験豊富なユーザーがいることを示唆しています。 –