You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XSLT转XML为HTML时脚注引入多余空白的解决问询

解决XSLT转换混合XML时damage与note间的多余空白问题

针对你遇到的tei:damage与tei:note相邻时出现多余换行空白的问题,可通过以下几种精准方案解决:

方法一:全局过滤无意义纯空白文本节点

添加模板匹配所有仅包含空白的文本节点(可排除需要保留空白的父元素,比如段落),直接忽略这类无意义空白:

<!-- 忽略所有纯空白文本节点 -->
<xsl:template match="text()[normalize-space(.) = '']"/>

<!-- 若需保留特定元素(如tei:p)内的空白,调整为: -->
<!-- <xsl:template match="text()[normalize-space(.) = '' and not(parent::tei:p)]"/> -->

该方法简单高效,但需测试确认不会影响其他需要保留空白的内容排版。

方法二:精准处理damage与note相邻时的空白节点

仅针对tei:damage和tei:note前后的空白节点进行忽略,不影响其他元素间的空白:

<!-- 忽略damage后紧跟note时的中间空白 -->
<xsl:template match="text()[normalize-space(.) = '' and preceding-sibling::tei:damage and following-sibling::tei:note]"/>

<!-- 忽略note后紧跟damage时的中间空白 -->
<xsl:template match="text()[normalize-space(.) = '' and preceding-sibling::tei:note and following-sibling::tei:damage]"/>

方法三:结合strip-space与preserve-space指令

在样式表顶部添加指令,指定剥离damage和note元素相关的空白,同时保留需要空白的元素:

<xsl:strip-space elements="tei:damage tei:note"/>
<!-- 保留需要空白的元素,比如段落 -->
<xsl:preserve-space elements="tei:p"/>

注意:若damage元素内的文本需要保留有效空格,需结合你原有的normalize-space模板处理其内容,避免剥离内部空白。

补充说明

处理混合内容时,务必区分有意义空白(如段落内的单词间隔)和无意义空白(如XML元素间的换行缩进),根据实际需求选择方案。你的原有damage模板可继续保留,配合上述方案即可解决note与damage间的多余空格问题。

内容的提问来源于stack exchange,提问作者medievalmatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 16:21:11