本文介绍如何在xslt 2.0中准确、高效地将含html实体(如`ü`、`à`)的文本内容还原为对应unicode字符,无需手动枚举所有实体,借助成熟的开源html解析器实现健壮转换。
在实际XML数据集成场景中,常遇到源系统将富文本以“转义后HTML字符串”形式嵌入元素内容(如 Lenevo100 für Laser),而目标系统需原始可读文本(fÜr)。若仅用 replace() 或 translate() 处理,不仅代码冗长,更难以覆盖HTML标准中数百个命名实体(如 ©, , é)及数字实体(ü, À),且易遗漏大小写变体或上下文依赖行为(如 & 自身需优先解码)。
推荐方案是复用David Carlisle开发的纯XSLT 2.0 HTML解析库 —— htmlparse.xsl。该库完全基于XSLT原生函数实现,无需外部Java扩展或预处理,支持完整HTML 4/5命名实体表、十进制/十六进制字符引用(ü / ü)、嵌套实体解析,并自动处理实体边界与空格规范化。
以下为完整可运行示例:
✅ 关键说明与最佳实践: