
本文介绍如何利用 xslt 3 和 saxon-he(通过 python 的 `saxonche` 库)对嵌套 `` 标签的 ` ` 段落中特定软件名进行精准包装,依据 json 提供的上下文和规范化名称实现语义化标注,避免正则误匹配与 dom 结构破坏。 在处理学术文献或技术文档的 XML 数据时,常需从富文本段落(如含 、 等内联标签的 )中识别并标注软件名称(如 “MODELLER”、“PROSA”)。难点在于:软件名可能夹杂在纯文本与子元素之间,传统字符串替换会破坏结构,而仅靠 itertext() 或 lxml 的文本遍历又难以精确定位到原始上下文中的确切位置——尤其当 JSON 注释数据提供了带偏移量(offsetStart/offsetEnd)和完整上下文句子(context)时,应优先利用该语义信息而非盲目模式匹配。 XSLT 3 提供了强大且声明式的解决方案:它原生支持 JSON 解析(parse-json() / json-doc())、高阶迭代(xsl:iterate)、隧道参数(tunnel="yes")以及正则感知的文本分析(analyze-string),完美契合本任务需求。以下是一个可直接运行的端到端方案: The reliability of the model structure was tested using the ENERGY commands of MODELLER (Sali and Blundell, 1993). The modelled structures were also validated using the program PROSA (Wiederstein and Sippl, 2007). 内纯文本拼接结果(string-join($p//text(), '')),确保仅在真实语境中触发标注,杜绝跨句误包。 ,将按 JSON 顺序依次包装(无嵌套冲突)。 此方案摒弃了易出错的手动 DOM 拆解逻辑,以声明式、可验证、可复用的 XSLT 实现精准语义标注,是处理结构化文本中实体识别任务的专业级实践。✅ 步骤一:安装依赖
pip install saxonche
✅ 步骤二:编写 XSLT 脚本(wrap-software.xsl)
✅ 步骤三:Python 调用执行(wrap.py)
from saxonche import PySaxonProcessor
# 加载 XML 和 XSLT
xml_content = '''
⚠️ 注意事项与最佳实践










