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 文件的存放位置。

使用 xmllint 验证 odoo xml文件的更多相关文章

  1. 1.在配置XML文件时出现reference file contains errors (http://www.springframework.org/schema/beans/...解决方案

    解决方案: 第一步:将 Preferences > XML > XML Files > Validation中"Honour all XML schema location ...

  2. Eclipse关闭XML文件验证的方法

    XML的编写是否符合规范,可以通过XML Schema或DTD进行验证,但有时候电脑本来就很卡,而且XML的某些错误并未导致程序无法运行的情况下,暂时关闭XML的验证也算不错的选择. 如web.xml ...

  3. mybatis,Spring等工具对xml文件正确性的验证

    我们知道mybatis或者spring都是使用xml文件作为配置文件,配置文件的格式都是定义在叫做.dtd或者.xsd文件中的,当工具在解析用户自己定义的xml文件的时候,如何才能知道用户自定义的文件 ...

  4. Eclipse关闭XML文件验证的方法,解决xml警告

    XML的编写是否符合规范,可以通过XML Schema或DTD进行验证,但有时候电脑本来就很卡,而且XML的某些错误并未导致程序无法运行的情况下,暂时关闭XML的验证也算不错的选择. 如web.xml ...

  5. java struts2入门学习--基于xml文件的声明式验证

    一.知识点总结 后台验证有两种实现方式: 1 手工验证顺序:validateXxx(针对Action中某个业务方法验证)--> validate(针对Action中所有的业务方法验证) 2 声明 ...

  6. Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)

    ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...

  7. 史上最全的maven的pom.xml文件详解

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  8. Java Web的web.xml文件作用及基本配置(转)

    其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...

  9. WebAPI使用多个xml文件生成帮助文档

    一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet.WebApi.HelpPage)可以根据注释生成帮助文档,查看代码实现会发现是基于解析项目生成的xm ...

随机推荐

  1. 【JavaScript】关于 eval()执行JavaScript语句的一次实验测试

    实验主题: eval() 函数可以计算某个字符串,并执行其中的 JavaScript 代码.该函数只接受原始字符串作为参数,如果 string 不是原始字符串,那么该方法将不作任何的改变的返回.因此请 ...

  2. Deep Android Malware Detection小结

    题目:Deep Android Malware Detection 作者:Niall McLaughlin, Jesus Martinez del Rincon, BooJoong Kang 年份:2 ...

  3. linux 下java jar包的方法

      test.java 和 example.jar 在同一目录:并且test.java引用了example.jar 首先编译test.java: javac -cp example.jar test. ...

  4. javascript基础 方法 函数 闭包 集合

    定义类 ,实例化对象类 ,调用 为类对象增加数据成员 --

  5. 设计模式(一)单例模式:1-饿汉模式(Eager)

    思想: 饿汉模式是最常提及的2种单例模式之一,其核心思想,是类持有一个自身的 instance 属性,并且在申明的同时立即初始化. 同时,类将自身的构造器权限设为 private,防止外部代码创建对象 ...

  6. 【Luogu】P2254瑰丽华尔兹(堆优化DP)

    题目链接 我也不知道为什么脑子一抽就想了个堆优化……然后贼慢…… 因为上午听不懂wys的电音专场(快速傅立叶变换),然后就做了这么一道题. 首先朴素DP很sb都能秒出.就是枚举时刻.位置(两维)然后转 ...

  7. BZOJ 3729 Gty的游戏 ——Splay

    很久很久之前,看到Treap,好深啊 很久之前看到Splay,这数据结构太神了. 之后学习了LCT. 然后看到Top-Tree就更觉得神奇了. 知道我见到了这题, 万物基于Splay 显然需要维护子树 ...

  8. bzoj3238 [Ahoi2013]差异 后缀数组+单调栈

    [bzoj3238][Ahoi2013]差异 Description Input 一行,一个字符串S Output 一行,一个整数,表示所求值 Sample Input cacao Sample Ou ...

  9. 进程与multiprocessing模块

    一 进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在 ...

  10. 超爽的Windows终端Cmder

    我们常常看到科研.军事.编程上用的计算机系统是"黑洞洞"的,没有桌面.相对我们现在使用的Windows系统,既方便又美观,那么他们怎么不用Windows一样的图形化界面呢? 告诉你 ...