engeneer_19
5th March 2010, 01:37 PM
يکی از مهمترين مفاهيم موجود در رابطه با 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 (http://www.srco.ir/Articles/DocView.asp?ID=78) ، به اين نکته اشاره گرديد که می توان يک سند 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 می توان يک ارتباط را برقرار کرد. در ادامه با استفاده از خصلت های متعددی نظير : respon***ML و يا 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"4.0"?>
نکته دهم ◄ در صورتيکه قصد ارسال اطلاعاتی را داشته باشيم که شامل عباراتی نظير < ، # و يا > باشد ، و نياز است که آنها را از طريق پارسر ارسال نمائيم ، ( استفاده از حروف فوق باعث بروز خطای پارسر خواهد شد ) می توان اطلاعات فوق را در يک گره خاص با نا م NODE_CDATA_SECTION قرار داد . مثلا" عبارت زير مقدار "#91" را بهمراه يک المان استفاده کرده است . پارسر اطلاعات موجود در بخش CDATA را می خواند ولی آنها را تفسير نخواهد کرد .
<house_number><![CDATA[#91]]><house_number>
منبع: www.srco.ir
نکته اول ◄ تکنولوژی 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 (http://www.srco.ir/Articles/DocView.asp?ID=78) ، به اين نکته اشاره گرديد که می توان يک سند 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 می توان يک ارتباط را برقرار کرد. در ادامه با استفاده از خصلت های متعددی نظير : respon***ML و يا 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"4.0"?>
نکته دهم ◄ در صورتيکه قصد ارسال اطلاعاتی را داشته باشيم که شامل عباراتی نظير < ، # و يا > باشد ، و نياز است که آنها را از طريق پارسر ارسال نمائيم ، ( استفاده از حروف فوق باعث بروز خطای پارسر خواهد شد ) می توان اطلاعات فوق را در يک گره خاص با نا م NODE_CDATA_SECTION قرار داد . مثلا" عبارت زير مقدار "#91" را بهمراه يک المان استفاده کرده است . پارسر اطلاعات موجود در بخش CDATA را می خواند ولی آنها را تفسير نخواهد کرد .
<house_number><![CDATA[#91]]><house_number>
منبع: www.srco.ir