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

XSLT转换HTML为XML时,XML声明未输出encoding属性问题咨询

问题描述

我需要生成包含encoding属性的XML声明,期望格式:

<?xml version="1.0" encoding="UTF-8"?>

使用以下XSLT代码将HTML转换为XML:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output 
        method="xml" 
        encoding="utf-8"
        omit-xml-declaration="no"   
        indent="yes"/>
<xsl:template match="/">
</xsl:template>

</xsl:stylesheet>

但执行后得到的XML声明仅为:

<?xml version="1.0"?>

请问如何配置才能让XML声明正确输出encoding属性?

解决方法
  • 确认输出目标类型:如果XSLT处理器将结果输出到内存字符串,部分处理器会省略encoding属性(因为字符串本身不携带编码信息)。此时需将结果输出到文件或字节流,处理器会根据encoding配置自动补充属性。
  • 检查处理器特性:不同XSLT处理器(如Xalan、Saxon)对xsl:output的处理逻辑有差异。例如部分处理器在输出到控制台时不会显示encoding,但写入文件时会正常生成。
  • 显式添加standalone属性:尝试在<xsl:output>中加入standalone="yes"(或no),部分处理器会因该属性的存在,完整输出包含encoding的XML声明:
    <xsl:output 
            method="xml" 
            encoding="utf-8"
            omit-xml-declaration="no"   
            indent="yes"
            standalone="yes"/>
    
  • 补充模板内容:当前模板match="/"为空,仅会输出XML声明(若生效)。若需处理HTML内容,需完善模板逻辑以输出节点,但这不影响encoding属性的生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:04:56