XML声明必须顶格写在第一行开头,格式为,其中version必填且唯一合法值为"1.0",encoding和standalone可选,顺序不可颠倒,编码值须与文件实际编码一致。

XML声明是告诉解析器“这是一份XML文档”的第一行标识,它不是XML元素,而是处理指令,必须出现在文档最开头、第一行、第一个字符位置,前面不能有任何空格、换行或注释。
XML声明的基本结构
标准格式为:,其中三个属性有严格顺序和可选规则:
- version 是必需的,且必须是第一个属性,目前唯一合法值是 "1.0"(XML 1.1 已被弃用,实际不用);
- encoding 是可选的,用于声明文档文本的实际字节编码(如 UTF-8、UTF-16、GBK 等),若省略,默认按 UTF-8 解析;
- standalone 是可选的,取值只能是 "yes" 或 "no",表示该文档是否独立(即不依赖外部 DTD、实体或样式表等);默认为 "no"。
版本声明怎么写才合法
只写版本是最简形式,也是最低要求:
- ✅ 正确:(顶格、无空格、问号紧贴);
- ❌ 错误:(
中间有空格)、 xml version="1.0"?>(?和xml之间有空格)、或写在第二行。
注意:version 属性名不能拼错,引号必须是英文双引号,值必须加引号,且必须是字符串 "1.0"。
编码声明常见写法与注意事项
encoding 告诉解析器“用什么编码打开这个文件”,它必须紧跟在 version 后面,不能颠倒顺序:
- ✅ 推荐写法:(通用性强,兼容性最好);
- ✅ 其他可用值:"GBK"(中文 Windows 环境旧项目)、"ISO-8859-1"(西欧字符);
- ⚠️ 关键提醒:encoding 的值必须与文件实际保存的编码完全一致,否则会出现乱码或解析失败;
- ⚠️ 不要写成 "utf8"(缺短横线)或 "UTF8"(大小写不敏感但规范推荐大写+短横);正确是 "UTF-8"。
standalone 属性的实际意义
它影响解析器是否加载外部依赖:
- standalone="yes":表示该 XML 不引用任何外部 DTD、实体或外部参数,解析器不会尝试读取外部文件;
- standalone="no"(默认):允许引用外部 DTD,比如 这类声明才被允许;
- 若文档含外部引用却声明了 standalone="yes",部分严格解析器会报错。










