دورة XML : الدرس الثاني

.

  • البنية الهيكلية :

الهيكلية الشبيهة بالشجرة Treelike Structure :

هي أحد أشهر أشكال تنظيم البيانات في الحاسوب ، حيث تخزّن البيانات في وحداتٍ Nodes متفرّعة عن بعضها البعض ، تبدأ من الجذر Root الَّذي يحمل جميع الوحداتِ الأخرى ، وتنتهي بالأوراق Leaves الّتي لا تتفرّع عنها أيّ وحدات ، ومن هنا جاء الاسم treelike structure ، غير أنّ الفرق بين الشجرة الحقيقيّة وشجرة البيانات هو أنّ جذر الشجرة الحقيقيّة يكون في الأسفل بينما تكون أوراقها في الأعلى ، لكنّ جذر شجرة البيانات يكون في الأعلى وتكون الأوراق في الأسفل .

ولكلّ وحدةٍ من هذه الوحدات اسمًا تُعرف به ، ولا يوجد حرجٌ من أن تحمل أكثر من وحدة نفس الاسم ، فالوصول إلى الوحدات لا يعتمد على اسمها فقط ، بل يعتمد على المسار الذي تعبره لتصل إليها .

.

.

وشجرة البيانات تنتهج نهجًا وراثيًا ، حيث :

1-     لكلّ شجرة جذر واحد فقط ، لا يمكن للشجرة أن يكون لها أكثر من جذرٍ ولا أقل ، والجذر هو الوحدة الوحيدة الَّتي ليس لها أب تتفرّع عنه .

2-     كلّ الوحداتِ الَّتي تتفرّع عن وحدةٍ ما تصبح أبناء Children لها.

3-     أبناء الأبناء يصبحون أحفادًا  descendants للوحدة الأب .

4-     آباء الآباء يُعرفون بالأجداد أو الأسلاف ancestors للوحدة الابن .

5-     الوحدات الَّتي تتفرّع عن الأب نفسه تسمّى بالإخوة Siblings .

وبالنظر إلى شكل الشجرة أعلاه ، يمكننا استنتاج أنّه :

1-     جذر هذه الشجرة هو الوحدة A .

2-     يتفرَّع من الجذر A  ابنين هما الوحدتين B1,B2 .

3-     يتفرَّع من الوحدة B2 ابنين هما الوحدتين C1,C2 .

4-     يتفرَّع من الوحدة C1 ابنين هما الوحدتين D1,D2 .

5-     الوحدة B1 هو أخ للوحدة B2 .

6-     الوحدة C1 هو أخ للوحدة C2 .

7-     الوحدة D1 هو أخ للوحدة D2 .

8-     النصّ ( Learn XML ) هو وحدة نصيّة “Text Node” متفرعة كابن من الوحدة C2 .

9-     النصّ ( E7san ) هو وحدة نص متفرعة كابن من الوحدة D2 .

وليست ملّفات الـ XML وحدها لها هيكليّة شبيهة بالشجرة ، فكما أردفنا في الدرس الأول ، الهيكلية الشبيهة بالشجرة هي ميزة تتميّز بها لغات الترميز عامّة ، HTML أيضَا على سبيل المثال .

بعض النقاط المهمّ إدراكها عند التعامل مع ملفات XML :

1-     تُعرف الوحدات في ملف XML بالعناصر XML Elements .

2-     هذه العناصر :

* قد تحمل بياناتٍ نصيّة.

* أو قد تحمل وحداتٍ أخرى .

* أو قد تجمع بين هذا وذاك .

* أوقد تكون عناصر فارغة .

على اختلاف وكثرة اللغات والتقنيات الَّتي تتعامل برمجيًّا مع ملفات XML ، إلاّ أنّها في النهاية تتفق على فهم الهيكليّة الشجريّة للـ XML .

.

.

  • إنشاء ملف XML :

1-     افتح برنامج المفكرة أو أي محرر آخر .

ملاحظة :

توجد محررات خاصّة بلغة XML ، لكنّي أنصح باستخدام محرر Notepad++ لتحرير ملفات الـ XML والـ HTML والـ CSS وغيرها  .

2-     يفضل كتابة إعلان ” Declaration ” في أعلى الصفحة عن ملف الـ XML يحتوي على رقم الإصدار وعلى نوع التشفير :

[xml] <?xml version="1.0" encoding="utf-8"?>
[/xml]

* سوف نقوم بتحويل مثال الشجرة البيانيّة أعلاه إلى ملف XML عن طريق تحويل الوحدات إلى وسوم مزدوجة “Tags” :

[xml] <?xml version="1.0" encoding="utf-8"?>
<A></A>
[/xml]

العنصر الأول هو عنصر الجذر A ، جميع العناصر الأخرى سوف تكون محصورةً بين الوسمين <A></A>.

لذلك عادة ما يكون اسم الجذر معبرًا عن محتوى ملف الـ XML ، فإذا كان لدينا ملف XML يحتوي على بيانات زوار الموقع مثلاً ، يكون اسم الجذر : visitors_info .

[xml] <?xml version="1.0" encoding="utf-8"?>
<A>
<B1></B1>
<B2></B2>
</A>
[/xml]

قمنا بتحويل الوحدتين B1 وB2 إلى وسمين مزدوجين ووضعهما داخل عنصر الجذر ، وهكذا .. كلّ وحدة سوف تُحوّل إلى وسم فتح ووسم إغلاق يوضع داخل وسمي العنصر الأب لها .

[xml] <?xml version="1.0" encoding="utf-8"?>
<A>
<B1></B1>
<B2>
<C1></C1>
<C2></C2>
</B2>
</A>
[/xml] [xml] <?xml version="1.0" encoding="utf-8"?>
<A>
<B1></B1>
<B2>
<C1>
<D1></D1>
<D2></D2>
</C1>
<C2></C2>
</B2>
</A>
[/xml]

* أخيرًا ، نكتب الوحدات النصيَّة داخل الوسوم :

[xml] <?xml version="1.0" encoding="utf-8"?>
<A>
<B1></B1>
<B2>
<C1>
<D1></D1>
<D2>E7san</D2>
</C1>
<C2> Learn XML</C2>
</B2>
</A>
[/xml]

*  قم بحفظ الملف بامتداد .xml مثال / any_name.xml .

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

الصفات Attributes :

عناصر الـXML يمكن أن تحتوي على صفة أو أكثر تقدّم معلومات إضافية يكتبها المبرمج حول العنصر .

تُكتب هذه الصفات داخل وسم الفتح ، وتتكون من جزئين :

1-      اسم الصفة .

2-     قيمة الصفة .

[xml] <?xml version="1.0" encoding="utf-8"?>
<A attribute_name="value">
<B1 parent="A" ></B1>
<B2 parent="A">
<C1>
<D1></D1>
<D2>E7san</D2>
</C1>
<C2> Learn XML</C2>
</B2>
</A>
[/xml]

وبهذا ينتهي الدرس الثاني ، آمل أن يحوز على رضاكم وأن تخرجوا بفائدة منه ..

في الدرس الثالث سوف نناقش إن شاء الله :
1- قواعد كتابة ملفات الـ XML
2- تطبيق عملي لإنشاء ملف يحتوي على بيانات كتّاب مدونة جماعية .