XSL阻止复制中的新空格/行返回

时间:2017-12-28 00:10:40

标签: xml xslt saxon tei

在我基于文本的XML语料库中,我有很多不同数据的标记(使用TEI模式)。作为将这些文档转换为PDF的过程的一部分,我将其预处理为xsl:fo to transformation的简化文件。在该预处理中,我通过查找标记并添加<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文档中获得了<xsl:strip-space elements="*"/>。测试了Saxon PE 9.6和HE 9.8。

提前致谢。

1 个答案:

答案 0 :(得分:1)

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