2

在我的基于文本的 XML 语料库中,我有很多不同数据的标记(使用 TEI 模式)。作为将这些文档转换为 PDF 的过程的一部分,我将其预处理为一个简化的文件,以便 xsl:fo 进行转换。在该预处理中,我通过查找标记并添加来分配脚注编号<sup>incremented integer</sup>.

像这样的一行:

<p>
  <seg>
    <date type="deposition_date">Item anno et die quo supra</date>. <persName>P Lapassa Senior</persName> testis iuratus idem per omnia quod predictus <persName>Hugo de Mamiros</persName>.
  </seg>
</p>

用这个处理:

<xsl:template match="tei:date">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy><sup><xsl:number count="date[@type='deposition_date'" from="tei:p" format="1" level="any"/></sup>
</xsl:template>

输出这个(注意 的新行<sup>):

<p>
  <seg>
    <date type="deposition_date">Item anno et die quo supra</date>
    <sup>1</sup>. <persName>P Lapassa Senior</persName> testis iuratus idem per omnia quod predictus <persName>Hugo de Mamiros</persName>.
  </seg>
</p>

结果是当 xsl:fo 处理<sup>成上标时,目标和上标之间有一个空格,像这样:

项目 anno et die quo supra 1。P Lapassa Senior testis iuratus idem per omnia quod predictus Hugo de Mamiros。

有没有办法阻止在复制过程中引入新的行/回车?

附加信息:我<xsl:strip-space elements="*"/>在 xsl 文档中。针对 Saxon PE 9.6 和 HE 9.8 进行了测试。

提前致谢。

4

1 回答 1

1

如果您想要缩进输出,但有些元素具有混合内容,让系统在包含的元素之前或之后插入空格是不安全的,您可以使用新的 XSLT 3.0suppress-indentation属性来控制它。例如,将停止在元素<xsl:output indent='yes' suppress-indentation='p'/>内容中插入任何空格。p

于 2017-12-28T09:34:42.420 回答