跳转到内容

帮助:导出

来自维基教科书,开放世界开放书籍

维基页面可以使用特殊 XML 格式导出,以便导入到其他 MediaWiki 安装中,或者以其他方式使用,例如分析内容。

如何导出

[编辑 | 编辑源代码]

至少有四种方法可以导出页面

  • 特殊:导出 中将文章名称粘贴到框中,或使用 URL//wikibooks.cn/wiki/Special:Export/article's_name。您可以在 特殊:所有页面 中获取所有页面名称(在指定命名空间中)的列表。
  • 备份脚本dumpBackup.php将所有维基页面转储到一个 XML 文件中。dumpBackup.php仅适用于 MediaWiki 1.5 或更高版本。您需要直接访问服务器才能运行此脚本。Mediawiki 项目的转储(或多或少)定期提供在 http://download.wikipedia.org
  • 有一个 OAI-PMH 接口可以定期获取自特定时间以来修改过的页面。对于维基媒体项目,此接口不可公开使用。OAI-PMH 包含围绕实际导出文章的包装格式。
  • 使用 Python 维基百科机器人框架。这里不会解释。

默认情况下,只包含页面的当前版本。您可以选择获取所有版本,包括日期、时间、用户名和编辑摘要。

此外,您可以复制 SQL 数据库。这就是在 MediaWiki 1.5 之前如何提供数据库转储,这里不再详细说明。

使用“特殊:导出”

[编辑 | 编辑源代码]

首先,您需要知道要导出的页面的名称。要导出命名空间中的所有页面

  • 使用 特殊:所有页面 并选择所需的命名空间。
  • 将页面名称列表复制到文本编辑器中
  • 将所有名称放在单独的行上
  • 如果所选命名空间不是主命名空间:在页面名称之前插入命名空间前缀,例如“帮助:目录”

现在您已准备好执行导出

  • 转到 特殊:导出 并将所有页面名称粘贴到文本框中,确保没有空行。
  • 单击“提交查询”
  • 使用浏览器的保存功能将生成的 XML 保存到文件中。

最后...

  • 在文本编辑器中打开 XML 文件。滚动到底部以检查错误消息

现在可以使用此 XML 文件 执行导入

导出格式

[编辑 | 编辑源代码]

您收到的 XML 文件的格式在所有方面都相同。它在 XML 模式 中进行了编码,位于 http://www.mediawiki.org/xml/export-0.3.xsd 此格式不适合在 Web 浏览器中查看。一些浏览器会向您显示带有“+”和“ - ”链接的漂亮打印的 XML,以查看或隐藏选定部分。或者,可以使用浏览器的“查看源代码”功能查看 XML 源代码,或者在将 XML 文件本地保存后,可以使用您选择的程序查看它。如果您直接读取 XML 源代码,您将不会很难找到实际的维基文本。如果您不使用特殊的 XML 编辑器,“<”和“>”会显示为“&lt;”和“&gt;”,以避免与 XML 标记冲突;为了避免歧义,“&”被编码为“&amp;”。

在当前版本中,导出格式不包含维基标记的 XML 替换(请参阅 维基百科 DTD,了解更早的建议)。您只会获得编辑文章时获得的维基文本。

  <mediawiki xml:lang="en">
    <page>
      <title>Page title</title>
      <restrictions>sysop</restrictions>
      <revision>
        <timestamp>2001-01-15T13:15:00Z</timestamp>
        <contributor><username>Foobar</username></contributor>
        <comment>I have just one thing to say!</comment>
        <text>A bunch of [[text]] here.</text>
        <minor />
      </revision>
      <revision>
        <timestamp>2001-01-15T13:10:27Z</timestamp>
        <contributor><ip>10.0.0.2</ip></contributor>
        <comment>new!</comment>
        <text>An earlier [[revision]].</text>
      </revision>
    </page>
    
    <page>
      <title>Talk:Page title</title>
      <revision>
        <timestamp>2001-01-15T14:03:00Z</timestamp>
        <contributor><ip>10.0.0.2</ip></contributor>
        <comment>hey</comment>
        <text>WHYD YOU LOCK PAGE??!!! i was editing that jerk</text>
      </revision>
    </page>
  </mediawiki>

这里有一个非官方的简短 文档类型定义 版本的格式。如果您不知道 DTD 是什么,请忽略它。

<!ELEMENT mediawiki (siteinfo,page*)>
<!-- version contains the version number of the format (currently 0.3) -->
<!ATTLIST mediawiki
  version  CDATA  #REQUIRED 
  xmlns CDATA #FIXED "http://www.mediawiki.org/xml/export-0.3/"
  xmlns:xsi CDATA #FIXED "http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation CDATA #FIXED
    "http://www.mediawiki.org/xml/export-0.3/ http://www.mediawiki.org/xml/export-0.3.xsd"
>
<!ELEMENT siteinfo (sitename,base,generator,case,namespaces)>
<!ELEMENT sitename (#PCDATA)>      <!-- name of the wiki -->
<!ELEMENT base (#PCDATA)>          <!-- url of the main page -->
<!ELEMENT generator (#PCDATA)>     <!-- MediaWiki version string -->
<!ELEMENT case (#PCDATA)>          <!-- how cases in page names are handled -->
   <!-- possible values: 'first-letter' | 'case-sensitive'
                         'case-insensitive' option is reserved for future -->
<!ELEMENT namespaces (namespace+)> <!-- list of namespaces and prefixes -->
  <!ELEMENT namespace (#PCDATA)>     <!-- contains namespace prefix -->
  <!ATTLIST namespace key CDATA #REQUIRED> <!-- internal namespace number -->
<!ELEMENT page (title,id?,restrictions?,(revision|upload)*)>
  <!ELEMENT title (#PCDATA)>         <!-- Title with namespace prefix -->
  <!ELEMENT id (#PCDATA)> 
  <!ELEMENT restrictions (#PCDATA)>  <!-- optional page restrictions -->
<!ELEMENT revision (id?,timestamp,contributor,minor?,comment,text)>
  <!ELEMENT timestamp (#PCDATA)>     <!-- according to ISO8601 -->
  <!ELEMENT minor EMPTY>             <!-- minor flag -->
  <!ELEMENT comment (#PCDATA)> 
  <!ELEMENT text (#PCDATA)>          <!-- Wikisyntax -->
  <!ATTLIST text xml:space CDATA  #FIXED "preserve">
<!ELEMENT contributor ((username,id) | ip)>
  <!ELEMENT username (#PCDATA)>
  <!ELEMENT ip (#PCDATA)>
<!ELEMENT upload (timestamp,contributor,comment?,filename,src,size)>
  <!ELEMENT filename (#PCDATA)>
  <!ELEMENT src (#PCDATA)>
  <!ELEMENT size (#PCDATA)>

处理 XML 导出

[编辑 | 编辑源代码]

无疑有很多工具可以处理导出的 XML。如果您处理大量页面(例如整个转储),您可能无法将文档加载到主内存中,因此您将需要一个基于 SAX 或其他事件驱动方法的解析器。

您也可以使用正则表达式来直接处理 XML 代码的部分。这可能比其他方法更快,但不建议使用,因为很难维护。

请在这里列出处理 XML 导出的方法和工具

详细信息和实用建议

[编辑 | 编辑源代码]
  • 要确定页面的命名空间,您必须将其标题与在

/mediawiki/siteinfo/namespaces/namespace

  • 中定义的前缀进行匹配
    • 可能的限制是sysop


华夏公益教科书