ده نکته در رابطه با XML - DOM
یکی از مهمترین مفاهیم موجود در رابطه با XML ، تکنولوژی DOM)Document Object Model) است . XML نظیر برنامه Word و یا DHTML ( مربوط به شرکت ماکروسافت ) ، دارای یک مدل مبتنی بر شی ، برای برنامه نویسی است . در این مقاله به بررسی ده نکته مهم در رابطه با تکنولوژی XML - DOM خواهیم پرداخت .
نکته اول :
تکنولوژی DOM ، یکی از ابزارهای برنامه نویسی موجود بمنظور استقرار یک سند XML در حافظه ، تفسیر و پردازش است . ابزار فوق ، اغلب توسط برنامه های VB و ASP بمنظور پردازش فایل های XML استفاده می گردد . DOM بمنزله یک شی بوده که برنامه نویسان با استفاده از آن ، امکان فعال نمودن ، ویرایش و ذخیره یک فایل XML را بدست می آورند .
نکته دوم :
ساختار داخلی DOM مشابه چیست ؟ ساختار فوق مشابه یک درخت با شاخه ها و برگ هائی است . برخی از شاخه ها ممکن است دارای شاخه های دیگری باشند. همانگونه که در مقاله ده نکته در رابطه با XML ، اشاره گردید ، یک سند XML دارای المان هائی است که مناسب است در این مقطع و از این زاویه به آنها شاخه گفته شود. بنابراین DOM شامل مجموعه ای از المان ها است . البته ، اغلب برنامه نویسان به آنها " گره " و یا " گره فرزند " می گویند. گره ها ممکن است دارای یک مقدار، تهی و یا شامل سایر گره های فرزند باشند . المان ، گره ، گره های فرزند عملا" در بردارنده مفاهیم مشابه ای می باشند .
نکته سوم :
تکنولوژی DOM ، دارای اشیاء متفاوتی است . DOMDocument یکی از اشیاء موجود بمنظور دستیابی به DOM ( شامل اطلاعات مربوط به سند XML ) است . DOMElement و DOMNode نمونه هائی دیگر از اشیاء موجود می باشند . بمنظور انجام عملیات و پردازش های مورد نظر در DOM ، دوازده شی متفاوت پیش بینی شده است . شی DOMDocument ، اولین شی استفاده شده برای فعال نمودن یک سند XML بوده و دارای مجموعه ای از متدها و خصلت ها برای استفاده توسط برنامه نویسان است . مثلا" شی فوق، دارای خصلتی بمنظور بازیابی firstChild ( اولین فرزند ) ، lastChild ( آخرین فرزند ) ، nextSibling ( برادر بعدی ) و previousSibling (برادر قبلی ) است . در حقیقت شی DOMDocument ، تصویری از سند XML را با توجه به قوانین مربوطه در خود نگهداری کرده و با استفاده از خصلت های متعدد موجود ، امکان حرکت در طول سند با روش های متفاوت میسر می گردد .
نکته چهارم :
شی DOMDocument، دارای تعداد زیادی متد مفید نیز می باشد . مثلا" متد insertBefore برای درج یک گره قبل از موقعیت جاری استفاده می گردد. برای ایجاد یک المان جدید، می توان از متد createElement استفاده کرد . برای افزودن یک المان جدید به شی DOMDocument می بایست دو مرحله عملیات را دنبال نمود . مرحله اول : با استفاده از متد createElement المان ایجاد می گردد ( در این حالت یک شی DOMNode ، ایجاد می گردد ) . مرحله دوم : با استفاده از متد appendChild شی DOMNode را به DOMDocument اضافه می نمائیم . ( DOMDocument و DOMNode دو شی مجزا با عملکردهای خاص خود می باشند و نباید آنها را بمنزله اشیاء مشابه در نظر گرفت ) .
نکته پنجم :
می توان یک سند XML را به Html ، WML و یا یک سند XML دیگر با یک ساختار متفاوت ، تبدیل کرد . برای تحقق خواسته فوق ، می توان از متد transformNode استفاده کرد . بدین منظور لازم است از دو شی DOMDocument استفاده گردد. یکی از آنها توسط سند XML فعال و دیگری توسط XSL فعال خواهد شد. با استفاده از متد transformNode ، خروجی بصورت یک رشته خواهد بود . رشته فوق شامل نتایج مورد نظر بمنظور استفاده در WML, Html ، متن و یا سایر موارد دلخواه است .
نکته ششم : تمام اشیاء DOMDocument ، دارای یک گره ریشه می باشند . گره فوق تنها ریشه موجود بوده که سایر گره ها مستقیما" و یا غیر مستقیم به آن متصل می گردند. در یک سند XML ، دوازده گره متفاوت وجود دارد . NODE_ELEMENT ، NODE_ATTRIBUTE ، NODE_TEXT و NODE_COMMENT نمونه هائی در این زمینه می باشند . برخی از گره ها ، دارای فرزند و برخی دیگر فاقد فرزند می باشند . مثلا" NODE_ELEMENT می تواند دارای شش فرزند متفاوت ! باشد . ( نگران نباشید وضعیت فوق در رابطه با یک المان است نه انسان ) و یا NODE_TEXT فاقد فرزند است .
نکته هفتم :
یکی دیگر از اشیاء بسیار مفید ، شی HTTPRequest می باشد. شی فوق امکان گفتگوی برنامه هائی که در سمت سرویس گیرنده اجراء می گردند را با سرویس دهنده وب فراهم می نماید . این شی شامل تمامی روتین های مورد نیاز بمنظور برقراری ارتباط و مبادله اطلاعات است . پس از ارتباط با سرویس دهنده ، از طریق متدهای POST و یا GET ، با استفاده از متد Send می توان یک ارتباط را برقرار کرد. در ادامه با استفاده از خصلت های متعددی نظیر : responseXML و یا responseText می توان اقدام به بازیابی XML و یا متن مورد نظرنمود . شی HTTPRequest بهمراه اشیاء XML در IE ارائه شده است .
نکته هشتم :
پاس دادن رشته های XML در برنامه ها و بین برنامه ها ، یکی از خواسته های مورد نیار است . در این راستا متدهای Load و LoadXML ازشی DOMDocument مطرح می باشند . متد Load، باعث فعال نمودن یک فایل XML شده ، در صورتیکه متد LoadXML یک رشته را فعال می نماید . برای توقف فعال نمودن یک سند XML ، می توان از متد abort استفاده کرد . خصلت parseError یک امکان در دسترس ، برای کنترل خطاء و متد save برای ذخیره نمودن XML بصورت یک فایل استفاده می گردد . مثلا" در صورتیکه یک رشته XML را که " خوش شکل " نمی باشد ، فعال نمائیم ، خصلت parseError شامل یک کد خطاء بوده و می توان با استفاده از آن برخورد مناسبی با وضعیت پیش آمده را انجام داد .
نکته نهم :
یک از انواع گره هائی که می توان در یک DOMDocument درج کرد ، DOMProcessingInstruction است . یک PI)Processing Instructing) ، شامل دستورالعمل هائی است که تمایلی به تفسیر آنها را نداریم . مثلا" شاید بخواهیم جزئیات مربوط به نسخه خاصی از برنامه RealAudio را که از اطلاعات آن یک المان در سند استفاده می نماید ، ارسال نمائیم ، در چنین مواردی می توان یک دستورالمل PI بصورت زیر در سند درج کرد : <?realaudio version"۴.۰"?>
نکته دهم :
در صورتیکه قصد ارسال اطلاعاتی را داشته باشیم که شامل عباراتی نظیر < ، # و یا > باشد ، و نیاز است که آنها را از طریق پارسر ارسال نمائیم ، ( استفاده از حروف فوق باعث بروز خطای پارسر خواهد شد ) می توان اطلاعات فوق را در یک گره خاص با نا م NODE_CDATA_SECTION قرار داد . مثلا" عبارت زیر مقدار "#۹۱" را بهمراه یک المان استفاده کرده است . پارسر اطلاعات موجود در بخش CDATA را می خواند ولی آنها را تفسیر نخواهد کرد .
<house_number><![CDATA[#۹۱]]><house_number>