xml tools 插件右键无“format document”是因未绑定格式化器,需在语言特定设置中启用 xmltools.format.enable 并确认文件语言模式为 xml;格式异常需配置 xmltools.format.splitattributes 和 indentsize;保存自动格式化需开启 xmltools.format.enableonsave;校验需显式声明 dtd/xsd 路径。

XML Tools 插件装了但右键没“Format Document”选项
VSCode 默认不把 XML Tools 的格式化功能注册为文档级格式化提供者,所以即使插件已启用,右键菜单也不会出现 Format Document。这不是安装失败,而是需要手动绑定格式化器。
- 打开命令面板(
Ctrl+Shift+P或Cmd+Shift+P),输入并执行Preferences: Configure Language Specific Settings... - 选择
xml,在打开的settings.json片段中添加:"xml.format.enable": true,
- 确保当前文件后缀是
.xml且语言模式识别正确:右下角状态栏应显示XML(不是Plain Text或Auto);若不对,点击它手动选XML
格式化后缩进错乱或属性换行异常
XML Tools 默认用 libxmljs 引擎,对缩进和属性排布有固定规则,不支持像 Prettier 那样高度自定义。常见表现是:所有属性被强制挤到一行,或每行一个属性但缩进多出空格。
- 关键配置项是
xmlTools.format.splitAttributes:设为true会每行一个属性,false则尽量塞一行(但受行宽限制) -
xmlTools.format.indentSize控制缩进空格数,默认 2;若项目要求 4,必须显式设为4 - 注意:这些配置只对
xmlTools.format.*开头的项生效,不要误配成xml.format.*(那是 VSCode 内置 XML 支持的配置) - 如果用了 DTD 或 XSD 校验,某些结构(如混合内容节点)可能被引擎误判为不可格式化,导致跳过该段 —— 这不是 bug,是解析器保守策略
保存时自动格式化不触发
XML Tools 不接管 VSCode 的 editor.formatOnSave 全局开关,必须单独为 XML 启用,且依赖语言模式准确识别。
- 在设置里搜索
format on save,确认全局Editor: Format On Save已开启 - 再搜索
xml format on save,勾选Xml > Format: Enable On Save(对应配置项xmlTools.format.enableOnSave) - 若仍不生效,检查文件是否被其他插件劫持语言模式(比如某些 REST 客户端插件会把
.xml当作响应体强行设为plaintext) - 临时验证方式:手动执行
Format Document With...→ 选XML Tools,能成功就说明格式化器本身没问题
校验时报错 “Unable to validate … no DTD or XSD found”
XML Tools 的校验功能默认只做基础 Well-formed 检查,要启用 DTD/XSD 校验,必须显式声明 schema 路径,不能靠文件名或注释自动发现。
- 在 XML 文件顶部,用标准
DOCTYPE声明关联 DTD:路径需为相对当前文件的路径,不支持 <code>http://</code> 或绝对路径
- 用 XSD 时,必须在根元素加
xsi:schemaLocation属性,并确保xmlns:xsi正确声明,否则插件无法提取 targetNamespace - 校验错误不会阻止格式化,但会在 Problems 面板显示;若想关闭校验只留格式化,关掉
xmlTools.validation.enable即可 - 注意:校验器不缓存远程 schema,每次保存都会重新拉取 —— 如果本地没配代理又连不上公网,会卡住几秒并报超时
./schema.xsd 而实际是 ../schemas/schema.xsd,都会让校验静默失效。











