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

XSLT统计TEI文档tei:lb标签并嵌入行号展示功能集成求助

原代码失效原因

你之前编写的XPath条件逻辑存在根本性错误:tei:lb[tei:lb[position() mod 5 = 0]] 这个表达式的含义是查找自身包含子<tei:lb>节点、且子节点位置模5等于0的<tei:lb>,完全不符合统计全局所有<tei:lb>顺序的需求。此外默认position()函数仅统计当前父节点下的子节点顺序,跨层级的TEI结构会直接导致计数错误。


正确集成方案

你可以直接在现有<tei:lb>转换模板的注释标注位置插入以下代码,完全适配结构各异的TEI文件,无需调整原有连字符、换行逻辑:

<!-- 计算当前tei:lb的全局唯一序号 -->
<xsl:variable name="currentLineNum" select="count(//tei:lb[. << current()]) + 1"/>
<!-- 每n行插入带行号的span标签,此处n=5可自行修改模数调整间隔 -->
<xsl:if test="$currentLineNum mod 5 = 0">
  <span class="tei-line-number" data-line="{$currentLineNum}">
    <xsl:value-of select="$currentLineNum"/>
  </span>
</xsl:if>

补充说明

  • 上述代码适用于XSLT 2.0及以上版本,如果使用XSLT 1.0,将变量定义替换为兼容写法即可:
    <xsl:variable name="currentLineNum" select="count(//tei:lb[generate-id(.) != generate-id(current()) and count(. | current()/preceding::tei:lb) = count(current()/preceding::tei:lb)]) + 1"/>
    
  • 如需统计所有<tei:lb>的总数量,直接调用count(//tei:lb)即可获取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:09:02