将jing和trang relax ng工具包装到python脚本中
jingtrang的Python项目详细描述
jingtrang是基于java的命令行工具的包装器,用于处理relax ng模式。
动机
RELAXNG特别是紧凑的XML结构描述形式非常有效。
不幸的是,对于python,支持非常有限:
- lxml只允许验证基于xml的模式
- lxml基于libxml2库,在放松ng验证方面有一些小的限制(在某些情况下,您会发现诸如“todo”之类的错误消息)。
- 包rnc2rng很有希望从xml转换成压缩格式,但实际上不可用(它根本不起作用)。
一般来说,为compact-relax-ng语法找到命令行验证器甚至不是很容易的事。
RNV非常有前途,但SourceForge上的版本比较旧,Github上的版本没有最新的安装说明。
其他与relax ng相关的工具大多忽略紧凑语法。
唯一的例外是由googlecode托管的jingtrang项目。
这个工具的问题是,它只需要几步就可以很方便地从控制台安装到日常使用。
由于我们的团队在linux和ms-windows上工作,我一直在寻找跨平台的命令行解决方案。
由于jing trang命令(jing和trang)似乎运行得很好,我决定编写这个jing和trang包装器。
传送(py)jing和(py)trang命令行工具
最初的命令行工具名为jing(验证器)和trang(转换模式)。
为了防止命名冲突,使用前缀py。
命令行接口是完全相同的,就像在Java解释器中使用它一样,只需要简单的“java-jar<;jarfile.jar>;”部分就不需要调用。
这里只描述了最流行的用例,有关更多选项,请参考原始的jingtrang文档(从googlecode或其他地方下载并查看包含的html文档)。
安装
先决条件是:
- Python(2.7或3.4及更高版本)
- Java
- 点
安装方法:
$ pip install jingtrang
之后,将安装两个新脚本:
- pyjing-放松ng验证程序
- pytrang-用于在xml/compact syntax/xsd/少数其他格式之间转换的实用程序
注意
不需要安装jing.jar和trang.jar文件,因为它们已经包含在jintrangpython包中。
pyjing-relax ng验证器(xml和紧凑语法)
pyjing用于根据XML验证XML文档,以及压缩语法RELAX NG模式:
$ pyjing Jing version 20091111 usage: java com.thaiopensource.relaxng.util.Driver [-i] [-c] [-s] [-t] [-C catalogFile] [-e encoding] RNGFile XMLFile… RELAX NG is a schema language for XML See http://relaxng.org/ for more information.
要使用XML语法验证XML,请放松NG架构:
$ pyjing schema.rng file.xml
要使用紧凑语法模式进行验证,请使用-c开关:
$ pyjing -c schema.rnc file.xml
可以同时验证多个XML文件:
$ pyjing schema.rnc samples/*.xml
pytrang-模式格式转换器
pytrang是“模式语言转换器”,不仅支持relax ng xml和 简洁的语法,还有dtd、xsd。它甚至允许生成初始模式 基于示例XML文档。
尝试运行它:
$ pytrang fatal: at least two arguments are required Trang version 20091111 usage: java com.thaiopensource.relaxng.translate.Driver [-C catalogFileOrUri] [-I rng|rnc|dtd|xml] [-O rng|rnc|dtd|xsd] [-i input-param] [-o output-param] inputFileOrUri ... outputFile
pytrang能够从文件扩展名中自动检测格式,因此您基本上可以直接转换,而无需显式指定要使用的输入和输出格式。
将压缩语法转换为XML可以通过以下方法完成:
$ pytrang root.rnc root.rng
注意
如果在模式中使用include,则所有包含的模式也将被转换。
要从示例XML文件生成压缩格式的初始RELAX NG模式,请尝试:
$ pytrang sample.xml initial.rnc