XSL:FO如何将信息从body分离到xsl-region-start和xsl-region-end

问题描述 投票:1回答:1

我有一个用XML编码的中世纪手稿(使用TEI模式)。手稿有一个“身体”,已经在XSL:FO中映射到xsl-region-body并输出完美。手稿还在左右边缘有一些“光泽”(音符)。这些在XML文档中使用,例如<add type="margin_gloss" place="left">Some foo note</add>标记

我保留了xsl-region-startand xsl-region-end以获得相对于他们在原始手稿中的位置的这些边缘光泽。但是,我无法将标记的文本“流入”这些区域。

注意:将硬编码数据放入这些区域没有问题,例如<fo:static-content flow-name="xsl-region-after">

问题是,使用下面的代码Apache FOP告诉我: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>

我用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>

总结一下这个问题:我希望用<add>在XML中标记的边缘光泽出现在相对于xsl-region-start中文本行的xsl-region-endxsl-region-body中。 FPO告诉我,我不能'流'两次。

xml xslt xsl-fo tei
1个回答
2
投票

您无法将region-start中的内容与region-body中的内容同步。

但是,您可以将内容放在region-body中并操纵其位置,使其与region-start重叠。 XSL-FO provides fo: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有limited support for fo:float。商用FO处理器(我使用Antennahouse Formatter)提供全面支持。

© www.soinside.com 2019 - 2024. All rights reserved.