将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.jartrang.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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Android上已连接音频输入设备的java列表   java是创建类的新对象还是使用静态方法?   Java:Shift/Rotate对象数组   Java Casting ArrayIterator<Object>   在java中返回布尔值时出错   无法确定文本文件读入程序(java)中的各种元素   Java Swing JToolBar   JAVAlang.IllegalStateException执行Ghost4J(Linux 32对64位)   jvm如何增加ubuntu系统的java堆化?   java CORS策略“AccessControlAllowOrigin”(Anguar 8和Servlet)   使用dagger 2的java视图依赖项注入   单元测试中RxJava的java模拟活动生命周期   arraylist中的Java打印字符串   java返回值显示为0.0。为什么会这样?   java是clientserver应用程序所必需的MVC吗?   ByteToMessageDecoder类中的java内存泄漏   java将大量文档写入firestore   GWT项目中的java TomcatMaven插件。两者之间的区别是什么:org。科德豪斯。魔咒和组织。阿帕奇。公猫maven插件   java swing:向JTree项添加自定义图形按钮