使用 xmllint 验证 odoo xml文件

Odoo 源码包含了2 relax ng 文件, 也是odoo sa用来验证xml的正确性的。

openerp/import_xml.rng

openerp/addons/base/rng/view.rng

   

阅读源码,发现odoo 装载xml 文件 以及加载 view到数据库的时候,会使用 lxml 调用 relax ng 来验证 XML文件,以及view 定义的正确性。

   

源码 addons/base/ir/ir_ui_view.py 里面的 _check_xml 方法

   

源码 tools/convert.py 里面的 convert_xml_import 方法

   

   

如果开发者 在开发时,就能验证 XML 的正确性, 就不用等到 安装模块时才发现XML 撰写错误。

   

下面就如何在 sublime text 平台使用 relax ng 验证XML

其他 IDE 自行 套用。

   

Sublime text 使用 sublimelinter - xmllint 插件

前提是 要安装好 xmllint, xmllint libxml2-utils 分发

   

安装 sublimelinter sublimelinter - xmllint.

   

使用 package control 管理 sublime text 的插件, sublimelnter sublimelinter -xmllint 加入到 package control 用户配置里,这样, Package control 将会 自动安装 添到 installed pakcages 里面的 插件

   

我的用户配置如下

   

{

"bootstrapped": true,

"git_binary":

[

"c:\\cygwin\\bin\\git.exe"

],

"in_process_packages":

[

],

"installed_packages":

[

"All Autocomplete",

"Anaconda",

"GitGutter",

"HTML-CSS-JS Prettify",

"Markdown Extended",

"Markdown Preview",

"MarkdownEditing",

"Package Control",

"SideBarEnhancements",

"SnippetMaker",

"sublime-odoo-snippets",

"SublimeGoogle",

"SublimeLinter",

"SublimeLinter-jshint",

"SublimeLinter-json",

"SublimeLinter-xmllint",

"SublimeREPL",

"Vintageous"

],

"repositories":

[

"https://github.com/sotogarcia/sublime-odoo-snippets"

]

}

   

   

从上面可以看出,我用cygwin来运行 linux tools… 所以我的 xmllint 也是 cygwin 下运行的。 如果你是其他的平台,按照OS选择安装合适的 xmllint

   

   

安装 sublimelinter -xmllint 之后, 最重要的事情,就是 配置 sublimelinter…

   

进入 sublimelinter 用户配置

   

xmllint 小节 修改配置

   

增加 xmllint 参数。。。

"args": [

"--relaxng",

"e:\\view.rng",

"--relaxng",

"e:\\import_xml.rng",

],

   

其中 view.rng import_xml.rng relax ng 文件的存放位置。

   

   

   

jeffery 2024年4月23日
标签
存档
postgreSQL 统计