使用 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 文件的存放位置。
使用 xmllint 验证 odoo xml文件的更多相关文章
- 1.在配置XML文件时出现reference file contains errors (http://www.springframework.org/schema/beans/...解决方案
解决方案: 第一步:将 Preferences > XML > XML Files > Validation中"Honour all XML schema location ...
- Eclipse关闭XML文件验证的方法
XML的编写是否符合规范,可以通过XML Schema或DTD进行验证,但有时候电脑本来就很卡,而且XML的某些错误并未导致程序无法运行的情况下,暂时关闭XML的验证也算不错的选择. 如web.xml ...
- mybatis,Spring等工具对xml文件正确性的验证
我们知道mybatis或者spring都是使用xml文件作为配置文件,配置文件的格式都是定义在叫做.dtd或者.xsd文件中的,当工具在解析用户自己定义的xml文件的时候,如何才能知道用户自定义的文件 ...
- Eclipse关闭XML文件验证的方法,解决xml警告
XML的编写是否符合规范,可以通过XML Schema或DTD进行验证,但有时候电脑本来就很卡,而且XML的某些错误并未导致程序无法运行的情况下,暂时关闭XML的验证也算不错的选择. 如web.xml ...
- java struts2入门学习--基于xml文件的声明式验证
一.知识点总结 后台验证有两种实现方式: 1 手工验证顺序:validateXxx(针对Action中某个业务方法验证)--> validate(针对Action中所有的业务方法验证) 2 声明 ...
- Java 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包)
ava 使用poi导入excel,结合xml文件进行数据验证的例子(增加了jar包) 假设现在要做一个通用的导入方法: 要求: 1.xml的只定义数据库表中的column字段,字段类型,是否非空等条件 ...
- 史上最全的maven的pom.xml文件详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Java Web的web.xml文件作用及基本配置(转)
其实web.xml就是asp.net的web.config一个道理. 说明: 一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的. web.xml文件是用来 ...
- WebAPI使用多个xml文件生成帮助文档
一.前言 上篇有提到在WebAPI项目内,通过在Nuget里安装(Microsoft.AspNet.WebApi.HelpPage)可以根据注释生成帮助文档,查看代码实现会发现是基于解析项目生成的xm ...
随机推荐
- Jmeter生成8位不重复的随机数
jmeter的time函数${__time(,)} : 默认该公式精确到毫秒级别, 13位数 ${__time(/1000,)} : 该公式精确到秒级别, 10位数 ${__time(yyyy- ...
- 2017"百度之星"程序设计大赛 - 初赛(A)
小C的倍数问题 Accepts: 1990 Submissions: 4931 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 327 ...
- sqlserver修改一个列
--修改一个列alter table UserInfo alter Column [Address] nvarchar(64) null
- hdu3667
Transportation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...
- ruby操作mysql
require "win32ole" require 'pathname' require 'mysql2' excel = WIN32OLE.new('excel.applica ...
- ACM程序设计选修课——1018: Common Subsequence(DP)
问题 L: Common Subsequence 时间限制: 1 Sec 内存限制: 32 MB 提交: 70 解决: 40 [提交][状态][讨论版] 题目描述 A subsequence of ...
- 【前端学习笔记】2015-09-02 附~~~~~ajax简单请求和获得响应结果
首先得创建一个请求XMLHttpRequest对象,var xmlhttp=window.XMLHttpRequest?new XMLHttpRequest() : new ActiveXObjec ...
- APUE 学习笔记(一) Unix基础知识
1. Unix 体系结构 内核的接口被称为系统调用 公用函数库构建在系统调用接口之上 应用软件既可以调用公用函数库,也可以直接进行系统调用 2. 文件和目录 目录操作函数:opendir--- ...
- 【BZOJ1103】大都市meg(DFS序,树状数组)
题意:有一颗树,1号点为根,保证编号小的点深度较小,初始状态每条边都没有被标记,要求实现两个操作在线: A:将连接x,y的边标记 W:查询从1到x的路径上有多少条边未被标记 n<=2*10^5 ...
- net4:MultiView(view)行为中的commmandname与commmandargument,ListBox的使用及移动操作
原文发布时间为:2008-07-29 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...