从“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"属性示例:
- xiax:src="ietf foobar@yyy-mm-dd.yang"
- xiax:src="images/ex ascii art.txt"
- xiax:src="文件:ietf foobar@yyy-mm-dd.yang"
- xiax:src="文件:图像/ex ascii art.txt"
无效的"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:gen
和xiax:val
属性具有相同的模式。- 任何包含"yyyy-mm-dd"的字符串(在"source"中) 将更新XML文件,或在链接的文件名或内容中 得到电流值。
如果<;artwork>;
中已有内容,则为错误;或者
<;sourcecode>;
元素。插入"回退"内容的解决方案
同时将xml2rfc
"src"属性保留为二进制(即svg)
内容尚未定义。
除了xiax:src
和xiax: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:gen
和
xiax:val
属性,以及任何其他本地文件文件
被那些文件引用。
如果已经存在任何文件,则这是一个错误,除非"force"标志是 指定,在这种情况下将覆盖文件。
计划实现自动验证
xiax:src
和xiax: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"参数指定一个xml2rfc
xml文件,但是
为了支持"生成"和"验证"文件的开发,
这些xml文件可以作为"source"参数传递,其中
casexiax
只处理单个文件。
如果"source"参数指定"generate"文件,则"destination" 参数(如果传递)将在发送生成的内容时被忽略 到标准输出。
如果"source"参数指定"validate"文件,则"destination" 参数必须指定要验证的文件的相对路径。
以这种方式运行xiax必须发生在草稿文档的顶层 目录(当前工作目录是文档的目录)。