我正在尝试解决一个非常具体的问题,该问题是由于数千页 MediaWiki wikicode 被错误地解析为 Confluence 的 XML 语法而导致的。不幸的是,原始的 wikicode 不再可用,因此手头的任务是清理 Confluence XML 语法。
语法错误:
<ac:link>
<ri:page ri:content-title="File__image.jpg"/>
<ac:plain-text-link-body><![CDATA[500px]]></ac:plain-text-link-body>
</ac:link>
正确的语法:
<ac:image>
<ri:attachment ri:filename="image.jpg"/>
</ac:image>
(错误的语法是由Universal Wiki Converter (UWC) 的MediaWiki Converter 插件生成的,它将 wikicode 解释为文本“ ”链接到页面“ ”,而不是嵌入的图像“ ”,宽度为.)[[File:image.jpg | 500px]]
500px
File:image.jpg
image.jpg
500px
我已经成功地使用一系列查找/替换操作修复了 XML 语法,但这是一个非常手动的过程,它使用了 Sublime Text 3 中的脚本/插件制作的一组组件。
作为一个快速概述,这是我一直在使用的一组替代品:
- 消除
<ac:link>
消除
</ac:link>
替换
<ri:page ri:content-title="
为<ac:image><ri:attachment ri:filename="
替换
<ac:plain-text-link-body><![CDATA[500px]]></ac:plain-text-link-body>
为</ac:image>
替换
ri:filename="File__
为ri:filename="
使用我的脚本确实“有效”,但由于我已经证明了修复 Confluence XML 语法的价值,我现在有更多的时间来使用更好的方法来制作一个“好的”解决方案。一个理想的解决方案是用 JavaScript 编写(这样我就可以创建一个 Greasemonkey 脚本来使用 Confluence 的浏览器内代码编辑器来修复标记),或者以这样一种方式,它可以利用 Confluence 的 REST API。
我有一些脚本编写经验(包括 PHP、JavaScript 和一点 Python)和有限的编程经验,并且通过我自己对现有脚本的研究,我还没有找到可以轻松适应此目的的现有脚本,所以我寻找有关构建脚本以满足此需求的最佳方式的建议/指导。
我如何构建一个脚本来链接这样一系列的查找/替换操作?