مساعدة: تصدير
تم استيراد بعض النسخ القديمة لهذه الصفحة تحت ترخيص CC BY-SA. الإسهامات الجديدة فقط هم PD. PD
يمكن تصدير صفحات ويكي بتنسيق XML خاص لـ التحميل للاستيراد إلى تثبيت آخر لـ MediaWiki (إذا كانت هذه الوظيفة مفعلة في ويكي الوجهة وكان المستخدم مسؤولًا هناك)، أو استخدامها لأغراض أخرى مثل تحليل المحتوى. راجع أيضًا خلاصات الاستنساخ لتصدير معلومات أخرى غير الصفحات وHelp:Import لاستيراد الصفحات.
كيفية التصدير
هناك على الأقل أربع طرق لتصدير الصفحات:
- الصق اسم المقالات في المربع في Special:Export أو استخدم //www.mediawiki.org/wiki/Special:Export/FULLPAGENAME.
- سكربت النسخ الاحتياطي
dumpBackup.phpيقوم بتفريغ جميع صفحات الويكي في ملف XML.dumpBackup.phpيعمل فقط على MediaWiki 1.5 أو الإصدارات الأحدث. يجب أن يكون لديك وصول مباشر إلى الخادم لتشغيل هذا السكربت. يتم بشكل دوري توفير نسخ من مشاريع ويكيميديا على الرابط https://dumps.wikimedia.org/. - استخدم إطار عمل Pywikibot. لن يتم شرح ذلك هنا.
بالإضافة إلى ذلك، يمكنك نسخ قاعدة بيانات SQL. هكذا كانت تتم إتاحة نسخ قاعدة البيانات قبل MediaWiki 1.5 ولن يتم شرح ذلك هنا أكثر من ذلك.
الاستخدام 'Special:Export'
بشكل افتراضي، يتم تضمين الإصدار الحالي فقط من الصفحة. يمكنك اختيارياً الحصول على جميع الإصدارات مع التاريخ والوقت واسم المستخدم وملخص التعديل. يمكن تصدير أحدث إصدار من جميع القوالب التي تم استدعاؤها بشكل مباشر أو غير مباشر، وذلك حسب الرغبة.
لتصدير صفحات متعددة، على سبيل المثال "جميع صفحات مساحة اسم"، قم بما يلي.
الحصول على أسماء الصفحات المراد تصديرها
- انتقل إلى Special:Allpages واختر المقالات/الملفات المطلوبة.
- انسخ قائمة أسماء الصفحات إلى محرر نصوص.
- ضع جميع أسماء الصفحات على أسطر منفصلة.
- يمكنك تحقيق ذلك بسرعة نسبية إذا استخدمت ميزة البحث والاستبدال في محرر النصوص الخاص بك لتغيير علامات الجدولة إلى أسطر جديدة.
- بدلاً من ذلك، يمكنك نسخ كود HTML الخام إلى محرر وتغيير كل خلية في الجدول إلى صف جدول مكون من خلية واحدة.
- إذا كان لديك إمكانية الوصول إلى سطر الأوامر وقاعدة بيانات MySQL على خادمك، فيمكنك استخدام هذا البرنامج النصي:
mysql-umike-pmikespassword-hlocalhostwikidbname selectpage_titlefromwiki_pagewherepage_namespace=0 EOF
ملاحظة، استبدل 1 و 2 بـ رقمك كما يُظهر هذا المثال جداول تبدأ بالرمز wiki_
- قم بإضافة بادئة لمساحة الاسم إلى أسماء الصفحات (على سبيل المثال 'Help:Contents')، إلا إذا كانت مساحة الاسم المحددة هي مساحة الاسم الرئيسية.
- كرر الخطوات المذكورة أعلاه لمساحات الأسماء الأخرى (على سبيل المثال، الفئة:، القالب:، إلخ)، حسب الرغبة.
يبدو نص برمجي مشابه لقواعد بيانات PostgreSQL كالتالي:
psql-At-Uwikiuser-hlocalhostwikidb-c"select page_title from mediawiki.page"
ملاحظة: استبدل wikiuser باسمك، حيث ستطلب منك قاعدة البيانات كلمة مرور. يوضح هذا المثال الجداول بدون البادئة wiki_ ومع تحديد مساحة الاسم كجزء من اسم الجدول.
تنفيذ عملية التصدير
- انتقل إلى Special:Export والصق جميع أسماء صفحاتك في مربع النص، مع التأكد من عدم وجود أسطر فارغة.
- انقر على
تصدير - احفظ ملف XML الناتج باستخدام خاصية الحفظ في متصفحك.
وأخيراً...
- افتح ملف XML في محرر نصوص. انتقل إلى أسفل الصفحة للتحقق من وجود رسائل خطأ.
يمكنك الآن استخدام ملف XML هذا لـ تنفيذ عملية استيراد.
تصدير السجل الكامل
قد يكون تصدير سجل المراجعة أمراً مرغوباً فيه للاحتفاظ بمعلومات التأليف والإسناد. يُحدد مربع الاختيار في واجهة Special:Export ما إذا كان سيتم تصدير السجل الكامل (جميع إصدارات المقالة) أو أحدث إصدار من المقالات. يتم إرجاع 100 تعديل كحد أقصى؛ ويمكن طلب تعديلات أخرى كما هو موضح في البند 1 دولار.
تنسيق التصدير
تنسيق ملف XML الذي تتلقاه هو نفسه من جميع النواحي.
تم ترميزه في XML Schema على https://www.mediawiki.org/xml/export-0.11.xsd
هذا التنسيق غير مخصص للعرض في متصفح الويب.
بعض المتصفحات تظهر لك XML مطبوعة جميلة مع + و - روابط لمشاهدة أو إخفاء أجزاء مختارة.
بدلاً من ذلك، يمكن عرض مصدر XML باستخدام ميزة "عرض المصدر" في المتصفح، أو بعد حفظ ملف XML محليًا، باستخدام برنامج من اختيارك.
إذا قرأت مصدر XML مباشرة، فلن يكون من الصعب العثور على نص الويكي الفعلي.
إذا لم تستخدم محرر XML خاص، فسيظهر < و> كـ < و>، لتجنب التعارض مع علامات XML؛ ولتجنب الغموض، يتم ترميز & كـ &.
في الإصدار الحالي، لا يحتوي تنسيق التصدير على بديل XML لترميز ويكي (انظر Wikipedia DTD للاطلاع على اقتراح أقدم). ستحصل فقط على نص ويكي كما هو الحال عند تحرير المقالة.
مثال
<mediawikixml:lang="en"> <page> <title>Pagetitle</title> <restrictions>edit=sysop:move=sysop</restrictions> <revision> <timestamp>2001年01月15日T13:15:00Z</timestamp> <contributor><username>Foobar</username></contributor> <comment>Ihavejustonethingtosay!</comment> <text>Abunchoftexthere.</text> <minor/> </revision> <revision> <timestamp>2001年01月15日T13:10:27Z</timestamp> <contributor><ip>10.0.0.2</ip></contributor> <comment>new!</comment> <text>Anearlierrevision.</text> </revision> </page> <page> <title>Talk:Pagetitle</title> <revision> <timestamp>2001年01月15日T14:03:00Z</timestamp> <contributor><ip>10.0.0.2</ip></contributor> <comment>hey</comment> <text>WHYDYOULOCKPAGE??iwaseditingthat</text> </revision> </page> </mediawiki>
DTD
إليكم نسخة غير رسمية ومختصرة من Document Type Definition (DTD) للتنسيق. لا تتردد في تجاهل هذا إذا كنت لا تعرف ما هو DTD.
<!ELEMENT mediawiki (siteinfo,page*)> <!-- يحتوي الإصدار على رقم إصدار التنسيق (حالياً 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)><!-- اسم الويكي --> <!ELEMENT base (#PCDATA)><!-- رابط الصفحة الرئيسية --> <!ELEMENT generator (#PCDATA)><!-- سلسلة إصدار ميدياويكي --> <!ELEMENT case (#PCDATA)><!-- كيفية التعامل مع حالات الأحرف في أسماء الصفحات --> <!-- القيم المحتملة: 1$ خيار 'Case-insensitive' محجوز للمستقبل --> <!ELEMENT namespaces (namespace+)><!-- قائمة مساحات الأسماء والبادئات --> <!ELEMENT namespace (#PCDATA)><!-- يحتوي على بادئة مساحة الاسم --> <!ATTLIST namespace key CDATA #REQUIRED><!-- رقم مساحة الاسم الداخلية --> <!ELEMENT page (title,id?,restrictions?,(revision|upload)*)> <!ELEMENT title (#PCDATA)><!-- عنوان مع بادئة مساحة الاسم --> <!ELEMENT id (#PCDATA)> <!ELEMENT restrictions (#PCDATA)><!-- قيود اختيارية على الصفحات --> <!ELEMENT revision (id?,timestamp,contributor,minor?,comment?,text)> <!ELEMENT timestamp (#PCDATA)><!-- وفقاً لـ ISO8601 --> <!ELEMENT minor EMPTY><!-- علم صغير --> <!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 هنا:
- Parse MediaWiki Dump (crates.io ) عبارة عن حزمة Rust لتحليل ملفات XML.
التفاصيل والنصائح العملية
- لتحديد نطاق اسم صفحة ما، يجب مطابقة عنوانها مع البادئات المحددة في
/mediawiki/siteinfo/namespaces/namespace - القيود المحتملة هي
sysop- الصفحات المحمية
لماذا التصدير؟
لماذا لا تستخدم ببساطة تنزيل قاعدة بيانات ديناميكية؟
لنفترض أنك تقوم ببناء برنامج يعرض في نقاط معينة معلومات مأخوذة من ويكيبيديا. إذا كنت تريد أن يعرض برنامجك المعلومات بطريقة مختلفة عما يمكن رؤيته في النسخة المباشرة، فمن المحتمل أنك ستحتاج إلى رمز ويكي المستخدم لإدخالها، بدلاً من HTML النهائي.
أيضًا، إذا كنت ترغب في الحصول على جميع البيانات، فمن المحتمل أنك سترغب في نقلها بأكثر الطرق كفاءة ممكنة. تحتاج خوادم ويكيميديا إلى القيام بالكثير من العمل لتحويل كود ويكي إلى HTML. هذا الأمر يستغرق وقتاً طويلاً بالنسبة لك ولخوادم ويكيميديا، لذا فإن مجرد فهرسة جميع الصفحات ليس هو الحل الأمثل.
للوصول إلى أي مقال بصيغة XML، واحداً تلو الآخر، انتقل إلى Special:Export/Title_of_the_article