- ميلاد البغداديعضو جديد
- الجنس :
عدد المساهمات : 22
المزاج : حزين
النقاط : 64
الدرس الثالث +الرابع
الأربعاء مايو 25, 2011 7:10 pm
- قواعد كتابة ملف الـ XML :
*
1- يجب أن يكون لكل وسم فتح وسم إغلاق ، لا يُسمح لي أن أفتح وسمًا بدون إغلاقه ، وهذه هي إحدى الفروقات النحوية الهامّة بين XMLوHTML ، ففي لغة HTML تستطيع فتح وسمٍ بدون إغلاقه مثل وسم .
ورغم ذلك ، فقواعد الـ XML تسمح للمطورين بكتابة وسوم مفردة شريطة أن يتمّ إغلاق الوسم في وسم الفتح نفسه .
وكمثال ، نعود لملف الـ XML الذي قمنا بإنشائه في الدرس السابق :
العنصرين B1 و D1 لا يحتاجان إلى وسم إغلاق ، هذه الوسوم تُعرف بالعناصر الفارغة Empty Elements ، ويمكن إعادة كتابة الملف السابق اختصارًا بهذا الشكل :
2- لغة الـ XML حساسة لحالة الأحرف ، أي أنها تفرّق بين الحرف الكبير والحرف الصغير :
PHP كود :
<A> لا تساوي <a>
<B1> لا تساوي<b1>
<Ab> لا تساوي<AB>
3- أسماء العناصر لا يمكن أن تحتوي على مسافات .
4- أسماء العناصر يمكن أن تحتوي على حروف أو أرقام أو رموز مثل : * $ _
5- أسماء العناصر لا يمكن أن تبدأ بأرقامٍ أو رموز ، بل بحروفٍ دائمًا .
6- أسماء العناصر لا يمكن أن تبدأ بكلمة XML .. جميع الوسوم التالية هي وسوم خاطئة :
PHP كود :
<XML> X
<xMl> X
<xmle7san> X
<Xmllang> X
<xMl> X
7- قيم صفات العناصر يجب أن تكتب بين علامتي تنصيص ” ” .
أفضل أسلوب لكتابة عناصر الـ XML هو :
* استخدم الحروف الصغيرة عوضًا عن الكبيرة .
* اجعل أسماءك واضحة وذات معنى مباشر .
* استخدم علامة ( _ ) للفصل بين الكلمة والأخرى مثل : visitor_name أو city_code .
* لا تستخدم إحدى هذي العلامات للفصل بين الكلمات ( - : . ) .
التعليقات في ملفات XML :
مثل أي لغة ترميز أو لغة برمجة ، يمكنك كتابة ملاحظاتك في ملف XML .
هذه الملاحظات يستخدمها المطورون عادةً إمّا لكتابة معلومات عن الملف ، أو لحفظ الحقوق ، أو توجيهات للمبرمجين في المصادر المفتوحة .
لكتابة ملاحظة في ملف XML ، اكتب ما تريد وضعه بين هاتين العلامتين :
PHP كود :
—write any comment اكتب أي ملاحظة -->
- تطبيق عملي لإنشاء ملف XML :
سوف ننشئ معًا ملف XML يحتوي على بيانات كتّاب مدونة جماعيَّة مثل عالم التقنيَّة .
أوّل خطوة هي اختيار اسم مناسب لعنصر الجذر ، اسم يعبّر عن محتوى الملف بوضوح ويكون مختصرًا وقصيرًا ما أمكن :
بذلك نكون قد أنشأنا نواة أو أساس ملف الـ XML .
نحتاج إلى تضمين سجلات لعددٍ من كتاب عالم التقنية ، سنقم بإدخال 3 سجلات الآن .
فيما بعد ، تستطيع استخدام اللغات البرمجيّة وتقنيات أخرى لقراءة هذا الملف وإضافة عدد أكبر من السجلات أو تعديل محتواها أو حذفها أو قراءتها .
كل عنصر باسم author سوف يتضمن معلومات خاصَّة بكاتبٍ معين :
1- اسمه
2- رقم id
3- بعض مهاراته
4- رابط لمدونته
5- رابط آخر لصفحته في عالم التقنية
قم بحفظ الملف باسم techwldAuthors.xml في مجلدٍ خاص ، سوف نستخدمه لاحقًا في الدروس إن شاء الله .
انتهى الدرس الثالث ، في الدرس الرابع بإذن الله سوف نناقش :
1- الإبحار في ملفات XML .
2- Namespaces .
الدرس الرابع
- الإبحار في ملفات الـ XML :
تحدّثنا في الدرس الثاني عن الهيكليّة الشجريّة لملفات XML ، وقلنا بأنّه من الجائز أن نعطي نفس الاسم لأكثر من عنصر لأنّ الوصول إلى العناصر لا يتمّ عبر اسمها فحسب . في الدرس الثالث وضعنا مثالاً تطبيقيًا لإنشاء ملف XML يحمل بيانات كتّاب عالم التقنيّة .
الآن ، ماذا لو أردنا الوصول إلى بيانات كاتبٍ معين ، عن طريق رقم الـ id الخاصّ به مثلاً .. أو عن طريق اسمه أو رابط مدونته ؟
إنّ معرفتنا لاسم العنصر الَّذي يحمل بيانات الكاتب الواحد وهو
توجد طريقتين لذلك وهما :
1- استخدام لغات مخصّصة للاستعلام في ملفات XML ، وعلى رأسها :
XPath ، XQuery
هذه اللغات تقدّم أسلوبًا معيّنًا للبحث في ملف XML بالاعتماد على وجود معلوماتٍ حول العناصر ، على سبيل المثال :
- اسم العنصر .
- اسم أحد أبناءه .
- اسم العنصر الأب .
- قيمة إحدى الصفات .
2- التعامل المباشر مع الهيكل الشجريّ لملف الـ XML ، وهنا يكون الوصول للعنصر عن طريق تتبع المسار الوراثي له .
بالنسبة للغة XPath فسوف نتناولها بالتفصيل في الجزء الثاني من الدورة بإذن الله ، أمّا درسنا اليوم فسوف نتحدّث فيه عن الطريقة الثانية .
مع ملاحظة أنّنا نستطيع الجمع بين الطريقتين أثناء البرمجة .
افتح ملف techwldAuthors.xml الذي قمنا بإنشائه في المرة السابقة عبر المتصفح .
لاحظ الهيكلية الشجرية التي تحدثنا عنها في الدرس الأول ، فهم هذه الهيكلية مهمّ جدًا للتعامل مع عناصر الـ XML برمجيًا .
لاحظ المستويات المختلفة في الشجرة ، التي تبدأ بالجذر ، ثمّ بأبناء الجذر ، ثم بأبناء أبناءه .. وهكذا .
1- الوصول إلى العناصر سيكون عبر ترقيمها ، طريقة الترقيم سهلة جدًا لكن تحتاج إلى تركيز شديد أثناء التنفيذ ، ببساطة سوف نأخذ كل مجموعة إخوة “Siblings” ونقوم بترقيمهم بدءًا من الصفر ثم 1 .. 2 .. 3 وهكذا .
1- لكل عنصر مسار “path” يجب عبوره للوصول إليه ، المسار يبدئ من رقم الجذر 0 ويمر بجميع أرقام آباء العنصر حتى يصل إليه .
بعبارة أخرى ، كتابة مسار العنصر يشبه كتابة اسم الإنسان ! نحن نكتب اسم الفرد ثم اسم والده ثم اسم جده .. حتى نصل إلى جده الكبير ، في حالة العناصر يحدث العكس ، حيث نبدأ بكتابة رقم الجد الكبير وهو ” الجذر ” ثمّ رقم الجد الذي يليه .. حتى نصل إلى رقم الأب ثمّ رقم العنصر المراد الوصول إليه :
1- مسار الوصول إلى العنصر techwld_authors: 0 .
2- مسار الوصول إلى العنصر author : 00 .
3- مسار الوصول إلى العنصر author : 01 .
4- مسار الوصول إلى العنصر author : 02 .
5- مسار الوصول إلى العنصر name : 000 .
6- مسار الوصول إلى العنصر skills : 001 .
7- مسار الوصول إلى العنصر techwld_page : 002 .
8- مسار الوصول إلى العنصر blog : 003 .
9- مسار الوصول إلى العنصر skill: 0010 .
10- مسار الوصول إلى العنصر skill: 0011 .
لتقريب المفهوم صوريًا ، للوصول إلى العنصر blog نتبع المسار التالي 003 :
أنبّه على أمرٍ مهم ، لو لاحظتم الوسم author مكرر في المستوى الواحد ، قد أجده في الخانة 0 أو 1 أو حتى 1000 ، لذلك فمن الاستحالة الوصول إليه إلاّ بمعرفة معلومات يحملها ، على سبيل المثال رقم الـ id أو اسم الكاتب name ، كذلك ينطبق الأمر على الوسم skill .. من المستحيل تحديد ما هي المهارة الَّتي أبحث عنها دون أن أعرفها ” بالنصّ ” حتى لو كنتُ قد توصلتُ لصاحبها .
بالنسبة للوسوم name , blog , skills , techwld_page فهي وسوم غير مكررة في المستوى الواحد ، دائمًا سوف يكون الوسم name في الخانة 0 والوسم blog في الخانة 3 ، لذلك فبمجرّد وصولي للوسم author يصبح بإمكاني الوصول إليها جميعًا .
أمر آخر ، المسارات الَّتي ذكرتُها سابقًا تبدأ من جذر الملف ، أستطيع أن أبدأ من أيّ عنصرٍ آخر ، على سبيل المثال إذا وصلت إلى العنصر author باتباعي المسار 002 فأستطيع مباشرةً أن أنتقل إلى 0 للوصول إلى العنصر name .
قد يبدو الأمر سهلاً ومملاً للوهلة الأولى ، لكنّ هذا نموذج صغير جدًا لملف XML .
عندما يصل عدد المستويات في الملف الواحد إلى 20 مستوى ، كل مستوى يحتوي على عشرات العناصر المتداخلة يصبح الأمر مثيرًا ومشوقًا جدًا جدًا ، شخصيًا أجد أنّه من أكثر المهام التي تجعلني أشعر بالمتعة والحماس في التعامل مع ملفات الـ XML هو الإبحار فيها .
ما رأيكم بكتابة مسار للوصول بجانب كل عنصر في ملف techwldAuthors.xml ؟
- XML name spaces :
اقرأ ملف الـ XML التالي :
هل هذا ملف XML أم XHTML ؟ O_O
في حال تشابه أسماء العناصر واختلاطها علينا فإنّنا نستخدم ما يُعرف بفضاءات الأسماء أو الـ Namespaces .
لنفرض أنّ لدينا 3 عناصر تحمل الاسم لكنّ كلاً منها يعبّر عن محتوىً مختلف ، سوف نُلحق كلّ وسم بلاحقٍ مختلف يميّزه عن الآخر .
تتكون فضاءات الأسماء في لغة xml من جزئين :
1- Prefix Name ، وهو اللاحق الذي يوضع قبل اسم العنصر لتمييزه ، ونفصل بينهما بعلامة ( : )
2- وصف الـ Name Prefix ونوضّحه في العنصر الجذر root element .
ليصبح ملفّ الـ XML بهذا الشكل :
ثمّ نضع تعريف لكلّ name prefix في عنصر الـ root :
صيغة التعريف هي :
PHP كود :
xmlns:prefix="URI"
ماذا نعني بالـ URI ؟
هو رابط لصفحة إنترنت تقدّم معلوماتٍ حول مصطلح معين ، هذه الصفحة تكون غالبًا تابعة لمؤسسات رسميّة أو معتمدة .
وبدلاً من أن يضع المطورون وصف للـ namespaces في تعريفهم له ، يشيرون إلى روابط تعرّفها وبذلك يختصرون على أنفسهم الوصف المتكرر الَّذي لا طائل له .
ليصبح الملفّ بهذا الشكل :
هل سأستفيد من استخدام فضاءات الأسماء في التطوير ؟
غالبًا لا .. لكنّي أحببتُ وضعها ضمن الدروس لأنّ الكثير من اللغات والملفات المساعدة للـ XML تعتمد عليها .
على سبيل المثال ملّفات xml schema الَّتي تُستخدم لتعريف عناصر الـ xml تستخدم فضاء اسم هو / xmlns:xs=”http://www.w3.org/2001/XMLSchema” .
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى