跳轉到內容

幫助:匯出

來自華夏公益教科書,開放世界開放書籍

維基頁面可以使用特殊 XML 格式匯出,以便匯入到其他 MediaWiki 安裝中,或者以其他方式使用,例如分析內容。

如何匯出

[編輯 | 編輯原始碼]

至少有四種方法可以匯出頁面

  • 特殊:匯出 中將文章名稱貼上到框中,或使用 URL//wikibook.tw/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


華夏公益教科書