0

我正在尝试解决一个非常具体的问题,该问题是由于数千页 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]]500pxFile:image.jpgimage.jpg500px

我已经成功地使用一系列查找/替换操作修复了 XML 语法,但这是一个非常手动的过程,它使用了 Sublime Text 3 中的脚本/插件制作的一组组件。

作为一个快速概述,这是我一直在使用的一组替代品:

  1. 消除<ac:link>
  2. 消除</ac:link>

  3. 替换<ri:page ri:content-title="<ac:image><ri:attachment ri:filename="

  4. 替换<ac:plain-text-link-body><![CDATA[500px]]></ac:plain-text-link-body></ac:image>

  5. 替换ri:filename="File__ri:filename="

使用我的脚本确实“有效”,但由于我已经证明了修复 Confluence XML 语法的价值,我现在有更多的时间来使用更好的方法来制作一个“好的”解决方案。一个理想的解决方案是用 JavaScript 编写(这样我就可以创建一个 Greasemonkey 脚本来使用 Confluence 的浏览器内代码编辑器来修复标记),或者以这样一种方式,它可以利用 Confluence 的 REST API。

我有一些脚本编写经验(包括 PHP、JavaScript 和一点 Python)和有限的编程经验,并且通过我自己对现有脚本的研究,我还没有找到可以轻松适应此目的的现有脚本,所以我寻找有关构建脚本以满足此需求的最佳方式的建议/指导。

我如何构建一个脚本来链接这样一系列的查找/替换操作?

4

0 回答 0