Help:Dışa aktar
| Not: Bu sayfayı düzenlerken katkınızı CC0 altında yayınlamayı kabul edersiniz. Daha fazla bilgi için Kamu Malı Yardım Sayfalarına bakın. Bu sayfa için yapılan bazı eski değişiklikler CC BY-SA lisansı altına kaydırılmıştır. Yalnızca yeni katkılar PM'dir. |
Viki sayfaları özel bir XML biçiminde içe aktarma yüklemesi başka bir MediaWiki kurulumuna aktarılabilir (bu işlev hedef vikide etkinleştirildiyse ve kullanıcı orada bir hizmetli ise) veya içeriği içeriği analiz etmek için başka şekilde kullanın. Ayrıca sayfalar dışında başka bilgileri dışa aktarma ve içe aktarmalarda Help:Import aktarma için Sendikasyon beslemelerine bakın.
Nasıl dışa aktarılır
Sayfaları dışa aktarmanın en az dört yolu vardır:
- Sayfaların adını Special:Export kutusuna yapıştırın (veya //www.mediawiki.org/wiki/Special:Export/FULLPAGENAME gibi URL'ler kullanın).
- Yedek betiği
dumpBackup.phptüm viki sayfalarını bir XML dosyasına döker.dumpBackup.phpyalnızca MediaWiki 1.5 veya daha yeni sürümlerinde çalışır. Bu betiğini çalıştırmak için sunucuya doğrudan erişiminizin olması gerekir. Wikimedia projelerinin dökümü düzenli olarak https://dumps.wikimedia.org/ sağlanıyor. - Python çerçevesini kullanın. Bu burada açıklanmayacak.
Ayrıca SQL veritabanını kopyalayabilirsiniz. Veritabanının dökümleri MediaWiki 1.5'ten önce bu şekilde kullanıma sunuldu ve burada daha fazla açıklanmayacak.
'Special:Export' kullanımı
Varsayılan olarak bir sayfanın yalnızca geçerli sürümü eklenir. İsteğe bağlı olarak tarih, saat, kullanıcı adı ve düzenleme özeti içeren tüm sürümleri alabilirsiniz. İsteğe bağlı olarak, doğrudan veya dolaylı olarak adlandırılan tüm şablonların en son sürümü de dışa aktarılır.
Örneğin, bir ad alanının tüm sayfalarını dışa aktarmak için.
Dışa aktarılacak sayfaların adlarını alın
- Special:Allpages sayfasına gidin ve istediğiniz maddeyi/dosyayı seçin.
- Sayfa adları listesini bir metin düzenleyicisine kopyalayın.
- Tüm sayfa adlarını ayrı satırlara yerleştirin.
- Bunu, metin düzenleyicinizin arama ve değiştirme özelliğini kullanarak sekmeleri yeni satırlara dönüştürerek nispeten hızlı bir şekilde başarabilirsiniz.
- Alternatif olarak, ham HTML'yi bir düzenleyiciye kopyalayıp her tablo hücresini tek hücreli bir tablo satırına dönüştürebilirsiniz.
- Sunucunuza kabuk ve MySQL erişiminiz varsa, bu betiğini kullanabilirsiniz:
mysql -umike -pmikespassword -hlocalhost wikidbname
select page_title from wiki_page where page_namespace=0
EOF
Dikkat: mike ve mikespassword olarak kendi değerlerinizle değiştirin. Ayrıca, bu örnek wiki_ ön ekine sahip tabloları göstermektedir.
- Seçilen ad alanı ana ad alanı olmadığı sürece, ad alanını sayfa adlarının önüne ekleyin (örneğin 'Help:Contents').
- İstediğiniz gibi diğer ad alanları için yukarıdaki adımları tekrarlayın (örneğin Kategori:, Şablon:, vb.).
PostgreSQL veritabanları için benzer bir betik şuna benzer:
psql -At -U wikiuser -h localhost wikidb -c "select page_title from mediawiki.page"
Dikkat edin, viki kullanıcı iken kendinizinkiyle değiştirin, veritabanı sizden bir parola isteyecektir. Bu örnek, wiki_ öneki olmayan ve tablo adının bir parçası olarak ad alanı belirtilen tabloları gösterir.
Dışa aktarımı gerçekleştirin
- Special:Export sayfasına gidin ve tüm sayfa adlarınızı boş satır olmadığından emin olarak metin kutusuna yapıştırın.
Dışa aktardüğmesine tıklayın- Elde edilen XML'yi tarayıcınızın kaydetme özelliğini kullanarak bir dosyaya kaydedin.
Ve son olarak...
- XML dosyasını bir metin düzenleyicide açın. Hata mesajlarını kontrol etmek için en alta kaydırın.
Artık bu XML dosyasını bir içe aktarma gerçekleştirmek için kullanabilirsiniz.
Tam geçmişi dışa aktarma
Yazarlık bilgilerini ve atıfları korumak için revizyon geçmişini dışa aktarmak istenebilir. Special:Export arayüzündeki bir onay kutusu, maddelerin tam geçmişinin mi (bir maddenin tüm sürümleri) yoksa en son sürümünün mi dışa aktarılacağını seçer. En fazla 100 revizyon iade edilir; Parameters to Special:Export içinde ayrıntılı verdiği gibi diğer revizyonlar talep edilebilir.
Dışa aktarma biçimi
Aldığınız XML dosyasının biçimi her yönden aynıdır.
https://www.mediawiki.org/xml/export-0.11.xsd adresinde XML Şeması'nda kodlanmıştır.
Bu biçim, bir web tarayıcısında görüntülemek için tasarlanmamıştır.
Bazı tarayıcılar, seçili parçaları görüntülemek veya gizlemek için size + ve - bağlantılarıyla güzel yazdırılmış XML gösterir.
Alternatif olarak, XML kaynağı, tarayıcının "kaynağı gör" özelliği kullanılarak veya XML dosyasını yerel olarak kaydettikten sonra, bir programla görüntülenebilir.
Doğrudan XML kaynağını okursanız, gerçek viki metin dosyasını bulmak zor olmayacaktır.
Özel bir XML düzenleyici < ve > kullanmazsanız, XML etiketleriyle çakışmayı önlemek için < ve > olarak görünür; belirsizliği önlemek için &, & olarak kodlanır.
Mevcut sürümde dışa aktarma formatı, viki işaretlemesinin XML değişimini içermiyor (daha eski bir teklif için Wikipedia DTD sayfasına bakın). Maddeyi düzenlerken yalnızca viki metin alırsınız.
Örnek
<mediawiki xml:lang="en">
<page>
<title>Page title</title>
<restrictions>edit=sysop:move=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</text>
</revision>
</page>
</mediawiki>
DTD
Biçimin resmi olmayan, kısa Document Type Definition sürümü. Bir DTD'nin ne olduğunu bilmiyorsanız, onu görmezden gelin.
<!ELEMENT mediawiki (siteinfo,page*)>
<!-- sürüm, biçimin sürüm numarasını içerir (şu anda 0.3) -->
<!ATTLIST mediawiki
version CDATA #REQUIRED
xmlns CDATA #FIXED "https://www.mediawiki.org/xml/export-0.3/"
xmlns:xsi CDATA #FIXED "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation CDATA #FIXED
"https://www.mediawiki.org/xml/export-0.3/ https://www.mediawiki.org/xml/export-0.3.xsd"
xml:lang CDATA #IMPLIED
>
<!ELEMENT siteinfo (sitename,base,generator,case,namespaces)>
<!ELEMENT sitename (#PCDATA)> <!-- vikinin adı -->
<!ELEMENT base (#PCDATA)> <!-- ana sayfanın url'si -->
<!ELEMENT generator (#PCDATA)> <!-- MediaWiki sürüm dizesi -->
<!ELEMENT case (#PCDATA)> <!-- sayfa adlarındaki vakalar nasıl işlenir -->
<!-- olası değerler: 'first-letter' | 'case-sensitive'
'Case-insensitive' seçeneği gelecek için ayrılmıştır -->
<!ELEMENT namespaces (namespace+)> <!-- ad alanlarının ve öneklerin listesi -->
<!ELEMENT namespace (#PCDATA)> <!-- ad alanı öneki içerir -->
<!ATTLIST namespace key CDATA #REQUIRED> <!-- dahili ad alanı sayısı -->
<!ELEMENT page (title,id?,restrictions?,(revision|upload)*)>
<!ELEMENT title (#PCDATA)> <!-- Ad alanı önekine sahip başlık -->
<!ELEMENT id (#PCDATA)>
<!ELEMENT restrictions (#PCDATA)> <!-- isteğe bağlı sayfa kısıtlamaları -->
<!ELEMENT revision (id?,timestamp,contributor,minor?,comment?,text)>
<!ELEMENT timestamp (#PCDATA)> <!-- ISO8601 göre -->
<!ELEMENT minor EMPTY> <!-- küçük işareti -->
<!ELEMENT comment (#PCDATA)>
<!ELEMENT text (#PCDATA)> <!-- Vikisözdizim -->
<!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 dışa aktarımı işleme
Birçok araç dışa aktarılan XML'i işleyebilir. Çok sayıda sayfayı işlerseniz (örneğin tam bir döküm) büyük olasılıkla belgeyi ana bellekte alamayacaksınız, bu nedenle SAX ile dayalı bir ayrıştırıcıya ihtiyacınız olacak veya diğer olay odaklı yöntemlenir.
XML kodunun bölümlerini doğrudan işlemek için normal ifadeleri de kullanabilirsiniz. Bu, diğer yöntemlerden daha hızlı olabilir, ancak bakımı zor olduğu için önerilmez.
Lütfen XML dışa aktarımını işlemek için yöntemleri ve araçları burada listeleyin:
- Parse MediaWiki Dump (crates.io), XML dökümlerini ayrıştırmak için bir Rust kasasıdır.
Ayrıntılar ve pratik tavsiyeler
- Bir sayfanın ad alanını belirlemek için, başlığını
/mediawiki/siteinfo/namespaces/namespacead alanında tanımlanan öneklerle eşleştirmeniz gerekir - Olası kısıtlamalar:
sysop- korunan sayfalar
Neden dışa aktarılmalı
Neden dinamik bir veritabanı indirmesi kullanmıyorsunuz?
Vikipedi'den gelen bilgileri belirli noktalarda görüntüleyen bir yazılım oluşturduğunuzu varsayalım. Programınızın bilgileri canlı sürümde görünenden farklı bir şekilde görüntülemesini istiyorsanız, muhtemelen bitmiş HTML yerine onu girmek için kullanılan vikikoda ihtiyacınız olacaktır.
Ayrıca, tüm verileri almak istiyorsanız, muhtemelen mümkün olan en verimli şekilde aktarmak isteyeceksiniz. Wikimedia sunucularının, vikikodu HTML'ye dönüştürmek için epeyce çalışması gerekir. Bu hem sizin için hem de Wikimedia sunucuları için zaman alıcıdır, bu nedenle tüm sayfalarda gezinmek, yapılacak yol değildir.
XML formatındaki herhangi bir maddeye tek tek erişmek için Special:Export/Title_of_the_article sayfasına gidin