我正在尝试解决由数千页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>
(MediaWiki Converter plugin(UWC)的Universal Wiki Converter生成的语法不正确,它将wikicode [[File:image.jpg | 500px]]
解释为链接到该页面的文本“500px
” “File:image.jpg
”,而不是宽度为image.jpg
的嵌入图片“500px
”。)
我使用一系列查找/替换操作修复XML语法已经取得了成功,但这是一个非常手动的过程,使用Sublime Text 3中的脚本/插件制作的一组kludges。
作为简要概述,以下是我一直在使用的替换集:
<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编写的(这样我就可以使用Confluence的浏览器内代码编辑器创建一个Greasemonkey脚本来修复标记),或者可以使用Confluence的REST API。
我有一些脚本编写经验(包括PHP,JavaScript和一点点Python)和有限的编程经验,而且我自己对现有脚本的研究,我还没有找到一个可以很容易地适应这个目的的现有脚本,所以我正在寻找建立脚本以满足这种需求的最佳方法的建议/指导。
我如何构建一个脚本来将一系列查找/替换操作链接在一起?