الفصل الخامس: تحليل مثيل XML
الخطوط العريضة:
1: مثال التأثير
الثاني: تحليل المثال 1. تحديد شعار جديد.
2. قم بإنشاء مستند XML.
3. قم بإنشاء ملف HTML المقابل.
يتم استخدام XML على نطاق واسع في مجالات مختلفة، مثل MathML في مجال التكنولوجيا، وWML في تطبيقات الاتصالات اللاسلكية، وSVG في صور الشبكة، وما إلى ذلك. ونركز هنا على تطبيق XML على الويب. يستفيد تطبيق XML على الويب بشكل أساسي من إمكانياته القوية في معالجة البيانات. بشكل عام، باستخدام XML مع البرامج من جانب الخادم مثل JavaScript وASP، يمكن تحقيق جميع احتياجات التطبيقات تقريبًا على الشبكة.
نظرًا لسهولة الشرح، نقدم مثالًا بسيطًا أدناه، والذي لا يتضمن البرنامج من جانب الخادم. والغرض من ذلك هو إعطاؤك فهمًا إدراكيًا لقدرات معالجة بيانات XML.
حسنًا، دعونا أولاً [انقر هنا] لرؤية تأثير المثال. (يرجى استخدام متصفح IE5.0 أو الإصدار الأحدث لفتحه)
هذه وظيفة بسيطة لاسترجاع بيانات سجل القرص المضغوط. يمكنك الاطلاع على المعلومات ذات الصلة بقرص مضغوط واحد من خلال النقر على "السابق" و"التالي". استخدمنا في الأصل طريقتين لتحقيق هذا التأثير:
1. استخدم DHTML لإخفاء البيانات في طبقات مختلفة وعرضها بشكل تسلسلي من خلال أحداث الماوس؛
2. استخدم برامج الخلفية (مثل ASP وCGI وPHP وJSP وما إلى ذلك) للاتصال بالبيانات من جانب الخادم.
ولكن في هذا المثال، عندما نفتح الكود الأصلي للصفحة، يمكننا أن نرى أنه لا يوجد DHTML DIV أو إجراء نموذج تم تنفيذه بالكامل في XML. دعونا نحلل عملية الإنتاج أدناه:
الخطوة الأولى: تحديد هوية جديدة.
وفقًا لبيانات القرص المضغوط الفعلية، قم أولاً بإنشاء تعريف جديد باسم <CD>، وثانيًا، قم بإنشاء تعريف البيانات ذات الصلة، وهي: اسم القرص المضغوط <العنوان>، والمغني <الفنان>، وسنة النشر <السنة>، والبلد <البلد>، الشركة المصدرة <الشركة> والسعر <السعر>، وأخيرًا، يجب إنشاء شعار باسم الكتالوج <CATALOG>. لماذا إنشاء علامة <CATALOG> أخرى؟ لأنه منصوص عليه في مستند XML أنه يجب ولا يمكن أن يكون هناك سوى عنصر جذر واحد (هوية)، لدينا بيانات قرص مضغوط متعددة، وهذه البيانات في علاقة متوازية، لذلك نحتاج إلى إنشاء عنصر جذر لهذه العناصر المتوازية.
تتوافق تعريفات وعلاقات العناصر المذكورة أعلاه تمامًا مع معايير XML ولا تتطلب تعريف ملف DTD خاصًا، لذلك يمكن حذف تعريف DTD. إذا أردنا استخدام DTD للتعريف، فيمكن التعبير عن العملية المذكورة أعلاه على النحو التالي:
<!عنصر كتالوج (قرص مضغوط)*>
<!العنصر المضغوط (العنوان، الفنان، السنة، البلد، الشركة، السعر)>
<!عنوان العنصر (#PCDATA)>
<!عنصر الفنان (#PCDATA)>
<!عنصر السنة (#PCDATA)>
<!عنصر البلد (#PCDATA)>
<!شركة ELEMENT (#PCDATA)>
<!سعر العنصر (#PCDATA)>
يشير هذا الرمز إلى أن العنصر CATALOG يحتوي على عناصر فرعية متعددة للقرص المضغوط، ويحتوي القرص المضغوط للعنصر الفرعي بدوره على ستة عناصر فرعية: العنوان، الفنان، السنة، البلد، الشركة، السعر، ويتم تعريف محتوياتها كنص (الأحرف، أرقام، نص). (ملاحظة: للحصول على تعليمات بناء الجملة المحددة، يرجى الاطلاع على مقدمة DTD في الفصل السابق)
الخطوة 2: إنشاء مستند XML.
<?xml version="1.0"?>
<الكتالوج>
<قرص مضغوط>
<TITLE>سخرية الإمبراطورية</TITLE>
<ARTIST>بوب ديلان</ARTIST>
<COUNTRY>الولايات المتحدة الأمريكية</COUNTRY>
<COMPANY>كولومبيا</COMPANY>
<PRICE>10.90</PRICE>
<سنة>1985</YEAR>
</CD>
<قرص مضغوط>
<TITLE>أخفي قلبك</TITLE>
<ARTIST>بوني تايلور</ARTIST>
<COUNTRY>المملكة المتحدة</COUNTRY>
<COMPANY>سجلات CBS</COMPANY>
<PRICE>9.90</PRICE>
<سنة>1988</YEAR>
</CD>
<قرص مضغوط>
<TITLE>أعظم الزيارات</TITLE>
<ARTIST>دوللي بارتون</ARTIST>
<COUNTRY>الولايات المتحدة الأمريكية</COUNTRY>
<COMPANY>RCA</COMPANY>
<PRICE>9.90</PRICE>
<سنة>1982</YEAR>
</CD>
<قرص مضغوط>
<TITLE>لا زلت تشعر بالحزن</TITLE>
<ARTIST>غاري مور</ARTIST>
<COUNTRY>المملكة المتحدة</COUNTRY>
<COMPANY>الأحمرات العذراء</COMPANY>
<PRICE>10.20</PRICE>
<سنة>1990</YEAR>
</CD>
<قرص مضغوط>
<TITLE>إيروس</TITLE>
<ARTIST>إيروس رامازوتي</ARTIST>
<COUNTRY>الاتحاد الأوروبي</COUNTRY>
<COMPANY>BMG</COMPANY>
<PRICE>9.90</PRICE>
<سنة>1997</YEAR>
</CD>
</الكتالوج>
يستخدم الكود أعلاه أولاً بيان التصريح <?xml version="1.0"?> للإشارة إلى أن هذا مستند XML، وأن تنسيقه يتوافق مع المواصفات القياسية لـ XML 1.0. ثم هناك محتوى الوثيقة، وشجرة البنية واضحة جدًا:
<الكتالوج>
<قرص مضغوط>
...
</CD>
<قرص مضغوط>
...
</CD>
</الكتالوج>
تم تحديد إجمالي 5 مجموعات من البيانات. نقوم بحفظ الكود أعلاه كملف cd.xml للاتصال.
الخطوة 3: قم بإنشاء ملف HTML المقابل.
1. استيراد بيانات XML.
نحن نعلم أنه من بين المتصفحات الشائعة حاليًا، فإن متصفحات Microsoft IE5.0 وما فوقها فقط هي التي تدعم حاليًا XML. يدعم IE إدراج XML من خلال كائن الكائن في HTML، ويستورد البيانات من خلال طريقة XMLDocument.load() لـ js. دعونا نلقي نظرة على الكود: <object WIDTH="0" HEIGHT="0"
فئة = "clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" معرف = "xmldso">
</كائن>
تعريف كائن باسم المعرف xmldso. ثم استخدم js لإدخال بيانات XML في منطقة الرأس:
<script for='window'event='onload'>
xmldso.XMLDocument.load("cd.xml");
</script>
2. حزمة البيانات.
سيتم بعد ذلك استخدام علامة <SPAN> لربط بيانات XML في الجدول. من بينها، ID وDATASRC وDTATFLD كلها سمات <SPAN>. الرمز هو كما يلي:
<الجدول>
<tr><td>العنوان:</td><td><SPAN ID="title" DATASRC=#xmldso DATAFLD="TITLE"></SPAN></td></tr>
<tr><td>الفنان:</td><td><SPAN ID="artist" DATASRC=#xmldso DATAFLD="ARTIST"></SPAN></td></tr>
<tr><td>السنة:</td><td><SPAN ID="year" DATASRC=#xmldso DATAFLD="YEAR"></SPAN></td></tr>
<tr><td>الدولة:</td><td><SPAN ID="country" DATASRC=#xmldso DATAFLD="COUNTRY"></SPAN></td></tr>
<tr><td>الشركة:</td><td><SPAN ID="company" DATASRC=#xmldso DATAFLD="COMPANY"></SPAN></td></tr>
<tr><td>السعر:</td><td><SPAN ID="price" DATASRC=#xmldso DATAFLD="PRICE"></SPAN></td></tr>
</الجدول>
3. عملية العمل.
وأخيرًا، قم بتوفير أزرار تصفح للبيانات:
<INPUT TYPE=button VALUE="القرص المضغوط السابق" ONCLICK="moveprevious()">
<نوع الإدخال=زر VALUE="القرص المضغوط التالي" ONCLICK="movenext()">
واستخدم js لإكمال وظيفتين للنقر بالماوس: movenext() وmoveprevious(). أضف الكود التالي إلى منطقة الرأس:
<لغة البرمجة = "جافا سكريبت">
الدالة movenext()
{
إذا (xmldso.recordset.absoluteposition < xmldso.recordset.recordcount)
{
xmldso.recordset.movenext();
}
}
وظيفة التحرك السابق ()
{
إذا (xmldso.recordset.absoluteposition > 1)
{
xmldso.recordset.moveprevious();
}
}
</script>
حسنًا، دعونا نلقي نظرة على الكود الأصلي بالكامل لملف HTML أولاً:
<أتش تي أم أل>
<الرأس>
<script for='window'event='onload'>
xmldso.XMLDocument.load("cd.xml");
</script>
<لغة البرمجة = "جافا سكريبت">
الدالة movenext()
{
إذا (xmldso.recordset.absoluteposition < xmldso.recordset.recordcount)
{
xmldso.recordset.movenext();
}
}
وظيفة التحرك السابق ()
{
إذا (xmldso.recordset.absoluteposition > 1)
{
xmldso.recordset.moveprevious();
}
}
</script>
<TITLE>التنقل عبر القرص المضغوط</TITLE>
</الرأس>
<الجسم>
<ص>
<عرض الكائن = "0" الارتفاع = "0"
فئة = "clsid:550dda30-0541-11d2-9ca9-0060b0ec3d39" معرف = "xmldso">
</كائن>
<الجدول>
<tr><td>العنوان:</td><td><SPAN ID="title" DATASRC=#xmldso DATAFLD="TITLE"></SPAN></td></tr>
<tr><td>الفنان:</td><td><SPAN ID="artist" DATASRC=#xmldso DATAFLD="ARTIST"></SPAN></td></tr>
<tr><td>السنة:</td><td><SPAN ID="year" DATASRC=#xmldso DATAFLD="YEAR"></SPAN></td></tr>
<tr><td>الدولة:</td><td><SPAN ID="country" DATASRC=#xmldso DATAFLD="COUNTRY"></SPAN></td></tr>
<tr><td>الشركة:</td><td><SPAN ID="company" DATASRC=#xmldso DATAFLD="COMPANY"></SPAN></td></tr>
<tr><td>السعر:</td><td><SPAN ID="price" DATASRC=#xmldso DATAFLD="PRICE"></SPAN></td></tr>
</الجدول>
<ص>
<INPUT TYPE=button VALUE="القرص المضغوط السابق" ONCLICK="moveprevious()">
<نوع الإدخال=زر VALUE="القرص المضغوط التالي" ONCLICK="movenext()">
</ص>
</الجسم>
</html>
احفظ الكود أعلاه كملف cd.htm وقم بتجميعه مع ملف cd.xml في الخطوة الثانية. افتح الملف cd.htm وسترى نفس التأثير كما في المثال أعلاه.
حسنًا، لقد تعلمنا الكثير عن XML حتى الآن، فلنلخص الفصول الخمسة السابقة، وهي مقدمة XML السريعة والمبادئ المفاهيمية لـ XML ومصطلحات XML وبناء جملة XML وأمثلة تحليل لهذا الفصل. هنا، ينتهي الجزء التعليمي. أثناء عملية الكتابة، بذل Ajie قصارى جهده لشرح مفاهيم XML ذات الصلة بطريقة سهلة الفهم، وبذل قصارى جهده لإخبار الجميع بفهمه. ومع ذلك، لأنني لم أدرس XML لفترة طويلة، فقد فهمت تقنية XML بأكملها ليست منهجية ومتعمقة بما فيه الكفاية، لذا فمن المحتم أن يكون هناك بعض الإغفالات، يرجى تصحيحي وسامحني.