从“xml2rfc”xml文档中提取或插入艺术作品/源代码。

xiax的Python项目详细描述


xiax:从xml中提取或插入艺术品和源代码

Kent Watsen提供的免费软件(Watsen Networks)

目的

帮助构造(和解构)submittablexml2rfc v2[RFC 7749]和v3[RFC 7991]文档。

  • 对于作者:自动执行常见步骤。
  • 对于审阅者:确保正确性并方便验证。
  • 对于文案编辑:提供进行更改的安全网。
  +----------+              +----------+     pack      +---------+
  |          |    prime     |          | ------------> |         |
  |  source  | -----------> |  primed  |               |  ready  |
  |          |              |          | <------------ |         |
  +----------+              +----------+     unpack    +---------+
                              |      ^
                              |      |
                              +------+
                              validate

安装

`pip install xiax`
  • 在Python3.7上开发
  • 在Python3.6、3.5、3.4和2.7上测试。

用法

usage: xiax [-h] [-v] [-d] [-f] source [destination]

eXtract or Insert artwork And sourcecode to/from Xml

positional arguments:
  source         source XML document to extract from or insert into.
  destination    destination file or directory. If unspecified, then
                 the current working directory is assumed.

optional arguments:
  -h, --help     show this help message and exit
  -v, --version  show version number and exit.
  -d, --debug    print verbose output to stdout.
  -f, --force    allow existing files to be overwritten.

Exit status code: 0 on success, non-0 on error.  
Debug output goes to stdout. Error output goes to stderr.

自动感应模式:

扫描"source"xml文件以查找以 字符串"xiax-block-v1:"。如果找到此字符串,则提取 继续,否则插入继续。

参照上图:

  • "插入"指底漆和填料。
  • "提取"仅指拆包。

插入:

<;artwork>;<;sourcecode>;元素插入本地文件内容 将生成的"打包"xml文件保存到"source"中,如前所述 下面,

"source"参数必须引用包含<;rfc>; 元素,

如果"destination"参数以".xml"结尾,则使用该参数 确定目的地目录和草稿的 修订号。例如,"/foo-03.xml"将设置当前 工作目录作为目标目录,而"03"作为 要使用的修订号。

如果"destination"参数存在,但不以".xml"结尾, 然后参数仅用于确定目标目录。 系统将尝试确定下一个修订号草案 逻辑git tag(参见下面的[git taging]),如果不起作用, 将假定为"-00"。确定的修订号被放入 "源"文件名,用"最新"替换(如果找到),或 通过附加它(例如,"foo.xml"和"foo latest.xml"可能会导致 在foo-00.xml中)。

如果未提供"destination"参数,则当前工作 使用目录(与传递"../"相同)。

在源xml文件中,<;rfc>;元素docname属性可以 包括后缀"-latest",该后缀将替换为 修订号。建议这样做。<;rfc>;元素也应该 定义了"xiax"前缀(例如xmlns:xiax="https://watsen.net/xiax")。

在源xml文件中,只有<;artwork>;<;sourcecode>;元素 具有xiax:src(用于"source")或xiax:gen(用于"generate") 属性被处理(如果两个属性都出现在 相同的元素)。两个属性都采用一个uri,但uri必须指定 草稿文档目录下的本地文件。

有效的"xiax:src"属性示例:

无效的"src"属性示例:

  • xiax:src="/ex ascii art.txt"
  • xiax:src="c:/ex ascii art.txt"
  • xiax:src="a/../../ex ascii art.txt"
  • xiax:src="文件:///ex ascii art.txt"
  • xiax:src="file://c/ex ascii art.txt"
  • xiax:src="文件:a/../../ex ascii art.txt"

注意:

  • xiax:genxiax:val属性具有相同的模式。
  • 任何包含"yyyy-mm-dd"的字符串(在"source"中) 将更新XML文件,或在链接的文件名或内容中 得到电流值。

如果<;artwork>;中已有内容,则为错误;或者 <;sourcecode>;元素。插入"回退"内容的解决方案 同时将xml2rfc"src"属性保留为二进制(即svg) 内容尚未定义。

除了xiax:srcxiax:gen属性之外,可选的 xiax:val(用于"validate")属性可以指定,以定义 用于验证元素的<;artwork>;<;sourcecode>;的参数 内容。另外,可以指定一个xiax:markers属性 用<;code begins>;<;code ends>;标记包装内容 如RFC 8407第3.2节所述。

此外,xiax将自动折叠包含 一行超过69个字符,使用 草案IETF网络模型艺术品折叠。(注意:这个逻辑不是 已实施)。

插入过程的结果是 目标XML文件,其中所有xiax:<;rfc>;<;artwork>;<;sourcecode>;元素已被删除, 以字符串"35; xiax-block-v1:"开头的XML注释是 添加到XML文件的末尾。

目标文件已经存在是一个错误,除非 指定了"force"标志,在这种情况下,目标文件将 覆盖。

源XML文件从未被修改。

提取:

提取<;artwork>;<;sourcecode>;元素的内容,具有 "xiax block"注释中指定提取的条目 目录。

如果"destination"参数以".xml"结尾,则使用该参数 以确定提取目录以及解包的 草稿名称。注意:提取"unpacted"(或"primed")xml文件 仅当目标参数以".xml"结尾时。

如果"destination"参数存在,但不以".xml"结尾, 然后参数仅用于确定提取目录 (将不保存解包的草稿XML文件)。

如果未提供"destination"参数,则当前工作 目录用作提取目录。就好像 "/"已通过。

只有<;artwork>;<;sourcecode>;元素在 提取"xiax块"。提取的文件与 提取目录。将根据需要创建子目录。

除了要提取元素的内容外,所有 还将提取用于生成和验证内容的文件。 这不仅包括xiax:genxiax:val属性,以及任何其他本地文件文件 被那些文件引用。

如果已经存在任何文件,则这是一个错误,除非"force"标志是 指定,在这种情况下将覆盖文件。

计划实现自动验证 xiax:srcxiax:gen内容,但这在一定程度上取决于 来自用户的输入,因为它可能足够知道验证 在"插入"期间自动运行,并且可以手动运行 提取后运行。

源XML文件从未被修改。

往返

可以在循环中运行xiax

  # xiax -f -s packed-00.xml -d unpacked-00.xml
  # xiax -f -s unpacked-00.xml -d packed-00.xml

Git标记

git标记应该(假设git被用作scm)用于 标记里程碑。在编写文档的上下文中,里程碑 草稿的已发布版本是否正在进行中。

例如,假设草稿-<;foo>;-03已经发布, 这意味着02,01,和00之前也发表过n 获取标记应在工作目录中生成以下结果:

# git tag
draft-<foo>-00
draft-<foo>-01
draft-<foo>-02
draft-<foo>-03

特殊支持

通常,"source"参数指定一个xml2rfcxml文件,但是 为了支持"生成"和"验证"文件的开发, 这些xml文件可以作为"source"参数传递,其中 casexiax只处理单个文件。

如果"source"参数指定"generate"文件,则"destination" 参数(如果传递)将在发送生成的内容时被忽略 到标准输出。

如果"source"参数指定"validate"文件,则"destination" 参数必须指定要验证的文件的相对路径。

以这种方式运行xiax必须发生在草稿文档的顶层 目录(当前工作目录是文档的目录)。

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

推荐PyPI第三方库


热门话题
java如何在Spring Boot 2.2.0中添加弹性搜索?   jakarta ee如何在没有java认证的情况下停止直接访问网页(自定义标记)   java Hibernate:使用executeUpdate()的批删除未清除一级缓存   java如何在Hibernate中插入外键定义为Long的实体?   带参数的java Mockito单元测试计算器方法   java如何从Rally Rest API读取集合属性   java如何对基于消息的处理执行集成测试?   带插入排序的java排序字符串数组标记,双链表   java为什么在基于注释的Spring app@Value默认值中解析为null?   java Apache Commons Http客户端注册特定于客户端的协议   如何使用java反转字符串中n个部分的n个字符   java Tomcat在本地主机上运行良好,但在部署时出现内部服务器错误   使用信号量的变量的java结果   Java编译/运行时类路径问题   java哪个提供商负责AES/CTR/NOP添加?   伪错误解码器中的java响应未获取Zalando问题自定义属性