دورة XML: درس خاص حول RSS

.

كيف تتابع الأخبار في منزلك؟
تستخدم الرسيفر لاستقبال ترددات الكثير من القنوات الفضائية، كل قناة تحتوي على عدد من البرامج والمحاورات والنقل المباشر، بجهاز تحكم واحد فقط تستطيع التنقل بين هذه القنوات دون بذل أدنى جهدٍ أو وقت. تخيّل لو توجّب عليك تركيب رسيفر لكلّ قناة، كم سيكون الأمر مكلفًا ومرهقًا، وربّما توقّفتَ عن متابعة أغلب البرامج المهمّة بسبب هذا الشيء.

كيف تتابع الأخبار على الويب؟ 🙂
إذا اخترتَ أن تزور كلّ موقعٍ بشكل مستقل فكأنّك تختار تركيب رسيفر خاصّ بكلّ قناة على التلفاز! أمّا إذا اخترت متابعة المواقع عبر قارئ الخلاصات، فكأنّك تستخدم رسيفر واحد لمتابعة جميع القنوات المفضّلة دون أن يفوتك برنامج. وقارئ الخلاصات يعمل عمل الرسيفر، حيث يستقبل تحديثات الكثير من المواقع عن طريق ملفات الـ RSS الخاصّة بها.

فما هو ملف الـ RSS تقنيًا؟

الـ RSS عبارة عن ملفّ مبني بلغة XML، يمثّل قناةً معينة لأحد المواقع “أو جزءٍ منها”، كلّ قناة تحتوي على عددٍ من العناصر، كلّ عنصر يحوي “ملخصًا” بمحتويات الموقع مثل: اسم كاتب المقالة، رابط الصفحة، عنوان المقالة ، وصف له أو مقطع بسيط منه. مرّت ملفات الـ rss بتاريخ عريض وطويل، و” الزبدة” أنّه أصبح لدينا نسختين مشهورتين من الـ rss: هما (RSS1.0 , RSS2.0).

RSS1.0: هي ملفات بُنيت على ملفات تسمى RDF، هذه الملفات مبنية على لغة XML والهدف منها هو تقديم معلومات حول الموقع مثل اسم الموقع ورابطه واسم الكاتب.

RSS2.0: بُنيَت أساسًا على ملف XML وهو آخر إصدارات الـ RSS، إذ ظهر بعدها ما يُسمّى بالـ”Atom”.

وتختلف ملفات الـ Atom عن الـ RSS2.0 في كونها أكثر تعقيدًا وصلابة ودقّة ومرونة، لكنّ الـ RSS2.0 هي الأكثر انتشارًا.

دورة حياة ملف RSS2.0:

1- إنشاء الملف Creating file.
أسهل خطوة، بالذات أنّ ملفات الـ RSS لا تحتوي على namespace ولا URI ولا هم يحزنون! ملف xml عادي جدًا، الفرق الوحيد انّ امتداده قد يكون rss وقد يكون xml. العنصر الجذر له هو <rss version=”2.0″>. كلّ ملف rss يحتوي على قناة واحدة فقط  <channel>. القناة تحمل معلومات أساسية عن الموقع ككل، وتحمل معلومات العناصر المدرجة “مقالات أو تدوينات أو غيرها”.

من المعلومات الخاصّة بالموقع ككل “النجمة الحمراء يعني وجوب كتابتها في الملف”:

<title> | عنوان الموقع *
<description>
| وصف أو ملخص عن الموقع *
<link>
| رابط الموقع *
<lastBuildDate>
| تأريخ نشره
<managingEditor>
| المدير الأساسي له

أمّا بالنسبة للعناصر الداخليّة، كلّ عنصر يمثل بالوسم <item> ويحتوي هذا الوسم على معلومات “وسوم” أخرى منها:

<title> | عنوان المقالة / التدوينة / المحتوى  *
<description>
| وصف أو ملخص عنها  *
<link>
| رابط الصفحة  *
<author>
| اسم الكاتب
<enclosure>
| ملف ميديا موجود في الصفحة

مع ملاحظة وجود عدد أكبر من هذه الوسوم الَّتي تختلف الحاجة إليها من موقعٍ لآخر.

وهذا كود صفحة الـ RSS لمدونة عالم التقنية على سبيل المثال:

[xml] <rss version="2.0">
<channel>
<title>عالم التقنية</title>
<description>التقنية بين يديك</description>
<link>http://www.tech-wd.com</link>
<managingEditor>saud@tech-wd.com (سعود الهواوي)</managingEditor>
<category>Technology</category>
<item>
<title>هل برنامج الحماية لديك يعمل بالشكل المطلوب؟</title>
<description>برامج الحماية هي من البرامج الأساسية والواجب توافرها في أي كمبيوتر خصوصا لمستخدمي الانترنت المعرضين أكثر للإصابة بالفيروسات والتروجونات وملفات التجسس جراء تصفح المواقع وتحميل الملفات، ولحسن الحظ هناك العديد من برامج الحماية الجيدة ولكن يبقى السؤال المهم هل برنامج الحماية الذي اخترته يعمل بالشكل المطلوب ؟</description>
<link>http://www.tech-wd.com/wd/2009/12/31/security-software/</link>
<author>(email) ماجد البدر</author>
</item>
<item>
<title>Sprixi – موقع رائع للبحث عن الصور</title>
<description>موقع Sprixi  واحد من أفضل مواقع البحث عن الصور المجانية سريع جداً ويقدم صور ذات جودة عالية ووضوح مميز عن غيره من بقية مواقع البحث، موقع Sprixi يستمد نتائج بحث من موقعي الصور المشهورين Flickr  و OpenClipArt.org  وغيرهما من مواقع الصور التي تسمح باستعراض الصور لديها وتحميلها.</description>
<link>http://www.tech-wd.com/wd/2009/12/31/security-software/</link>
<author>(email) أبو عمر</author>
</item>
<item>
<title>ارفع ملفاتك على تويتر..</title>
<description>نعم ارفع ملفاتك ليس على تويتر بالضبط ولكن على خدمة تقدمها تويتر بالتعاون مع شركة أسبانية تدعى Ideateca، مسمى الخدمة هو FileSocial  لرفع الملفات وإضافاتها مباشرة على تويتر اوتوماتكيا في رابط مصغر بالتأكيد بدل المستخدم مع إمكانية إضافة تدوينة تويترية مصغرة في حدود 110 أحرف</description>
<link>http://www.tech-wd.com/wd/2009/12/30/upload-on-twitter/</link>
<author>(email) أبو عمر</author>
</item>
.
.
.
etc
</channel>
</rss>

[/xml]

.
.
2- تحديث ملف الـ RSS.
لو أنشأنا ملف RSS ثابت كالملف السابق واكتفينا بذلك، فلن يظهر للمستخدم إلاّ المقالات الَّتي وضعناها الآن فقط، معنى ذلك أنّنا نحتاج إلى طريقة داينميكية لتخزين الخلاصات الجديدة في ملف الـ RSS. ببساطة ، نستخدم لذلك لغات الـ Server-side مثل الـ ASP.Net أو PHP أو غيرهما.. أي لغة تدعم القراءة والكتابة والتعديل في ملف الـ XML يمكن أن تكون مفيدة لنا.

بديهيًا أيّ مقالة أو تعليق أو محتوى يُضاف إلى الموقع فإنه يخزن في قاعدة البيانات، بعد هذه الخطوة، قم بتخزين خلاصات المحتوى في ملف الـ RSS أيضًا. ثمّ ؟ نستدعي ملف الـ RSS في وسم الـ <head> في الصفحة، مع ملاحظة أنّ الموقع الواحد قد يكون له أكثر من ملف RSS، على سبيل المثال مدونات الوردبريس لها ملفين، واحد للتدوينات والثاني للتعليقات، المواقع الإخبارية غالبًا ما تحتوي على ملفات RSS بعدد التصنيفات مثل: سياسة – محلية – ثقافية… إلخ.

الاستدعاء يكون بهذا الشكل:

[xml] <link rel="alternate" type="application/rss+xml" title="عالم التقنية خلاصات RSS" href="http://www.tech-wd.com/wd/feed/">
[/xml]

ونقوم بنسخ هذا العنوان:

http://www.tech-wd.com/wd/feed

ونضعه كرابط في أيقونة جميلة من أيقونات الـ RSS ^_^

.3- القراءة Reading.
:Syndication & Aggregation

Syndication: هي عمليّة تدفق بيانات ملف الـ RSS إلى عدّة مخدمات، وملفات الـ RSS لديها قدرة ذاتية على ذلك، بمعنى أنّي لا أحتاج إلى برمجة هذه العمليّة بنفسي.

Aggregation: هي عمليّة تجميع ملفات الـ RSS قبل قراءتها، ويسمّى التطبيق المسئول عن ذلك بـ RSS news Aggregator.

قارئ الخلاصات يستخدم الـ aggregator لتجميع ملفات الـ RSS الّتي يضيفها المستخدم بغرض متابعة تحديثاتها، قد يكون قارئ الخلاصات عبارة عن تطبيق ويب مثل Google Reader أو برنامج ديسكتوب مثل FeedDemon أو حتى تطبيق Adobe Air (انقر هنا).

أرجو أنّ هذا الدرس قد قدّم لكم الفائدة العلميّة والعمليّة، للمزيد يمكنكم الاطلاع على هذه المراجع: اﻷولالثانيالثالث.

  • جهد ممتاز
    لقد كتبت موضوعاً على مدونتي يتحدث عن الـ RSS ولكن ليس بهذا التفصيل فقد كان موضوعي نظرياً.

    ذكرت: “Syndication هي عمليّة إرسال ملف الـ RSS إلى عدّة مخدمات ، وملفات الـ RSS لديها قدرة ذاتية على ذلك ، بمعنى أنّي لا أحتاج إلى برمجة هذه العمليّة بنفسي.”

    فهل حقاً ملفات RSS هي من تقوم بذلك؟ أم أن المخدمات هي من تقوم بذلك؟
    بحسب معلوماتي فإن RSS ليس إلا ملف XML عادي ليس له القدرة على عمل أي شيء بشكل مستقل والمخدمات هي من تقوم بالاتصال بهذه الملفات وسحب ماتحتويها من معلومات.

    • كلامك صحيح ..
      أقصد القدرة الذاتية على تدفق البيانات إلى مخدمات مختلفة ، فبمجرّد استدعاء الملف في الـ head تتمكن المخدمات من الوصول إليها دون أن تحتاج أنتَ إلى برمجة إرسالها .
      تم تعديل النقطة حتى لا يلتبس الفهم
      ^_^

  • Obaid AlDosari

    جميل جداً

    بارك الله فيك اخت إحسان، شرح وافي وكافي لكن باقي علينا البحث في بعض المواقع المتخصصه والقراءه بعمق ثم التطبيق

    شكراً لكِ

  • بارك الله فيك
    فعلا الانسان محتااج لمثل هذه الدروس
    في انتظار الدرس لسادس

  • أمين محمد

    أحسنت وأحسن الله إليك
    وزاد الله من أمثالك ونفع الله بك الأمة العربية والإسلامية
    وجعل الله ذلك في ميزان حسناتك
    قولووووووووووووا ……. آمين

  • بارك الله فيك ..
    صراحة لم ألتفت للـ RSS إلا في الفترة الأخيرة ..
    وندمت أشد الندم على جهلي به طوال الفترة السابقة لإنني كنت أظنه نوع من ” الترف التقني ” إن صح التعبير ^^
    أما الآن ..
    فلا تروق لي سو المواقع التي أشاهد الأيقونة البرتقالية الجميلة في اول صفحة منها ^^
    تحياتي ..

  • hind

    مشكوره جدا جدا اخت احسان لقد كنت ابحث بيأس عن شرح مبسط لأبدأ به
    انا مهتمة بتطوير القوالب وأتضح اني احتاج الي xml واتمنى لو استطيع اان اعرف كيف تعمل xml م لغات اخرى مثل php والجافاسكربت
    وأكرر شكري

تعليقات عبر الفيسبوك