Skip to main content

将 jing 和 trang RELAX NG 工具包装到 Python 脚本中

项目描述

jingtrang是基于 Java 的命令行工具的包装器,用于处理 RELAX NG 模式。

动机

RELAX NG,尤其是描述 XML 结构的紧凑形式非常有效。

不幸的是,对于 Python,支持相当有限:

  • lxml 只允许验证基于 XML 的模式

  • lxml 基于 libxml2 库,它在 RELAX NG 验证方面有一些小的限制(在某些情况下,您会发现错误消息,如“TODO”)。

  • 包 rnc2rng 有望从 XML 转换为紧凑形式,但并不是真正可用(它根本不起作用)。

一般来说,找到紧凑的 RELAX NG 语法的命令行验证器甚至不是很容易。

RNV 很有前途,但 Sourceforge 上的版本相当旧,而且 GitHub 上的版本没有最新的安装说明。

其他 RELAX NG 相关工具大多忽略紧凑语法。

唯一的例外是托管在 googlecode 上的 jingtrang 项目。

这个工具的问题是,它需要几个步骤,然后从控制台轻松安装以供日常使用真的很方便。

由于我们的团队同时在 Linux 和 MS Windows 上工作,我一直在寻找跨平台命令行解决方案。

由于 jingtrang 命令(jing 和 trang)似乎运行良好,我决定编写这个 jing 和 trang 包装器。

提供 (py)jing 和 (py)trang 命令行工具

原始命令行工具被命名为 jing(验证器)和 trang(转换模式)。

为防止命名冲突,使用前缀py

命令行界面完全一样,就好像用java解释器一样,只是介绍性的“java -jar <jarfile.jar>”部分不需要调用。

这里只描述了最流行的用例,更多选项,请查阅原始 jingtrang 文档(从 googlecode 或其他地方下载并查看包含的 html 文档)。

安装

先决条件是:

  • Python(2.7 或 3.4 及更高版本)

  • 爪哇

  • 点子

通过以下方式安装它:

$ pip install jingtrang

之后,安装了两个新脚本:

  • pyjing - RELAX NG 验证器

  • pytrang - 用于在 XML/紧凑语法/XSD/其他几种格式之间进行转换的实用程序

pyjing - RELAX NG 验证器(XML 以及紧凑的语法)

pyjing用于根据 XML 以及紧凑的语法 RELAX NG 模式验证 XML 文档:

$ pyjing Jing 版本 20091111 用法:java com.thaiopensource.relaxng.util.Driver [-i] [-c] [-s] [-t] [-C catalogFile] [-e encoding] RNGFile XMLFile... RELAX NG 是一个XML 的模式语言 有关详细信息,请参阅http://relaxng.org/

要使用 XML 语法 RELAX NG 模式验证 XML:

$ 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

要从示例 XML 文件生成紧凑格式的初始 RELAX NG 模式,请尝试:

$ pytrang sample.xml initial.rnc

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

内置分布

jingtrang-0.1.2-py2.py3-none-any.whl (1.3 MB 查看哈希

已上传 py2 py3