如何配置xmllint或通过ALE忽略实体错误?
解决xmllint在ALE中提示HTML实体未定义的问题
下面提供几种可行的解决方式,按优先级推荐:
一、通过ALE配置xmllint启用HTML解析模式
直接在Vim配置文件(~/.vimrc或~/.config/nvim/init.vim)中添加以下代码,让ALE调用xmllint时使用HTML解析模式,自动识别 这类HTML实体:
let g:ale_xml_xmllint_options = '--html'
这个方法无需修改任何业务文件,配置一次就能生效,是最省心的方案。
二、在XML文件中添加DOCTYPE声明
如果允许修改XML文件,可以在文件开头添加XHTML的DTD声明,让xmllint加载支持HTML实体的规范:
<!DOCTYPE 你的根元素名 PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
把你的根元素名替换成你XML文件实际的根元素,这样xmllint就能通过DTD识别所有标准HTML实体。
三、过滤ALE中的实体错误提示(不推荐)
如果不想修改xmllint行为或文件内容,也可以让ALE直接过滤掉实体未定义的报错。在Vim配置中添加以下代码:
let g:ale_pattern_options = { \ '\.xml$': { \ 'ale_linters': ['xmllint'], \ 'ale_filter_messages': function('MyXMLLintFilter'), \ } \} function! MyXMLLintFilter(buffer, lines) return filter(a:lines, 'v:val !~# ''Entity .* not defined''') endfunction
这个方法只是隐藏错误,并没有真正解决实体不被识别的问题,仅适合临时应急场景。
内容的提问来源于stack exchange,提问作者klokop
相关产品推荐
相关产品推荐

