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

如何通过XSLT将TEI中带break='no'的<lb>转为无空格|分隔形式

解决TEI转HTML时<lb break="no"/>前后空格统一问题

要让两种TEI场景Gio <lb n="2" break="no"/>vanni和Gio<lb n="2" break="no"/>vanni都输出Gio|vanni,核心是自动清理<lb break="no"/>前的多余空格,同时保留原文档的其他格式。可以通过以下XSLT模板实现:

核心XSLT代码

<!-- 匹配后面紧跟lb[break='no']的文本节点,修剪末尾空格 -->
<xsl:template match="text()[following-sibling::node()[1][self::lb[@break='no']]]">
  <xsl:value-of select="replace(., '\s+$', '')"/>
</xsl:template>

<!-- 匹配break="no"的lb标签,替换为| -->
<xsl:template match="lb[@break='no']">
  <xsl:text>|</xsl:text>
</xsl:template>

<!-- 保留其他lb标签的默认处理(比如break="yes"的换行) -->
<xsl:template match="lb[not(@break='no')]">
  <br/>
</xsl:template>

逻辑说明

  1. 第一个模板专门处理**后面紧跟<lb break="no"/>**的文本节点:用replace(., '\s+$', '')去掉文本末尾的所有空白字符(空格、制表符、换行都包含),确保Gio 变成Gio。
  2. 第二个模板把所有<lb break="no"/>直接替换成|,不管前面有没有空格。
  3. 第三个模板保留普通<lb>(比如带break="yes"或无break属性的)的换行功能,输出HTML的<br/>。

VS Code使用步骤

  1. 把上述模板添加到你的现有XSLT样式表中,确保模板优先级正确(如果有其他<lb>处理模板,调整匹配规则避免冲突)。
  2. 安装VS Code的XSLT Transformer插件,右键TEI文档选择Transform with XSLT,选择你的样式表生成HTML。
  3. 用Live Server插件打开生成的HTML文件,即可看到统一的Gio|vanni输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 07:47:21