XSLT 转换 XML 到 HTML 需处理器、命名空间匹配、模板优先级和输出方法协同;现代浏览器禁用内联 XSLT,须用工具链或本地 HTTP 服务;命名空间、模板选择、输出转义等细节极易出错。

XSLT 转换 XML 到 HTML 不是“运行一个命令”就能完事的事,它依赖处理器、命名空间匹配、模板优先级和输出方法三者协同;没配对好,浏览器直接空白或报错 XTDE0420。
浏览器里用 xsl:stylesheet 直接渲染 XML?别试了
现代浏览器(Chrome/Firefox/Edge)已默认禁用内联 XSLT 处理,XML 文件里写 大概率静默失败,连控制台都不报错。这不是你 XSL 写错了,是浏览器策略变了。
- 本地开发时,必须用支持 XSLT 的工具链:比如
saxon命令行、VS Code 的XML Tools插件、或 Node.js 的xslt-process - 若坚持在浏览器调试,得起一个本地 HTTP 服务(
npx http-server),且确保响应头Content-Type: text/xml和 XSL 文件可跨域访问 -
必须显式声明,否则默认输出xml,浏览器会当纯文本渲染,看不到结构
xsl:template match 匹配不到元素?先查命名空间
XML 带命名空间(比如 xmlns="http://example.com/ns")却没在 XSLT 里声明前缀,match="/root" 就永远不生效——XSLT 把无前缀的 root 当作“无命名空间”,而实际元素属于那个 URI。
- 在
根节点加xmlns:ns="http://example.com/ns",然后模板写成match="/ns:root" - 如果 XML 命名空间是默认(无前缀),XSLT 中不能用空前缀匹配,必须用
match="*[local-name()='root']"这类兜底写法(但性能差,仅应急) - 用
和 选哪个?看数据驱动逻辑
是过程式遍历, 是声明式分发——后者才是 XSLT 的设计本意,也更容易维护。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
立即学习“前端免费学习笔记(深入)”;
- 用
适合简单平铺,但无法复用模板、不能自然处理嵌套层级变化 - 用
后,每个item会按match规则自动找对应模板,父子结构、条件分支都更清晰 - 常见坑:
不带select时,默认处理所有子节点(包括文本节点),常导致多余空格或换行出现在 HTML 中,建议明确写select="*"或用
输出 HTML 时样式和脚本不生效?检查 disable-output-escaping
想让 XSLT 输出 被浏览器执行,而不是显示为文字,必须用 disable-output-escaping="yes",但这个开关有代价。
- 只对
或生效,且仅影响该节点内容,不是全局设置 - 误用会导致 XSS 风险(比如把用户输入直接
disable-output-escaping),生产环境应严格过滤 - HTML5 自闭合标签(如
、)在method="html"下会被自动补全为,无需手动写斜杠;但若用method="xml",就必须写全,否则解析失败
最麻烦的从来不是语法,而是 XML 命名空间和 XSLT 处理器版本差异——Saxon 10 默认用 XPath 3.1,而 libxslt(Linux 系统常用)只到 XPath 1.0,replace()、map 这些函数一用就报错 XPST0017。动手前,先 saxon -version 或 xsltproc --version 看清手里的刀是什么型号。










