XSL 阻止复制中的新 whitespace/line return

XSL prevent new whitespace/line return in copy

在我基于文本的 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>处理成上标时,目标和上标之间有一个space,像这样:

Item anno et die quo supra 1. P Lapassa Senior testis iuratus idem per omnia quod predictus Hugo de Mamiros.

有没有办法阻止在复制过程中引入新的 lines/carriage returns?

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

提前致谢。

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