تور لحظه آخری
امروز : جمعه ، 18 آبان 1403    احادیث و روایات:  پیامبر اکرم (ص):سفره هايتان را با سبزى، زينت دهيد ؛ زيرا سبزى با بسم اللّه الرحمن الرحيم، شيطان...
سرگرمی سبک زندگی سینما و تلویزیون فرهنگ و هنر پزشکی و سلامت اجتماع و خانواده تصویری دین و اندیشه ورزش اقتصادی سیاسی حوادث علم و فناوری سایتهای دانلود گوناگون شرکت ها

تبلیغات

تبلیغات متنی

صرافی ارکی چنج

صرافی rkchange

سایبان ماشین

دزدگیر منزل

تشریفات روناک

اجاره سند در شیراز

قیمت فنس

armanekasbokar

armanetejarat

صندوق تضمین

Future Innovate Tech

پی جو مشاغل برتر شیراز

لوله بازکنی تهران

آراد برندینگ

موسسه خیریه

واردات از چین

حمية السكري النوع الثاني

ناب مووی

دانلود فیلم

بانک کتاب

دریافت دیه موتورسیکلت از بیمه

قیمت پنجره دوجداره

بازسازی ساختمان

طراحی سایت تهران سایت

irspeedy

درج اگهی ویژه

تعمیرات مک بوک

دانلود فیلم هندی

قیمت فرش

درب فریم لس

زانوبند زاپیامکس

روغن بهران بردبار ۳۲۰

قیمت سرور اچ پی

خرید بلیط هواپیما

بلیط اتوبوس پایانه

قیمت سرور dl380 g10

تعمیرات پکیج کرج

لیست قیمت گوشی شیائومی

خرید فالوور

پوستر آنلاین

بهترین وکیل کرج

بهترین وکیل تهران

اوزمپیک چیست

خرید اکانت تریدینگ ویو

خرید از چین

خرید از چین

تجهیزات کافی شاپ

نگهداری از سالمند شبانه روزی در منزل

بی متال زیمنس

ساختمان پزشکان

ویزای چک

محصولات فوراور

خرید سرور اچ پی ماهان شبکه

دوربین سیمکارتی چرخشی

همکاری آی نو و گزینه دو

کاشت ابرو طبیعی و‌ سریع

الک آزمایشگاهی

الک آزمایشگاهی

 






آمار وبسایت

 تعداد کل بازدیدها : 1827133561




هواشناسی

نرخ طلا سکه و  ارز

قیمت خودرو

فال حافظ

تعبیر خواب

فال انبیاء

متن قرآن



اضافه به علاقمنديها ارسال اين مطلب به دوستان آرشيو تمام مطالب
archive  refresh

XML برای برنامه نويسان VB و ASP


واضح آرشیو وب فارسی:راسخون:
XML برای برنامه نويسان VB و ASP
XML برای برنامه نويسان VB و ASP XML از کلمات Extensible Markup Language اقتباس شده است . XML را نمی توان بعنوان يک زبان برنامه نويسی در نطر گرفت . XML ، سيستمی برای تعريف ساير زبان ها ( زبان هائی در رابطه با داده ها ) است . کنسرسيوم وب ، XML را بدين صورت تعريف کرده است : " يک گرامر مناسب برای بيان ساختار داده ها " .Html و XML هر دو از SGML)Standard Generalized Markup Language) اقتباس شده اند . SGML زبانی بمنظور تعريف يک زبان نشانه گذاری مبتنی بر سند است . Html ، دارای مجموعه ای ثابت از تگ ها است . XML ، مشابه SGML امکان تعريف تگ را فراهم می نمايد. XML چيست ؟• يک استاندارد ارائه شده توسط کنسرسيوم وب است . • يک زبان نشانه گذاری مبتنی بر تگ است . • يک زبان متا ديتا است . زبانی که امکان تعريف ساير زبان ها را فراهم می نمايد. • روشی برای ارائه داده است . • نسبت به حروف بزرگ و کوچک دارای حساسيت است . • خود را بگونه ای مناسب تشريح می نمايد . • خوانائی بالائی دارد . • يک روش قدرتمند برای اشتراک و ارسال اطلاعات بين برنامه ها ، سيستم ها و پردازه ها است . XML شامل موارد زير نيست :• جايگزين Html نخواهد بود . • درگير نمايش اطلاعات نخواهد شد . • مالکيت آن در انحصار يک شرکت و يا توليد کننده خاص نمی باشد . • مورد حمايت تمام مرورگر های وب نمی باشد . • يک بانک اطلاعاتی نيست . XML ، امکان تفکيک داده از نمايش را فراهم می نمايد( XML نحوه تشريح داده ها ، Html نحوه نمايش داده ها ) . با استفاده از XML ، می توان سندهای حاوی اطلاعاتی را ايجاد که بسادگی از يک محل به محل ديگر ارسال گردند. XML استانداردی برای مبادله داده های ساختيافته بين عناصر نرم افزاری ، برنامه و سيستم ها است .آشنائی عملياتی با XML بمنظور آشنائی با سندهای XML ، مثال زير را در نظر بگيريد : مثال :  يک سندXML<?xml version="1.0"?><mycomputer>  <pc>       <type>Laptop</type>       <brand>Toshiba</brand>       <model>Tecra 8000</model>       <processor>300 Mhz Pentium II</processor>       <ram>128 MB</ram>       <drives>           <drive>9 MB Hard Disk</drive>           <drive>1.4 MB Floppy Disk</drive>           <drive>CD-ROM</drive>       </drives>       <display>14 inch active matrix LCD panel</display>        <modem>Toshiba internal V.90</modem>          <network>Xircom Cardbus Ethernet II 10/100</network>   </pc>   <docking_station/>   <case>          <brand>USL</brand>          <color>black</color>         <fabric>vinyl</fabric>    </case></mycomputer>در رابطه با مثال فوق ، ذکر موارد زير ضروری است :• محتويات سند فوق بصورت متنی است . • بر خلاف Html ، تگ ها جملگی بدرستی استفاده شده و بنوعی داده مورد نظر خود را تشريح می نمايند . • همانگونه که مشاهده می شود ، XML امکان داده های سلسله مراتبی تودر تو را حمايت می نمايد . • سند فوق با توجه به تعريف مناسب تگ ها ، بخوبی خود را تشريح می نمايند . جدول زير برخی از مفاهيم و تعاريف اوليه در رابطه با مثال فوق ، را نشان می دهد . توضيحات ويژگی<?xml version="1.0"?>تعريف XML. هر سند XML، می بايست با تعريف XMLآغاز گردد. تعريف فوق می بايست بصورت حروف کوچک انجام گردد . تعريف XMLبخشی از قسمت Prologيک سند XMLاست . در مثال ارائه شده ، تنها بخش موجود در prologهمين تعريف است . در بخش Prologمی توان DTDو يا XSLرا نيز مشخص نمود. <?xml version="1.0"?><mycomputer>...</mycomputer> المان های XML. سندهای XMLاز المان های متفاوتی تشکيل می گردند. يک المان دارای يک تگ آغاز ، محتويات و يک تگ پايان است .  <ram>128 MB</ram>  . تمام سندهای XMLدارای يک المان ريشه می باشند . در مثال ارائه شده mycomputer  بمنزله المان ريشه است . <ram>128 MB</ram> اسامی المان ها . نام درنظر گرفته برای المان ها ، می بايست با يک حرف ، _ ،  و يا يک کالون شروع شود. هر کاراکتر بعد از حرف اول ، می تواند يک حرف ، يک عدد ،  يک _ يک کالون ، يک Hyphenو يا يک نقطه باشد . اسامی المان ها نمی تواند شامل فضای خالی باشد . CharacterEntity Reference< &lt;> &gt;&&amp;محتويات المان ها . متن موجود بين تگ های آغاز و پايان بعنوان محتويات يک المان در نظر گرفته شده و می تواند شامل : >  ، <  و & باشد. با توجه به استفاده  خاص از کاراکترهای فوق در سندهای XML، در صورت ضرورت به استفاده از حروف فوق در متن محتويات يک المان ، می توان از کد معادل آنها استفاده کرد . مثلا" در صورت تعريف المان <formula> ، می توان محتويات آن را  بصورت زير مشخص می گردد . <formula>x &lt; y + 5</formula> المان های تودرتو صحيح : <case>    <brand>USL</brand>    <color>black</color>    <fabric>vinyl</fabric></case>  المان های تودرتو . تمام المان های تودرتو بطور کامل همراه المان های مادر خود قرار گرفته و می بايست شامل تگ های آغاز و پايان در بلاک داخلی مربوطه باشند .  در صورتيکه المان های فرزند دارای تگ های پايان در ساختار داخلی مربوطه نباشند ، سند XML  درست نخواهد بود . در مثال زير المان <brand> فرزند المان <case> است . بنابراين می بايست تگ پايان آن نيز درون المان <case>  قرار گيرد . <case> <brand>     <color>black</color>     <fabric>vinyl</fabric>          </case></brand>روش اول : <element/>روش دوم :<element></element> المان تهی .  يک المان تهی  را می توان به دو صورت مشخص نمود . در مثال ارائه شده يک المان تهی تعريف شده است :<docking_station/>  فايل XML زير ، شامل داده های مشابه با مثال قبلی بوده با اين تفاوت که برخی از اطلاعات با استفاده از خصلت ها ارائه شده اند .مثال :  يک سندXML با تاکيد بر استفاده از خصلت ها برای ارائه اطلاعات اضافه <?xml version="1.0"?><mycomputer>   <pc type="Laptop" brand="Toshiba" model="Tecra 8000">    <processor>300 Mhz Pentium II</processor>    <ram>128 MB</ram>    <drives>       <drive>9 MB Hard Disk</drive>       <drive>1.4 MB Floppy Disk</drive>       <drive>CD-ROM</drive>     </drives>   <display>14 inch active matrix LCD panel</display>   <modem>Toshiba internal V.90</modem>   <network>Xircom Cardbus Ethernet II 10/100</network> </pc><docking_station/><case brand="USL">   <color>black</color>    <fabric>vinyl</fabric></case></mycomputer>جدول زير برخی از مفاهيم و تعاريف اوليه در رابطه با مثال فوق ، را نشان می دهد . توضيحات ويژگی<element  attribute_1="value_1" attribute_2="value_2" ...attribute_n="value_n"> خصلت ها . المان PC،  دارای سه خصلت است . <pc type="Laptop" brand="Toshiba" model="Tecra 8000">خصلت ها در XMLشامل نام و مقدار می باشند . برخلاف Html، مقدار خصلت های استفاده شده در XML  ، می بايست بين علامت " " ، قرار گيرد . <!-- توضيحات دلخواه--> توضيحات . برای ارا ئه توضيحات در فايل های XML از فرم عمومی روبرو استفاده می شود . <?xml version="1.0"?><mycomputer><pc xmlns:org="url:test.com:schema-org"   xmlns:pc="url:test.com:schema-pc"  ><org:type>Accounting</org:type><pc:type>Laptop</pc:type> Namespace. فرض کنيد يک سند XMLرا ايجاد و قصد ترکيب آن با يک سند XMLديگر را داريم . يکی از مسائلی که ممکن است در زمان ترکيب دو سند مطرح گردد ، استفاده از اسامی مشابه برای المان هائی است که دارای مفهومی کاملا" متفاوت می باشند . ( مثلا" در يک سند از المان <name> بمنظور مشخص نمودن نام يک شهر استفاده شده و در سند ديگر از المان <name> برای مشخص نمودن نام کتاب استفاده شده است ) . بمنظور حل مشکل فوق از namespaceاستفاده می گردد . namespace، مجموعه ای از المان ها بهمراه خصلت های مربوطه بوده که به يک آدرس URLمرتبط تا منحصر بفرد بودن اسامی المان ها را تضمين نمايد . برای تعريف يک namespaceاز خصلت xmlnsبهمراه تگ شروع يک المان استفاده می گردد . پس از تعريف namespace، زمينه استفاده از آن برای هر يک از المان های موجود در سند xmlفراهم می گردد .در مثال روبرو ، دو namespaceبا نام pc  و orgتعريف و در ادامه ساير المان ها ی موجود در سند از آنان استفاده نموده اند . <? name data?>دستورالعمل های پردازش . از دستورالعمل های پردازش بمنظور ارسال اطلاعات خاص برای برنامه ای که قصد پردازش سند XMLرا دارد ، استفاده  می گردد . تعريف XMLکه در ابتدای فايل های XMLقرار می گيرد ، نمونه ای از اينگونه دستورات است .  برخی از دستورات پردازش که با xmlشروع می گردند، رزو شده می باشند . Document Type Definition ) DTD) قبل از بررسی تکنولوژی DTD و Schema ذکر موارد زير مفيد خواهد بود :• مولفين سندهای XML می توانند ساختار دلخواه و مورد نظر خود را برای تشريح داده های مربوطه ايجاد نمايند . • يک مولف سندهای XML ، نمی تواند اين اطمينان را داشته باشد که ساختار ايجاد شده برای سند ها ، توسط ساير مولفين سندهای XML تغيير نمی نمايد .• ما بدنبال روشی هستيم که اين اطمينان را ايجاد نمايد که تغيير تصادفی ساختار يک سند XML تحقق پيدا نخواهد کرد . • DTD ، روشی برای تشريح و مسنتد سازی ساختار استفاده شده در يک سند XML است . برای اعبتار سنجی يک سند XML وجود DTD ضرورت دارد ( ممکن است از تکنولوژی مشابه استفاده گردد ) • مولفين سندهای XML ، با استفاده از مجموعه ای قوانين که نوشته خواهند شد ، يک سند XML را معتبر می نمايند . • يک سند XML ، زمانی " خوش شکل" ناميده می شود که گرامر مربوط به XML در آن رعايت شده باشد. صرف "خوش شکل " بودن يک سند XML ، بمنزله معتبر بودن آن نيست . • با استفاده از DTD ، المان های مورد نياز يک سند XML تعريف ، المان های اختيار ی ، تعداد دفعات تکرار يک المان و ترتيب المان ها از لحاظ استقرار در يک سند XML مشخص می گردد.• DTD ممکن است نوع داده های موجود در سند XML را نيز مشخص نمايد .( مشخص نمودن نوع در رابطه با المان و خصلت ها صدق خواهد کرد ) .• DTD بعنوان بخشی از استاندارد XML بوده که توسط کنسرسيوم وب ارائه شده است . • در زمان اعتبار سنجی يک سند XML از طريق يک DTD و بکمک بخش اعتبار سنجی پارسر ، سند XML بمنظور تشخيص حضور تمام المان ها و عدم تعريف يک المان بررسی خواهد شد . ساختار سلسله مراتبی المان ها ی تعريف شده در DTD نيز بررسی خواهد شد . مقدار تمامی خصلت ها نيز بمنظور اطمطنان از صحت موارد اعلام شده با مشاهده شده ، نيز کنترل می گردد . • هر نوع اطلاعات لازم در خصوص يک سند XML ( از بالا تا پايين يک سند ) توسط DTD تعريف و معتبر خواهد شد . • يک DTD می تواند بصورت داخلی و يا خارجی استفاده گردد . در مدل داخلی ، اطلاعات مربوط به DTD بهمراه سند XML قرار گرفته و يک فايل را تشکيل خواهند داد ( سند XML و DTD مربوطه ) . در مدل خارجی ، اطلاعات مربوط به DTD در يک فايل مجزا و با انشعاب dtd ذخيره و در سند XML مربوطه به آن مراجعه خواهد شد . • در صورت تعريف يک DTD بصورت خارجی ، امکان مراجعه به آن توسط سندهای XML متعددی وجود خواهد داشت . با توجه به گفته فوق ، استفاده از روش فوق دارای مزايای عمده نسبت به حالتی است که DTD را بصورت داخلی و همراه با سند XML استفاده نمائيم .• برای برنامه هائی که اطلاعات خود را بصورت XML مبادله می نمايند ، DTD مهم خواهد بود . • يک نمونه DTD داخلی مثال :  يک نمونه  DTDداخلی <?xml version="1.0"?>    <!DOCTYPE message [    <!ELEMENT message (#PCDATA)>    ]><message>     Internal  DTD </message>• يک نمونه DTD خارجی مثال :  يک نمونه  DTDخارجی <?xml version="1.0"?><!DOCTYPE message SYSTEM "message.dtd"><message>   External  DTD </message>سندهای XML ، می توانند شامل يک DTD اختياری باشند . سندهای XML از گزينه فوق بمنظور تضمين فرمت مشخص شده استفاده می نمايند. مثال زير يک سند XML بهمراه DTD آن را نشان می دهد . سند XML در بخش اول مقاله ارائه شده است . در مثال فوق DTD بصورت داخلی و همراه سند استفاده شده است . مثال :  يک سندXMLبهمراه DTDمربوطه <?xml version="1.0"?><!DOCTYPE mycomputer [<!ELEMENT mycomputer (pc, docking_station, case)><!ELEMENT pc (processor, ram, drives, display,modem, network)><!ATTLIST pctype (Laptop|Desktop) "Desktop"brand CDATA #IMPLIEDmodel CDATA #IMPLIED><!ELEMENT processor (#PCDATA)><!ELEMENT ram (#PCDATA)><!ELEMENT drives (drive*)><!ELEMENT drive (#PCDATA)><!ELEMENT display (#PCDATA)><!ELEMENT modem (#PCDATA)><!ELEMENT network (#PCDATA)><!ELEMENT docking_station (#PCDATA)><!ELEMENT case (color, fabric)><!ATTLIST casebrand CDATA #IMPLIED><!ELEMENT color (#PCDATA)><!ELEMENT fabric (#PCDATA)>]><mycomputer><pc type="Laptop" brand="Toshiba" model="Tecra 8000"><processor>300 Mhz Pentium II</processor><ram>128 MB</ram><drives><drive>9 MB Hard Disk</drive><drive>1.4 MB Floppy Disk</drive><drive>CD-ROM</drive></drives><display>14 inch active matrix LCD panel</display><modem>Toshiba internal V.90</modem><network>Xircom Cardbus Ethernet II 10/100</network></pc><docking_station/><case brand="USL"><color>black</color><fabric>vinyl</fabric></case></mycomputer>يکی ديگر از روش های استفاده از DTD در يک سند XML ، بصورت خارجی است . در اين حالت اطلاعات مربوط به DTD در يک فايل مجزا و با انشعاب dtd ذخيره و در ادامه در سند XML به آن مراجعه می گردد . مثال :  بخش آغازين يک سندXML  و نحوه  استفاده از DTDبصورت خارجی <?xml version="1.0"?><!DOCTYPE mycomputer SYSTEM "mycomputer.dtd"><mycomputer>         ....  </mycomputer>سندهای XML خوش شکل و معتبر يک سند "خوش شکل" XML ، سندی است که دارای گرامر صحيح و تعريف شده در رابطه با XML باشد . گرامر مربوطه در قالب مجموعه ای از قوانين مشخض شده است . برخی از اين قوانين عبارتند از :• سند می بايست دارای يک و يا چند المان باشد . • سند می بايست دارای يک المان ريشه بوده که ساير عناصر با يک ساختار مناسب ( تودر تو ) به آن متصل می گردند .• تمام المان های موجود در سند می بايست دارای تگ شروع و پايان باشند . يک سند "خوش شکل" XML که شامل يک DTD ( داخلی و يا خارجی ) می باشد ، بعنوان يک سند معتبر در نظر گرفته خواهد شد . پارسر XML ( پردازنده نيز ناميده می شود ) با استفاده از يک DTD قادر به معتبر نمودن يک سند XML خواهد بود . بررسی جزئيات مربوط به تکنولوژی DTD از حوصله اين مقاله خارج است . XML-Data and SchemaDTD دارای محدوديت و مسائل خاص خود می باشد :• برای نوشتن DTD لازم است که با يک زبان جديد آشنا شويم . • DTD انتظارات لازم در خصوص نوع داده ها را بخوبی تامين نمی نمايد .• DTD قابليت بسط و توسعه را ندارد . XML-Data ، با هدف حل مشکلات فوق ايجاد شده است . XML-Data يک زبان مبتنی بر XML بوده که از آن بمنظور تشريح پيش نويس (Schema) يک سند استفاده می گردد . زبان فوق ، بسط پذير، انعطاف پذير و قدرتمند است . فايل های Schema با انشعاب xsd ذخيره می گردند . فايل های Schema خود بمنزله سندهای XML بوده و المان ريشه آنان Schema نام دارد . در ابتدای فايل های Schema ، می بايست namespace مربوطه تعريف گردد . جدول زير XML-Data Schema ، معادل DTD ارائه شده در مثال قبل را نشان می دهد : مثال :  XML-Data Schema   مربوط به سند XML<schema xmlns = "http://www.w3.org/2001/XMLSchema"><ElementType name="mycomputer" content="eltOnly" order="seq">      <element type="pc"/>      <element type="docking_station"/>      <element type="case"/></ElementType><ElementType name="pc" content="eltOnly" order="seq">     <element type="processor"/>     <element type="ram"/>     <element type="drives"/>     <element type="display"/>     <element type="modem"/>     <element type="network"/></ElementType><ElementType name="pc">     <AttributeType name="type"       xmlns:dt="urn:schemas-microsoft-com:datatypes"      dt:type="enumeration" dt:values="Laptop Desktop"      default="Desktop"/>     <AttributeType name="brand" required="no"/>     <AttributeType name="model" required="no"/>     <attribute type="type"/>     <attribute type="brand"/>     <attribute type="model"/></ElementType>    <ElementType name="processor" content="textOnly"/>    <ElementType name="ram" content="textOnly"/>    <ElementType name="drives" content="eltOnly">       <element type="drive" minOccurs="0" maxOccurs="*"/></ElementType>    <ElementType name="drive" content="textOnly"/>    <ElementType name="display" content="textOnly"/>    <ElementType name="modem" content="textOnly"/>    <ElementType name="network" content="textOnly"/>    <ElementType name="docking_station" content="textOnly"/>    <ElementType name="case" content="eltOnly" order="seq">        <element type="color"/>        <element type="fabric"/></ElementType><ElementType name="case">    <AttributeType name="brand" required="no"/>    <attribute type="brand"/></ElementType><ElementType name="color" content="textOnly"/><ElementType name="fabric" content="textOnly"/></Schema>بررسی جزئيات تکنولوژی Schema از حوصله اين مقاله خارج است . آيا معتبر سازی يک سند ، ضرورت دارد ؟ در صورتيکه سندهای XML دارای يک حيات طولانی بوده و يا از آنها بمنظور مبادله اطلاعات بين سيستم ها و برنامه های متفاوت استفاده می گردد ، لازم است که معتبر سازی يک سند XML بکمک DTD و يا Schema انجام گيرد . در صورتيکه از سند های XML برای ارسال اطلاعات بين لايه های متفاوت يک برنامه سه لايه استفاده می گردد ، ضرورتی به معتبر ساری يک سند XML نخواهد بود . اگر قصد ايجاد تعداد زيادی از سندهای معتبر را داشته باشيد ، می توان يک ابزار مناسب بمنظور ايجاد DTD و يا Schema را تهيه نمود . *ساختار سلسله مراتبی اشياء در XML DOM ساختار اشياء در XML DOM ، بصورت سلسله مراتبی و تصويری مناسب از اشياء موجود در سند XML است . شکل زير يک نمونه از ساختار سلسله مراتبی اشياء در XML DOM را نشان می دهد ..  اشياء XML DOM XML DOM دارای چهار شی است : • شی Document . شامل سند XML است . ( منظور گره ای با نام Document نيست ) • شی node . شامل يک گره در سند XML است . • شی nodeList . شامل ليستی از گره های همزاد ( برادر و يا خواهر ) است . برخی از متدهای DOM يک شی nodeList را بعنوان خروجی برمی گردانند. • شی ParseError . از شی فوق بمنظور بازيابی آخرين مورد خطاء در رابطه با پارسينگ استفاده می شود . اشياء فوق دارای مجموعه ای از متدها و خصلت ها بوده و با استفاده از يک زبان اسکريپت ، می توان عمليات مورد نظر در رابطه با يک سند XML را بکمک آنها انجام داد . مثال : فرض کنيد سند XML ارائه شده در بخش های قبل را داشته باشيم ( mycomputer.xml) مثال :  يک سندXML  نمونه (mycomputer.xml)<?xml version="1.0"?><mycomputer>  <pc>     <type>Laptop</type>     <brand>Toshiba</brand>     <model>Tecra 8000</model>     <processor>300 Mhz Pentium II</processor>     <ram>128 MB</ram>     <drives>        <drive>9 MB Hard Disk</drive>        <drive>1.4 MB Floppy Disk</drive>        <drive>CD-ROM</drive>     </drives>     <display>14 inch active matrix LCD panel</display>     <modem>Toshiba internal V.90</modem>     <network>Xircom Cardbus Ethernet II 10/100</network>   </pc>   <docking_station/>    <case>      <brand>USL</brand>      <color>black</color>      <fabric>vinyl</fabric>   </case></mycomputer>برنامه زير، نام اولين گره موجود در سند XML را برمی گرداند . در برنامه فوق تمام اسکريپت ها بر روی مرورگر سرويس گيرنده اجراء و به زبان VBSrcipt نوشته شده اند . اطلاعات فوق را در فايلی با نام دلخواه ذخيره و در ادامه آن را توسط مرورگر فعال و مشاهده نمائيد . مثال :  بازيابی اولين گره موجود در سند mycomputer.xml  ( نسخه VBScript) <HTML><HEAD><TITLE>XML Example </TITLE><SCRIPT LANGUAGE=vbscript><!--Function getXML()Dim xmlDocDim xmlRootDim xmlNodeSet xmlDoc = CreateObject("Microsoft.xmldom")xmlDoc.async = FalsexmlDoc.load("mycomputer.xml")Set xmlRoot = xmlDoc.documentElementSet xmlNode = xmlRoot.childNodes(0)divHere.innerHTML = _"<H3>" & xmlNode.nodeName & "</H3>"End Function--></SCRIPT></HEAD><BODY onload="getXML()"><H1>بازيابی اولين گره</H1><DIV ID="divHere"></DIV></BODY></HTML>در صورت مشاهده صفحه فوق در مرورگر ، خروجی زير مشاهده خواهد شد : بازيابی اولين گرهpcبرنامه زير، نام اولين گره موجود در سند XML را برمی گرداند . در برنامه فوق تمام اسکريپت ها بر روی مرورگر سرويس گيرنده اجراء و به زبان JavaScript نوشته شده اند .( نسخه فوق با نسخه نوشته شده توسط VBScript دارای اختلاف اندکی می باشند ) . اطلاعات فوق را در فايلی با نام دلخواه ذخيره و در ادامه آن را توسط مرورگر فعال و مشاهده نمائيد . مثال :  بازيابی اولين گره موجود در سند mycomputer.xml  ( نسخه JavaScript) <HTML><HEAD><TITLE>XML Example </TITLE><SCRIPT LANGUAGE=javascript><!--function getXML() {var xmlDocvar xmlRootvar xmlNodexmlDoc = new ActiveXObject("Microsoft.xmldom")xmlDoc.async = falsexmlDoc.load("mycomputer.xml")xmlRoot = xmlDoc.documentElementxmlNode = xmlRoot.childNodes(0)divHere.innerHTML ="<H3>" + xmlNode.nodeName + "</H3>"}//--></SCRIPT></HEAD><BODY onload="getXML()"><H1>بازيابی اولين گره</H1><DIV ID="divHere"></DIV></BODY></HTML>در صورت مشاهده صفحه فوق در مرورگر ، خروجی زير مشاهده خواهد شد : بازيابی اولين گرهpcدر ادامه بخش های متفاوت دو مثال فوق تشريح خواهند گرديد . استقرار يک سند XML در حافظه قبل از انجام هر گونه عمليات در رابطه با يک سند XML ، می بايست سند فوق در حافظه مستقر گردد . قبل از استقرار سند XML در حافظه ، می بايست نمونه ای از شی XML DOM را ايجاد نمود. کدهای زير که در مثال اول ( نسخه نوشته شده به زبان VBScript) ارائه شده اند ، نحوه ايجاد يک نمونه شی XML -DOM را با استفاده از متد CreateObject و استقرار يک سند XML را نشان می دهد . مثال :  کدهای لازم بمنظور ايجاد يک نمونه شی XML DOMو استقرار سند XMLدر حافظهSet xmlDoc = CreateObject("Microsoft.xmldom")xmlDoc.async = FalsexmlDoc.load("mycomputer.xml")در مثال فوق ،از متد async مربوط به شی document بمنظور استقرار سند XML در حافظه بصورت همزمان استفاده شده است . بدين ترتيب مرورگر قبل از انجام هر گونه پردازش بر روی سند XML ، در انتظار استقرار تمام سند در حافظه باقی خواهد ماند . در صورتيکه از کد فوق استفاده نگردد ، مرورگر بمحض دريافت بخشی از سند ، عمليات پردازش را آغاز خواهد کرد . در برنامه فوق از متد Load بمنظور استقرار يک فايل XML در حافظه استفاده شده است . در صورتيکه قصد استقرار يک سند XML را از طريق يک رشته داشته باشيم ، می توان از متد LoadXML استفاده کرد . در نسخه جاوا اسکريپت مثال فوق ،با استفاده از شی AxtiveXObject يک نمونه از شی XML DOM ايجاد شده است . کدهای فوق بصورت زير می باشند :مثال :  کدهای لازم بمنظور ايجاد يک نمونه شی XML DOMو استقرار سند XMLدر حافظهxmlDoc = new ActiveXObject("Microsoft.xmldom")xmlDoc.async = falsexmlDoc.load("mycomputer.xml")المان سند کد زير بمنظور بازيابی يک مرجع به المان سند ( گره مادر در سند XML) استفاده شده است :( نسخه نوشته شده به زبان VBScript) Set xmlRoot = xmlDoc.documentElementکد معادل جاوا اسکريپت بصورت زير است :xmlRoot = xmlDoc.documentElementمجموعه ChildNodes پس از ايجاد يک مرجع به گره Document ، می توان با استفاده از مجموعه childNodes مربوط به گره Document اقدام به بازيابی گره ها نمود . کد زير ، يک مرجع ( اشاره گر ) به اولين گره مجموعه childNodes مربوط به المان سند ، ايجاد می نمايد Set xmlNode = xmlRoot.childNodes(0)کد معادل جاوا اسکريپت بصورت زير است :xmlNode = xmlRoot.childNodes(0)تمام مجموعه ها در XML با صفر شروع می گردد . بنابراين اولين المان همواره صفر، دومين المان يک و ... خواهد بود. نمايش XML بر روی صفحه بمنظور نمايش داده های XML در يک صفحه Html ، می بايست از روش های خاصی استفاده نمود. يکی از مناسبترين اين روش ها ، استفاده از خصلت innerHTML يک تگ Html است . کد زير نحوه انجام عمليات فوق را نشان می دهد ( نسخه VBScript) . در کد فوق از خصلت nodeName مربوط به گره ، برای بدست آوردن نام المان XML استفاده شده است . divHere.innerHTML = "<H3>" & xmlNode.nodeName & "</H3>"کد زير نحوه نمايش داده های XML در يک صفحه Html را با استفاده از خصلت innerHTML نشان می دهد ( نسخه حاوا اسکريپت ) divHere.innerHTML ="<H3>" + xmlNode.nodeName + "</H3>"صدا زدن کدهای اسکريپت DOM در مثال های ارائه شده ( نسخه نوشته شده با VBScript و نسخه نوشته شده با جاوا اسکريپت ) ،از تابعی با نام getXML همزمان با فعال شدن صفحه استفاده شده است . تابع فوق مسئول استقرار سند XML در حافظه و يافتن اولين المان در بوده و ماحصل عمليات را در خروجی نمايش خواهد داد . <BODY onload="getXML()"> <H1>Mycomputer XML Example</H1><DIV ID="divHere"></DIV></BODY></HTML>پس از ارائه توضيحات لازم در خصوص مثال های ارائه شده ، در ادامه نحوه انجام ساير عمليات بر روی يک سند XML بکمک XML DOM تشريح می گردد . تکرار در بين گره های يک سند سند XML ارائه شده در مثال قبل (mycomputer.xml) دارای ساختار درختی زير است :با استفاده از مجموعه childNodes ، می توان عمليات تکرار در بازيابی تمام درخت XML مربوط به يک سند XML را انجام داد . برنامه زير تمام اطلاعات موجود در درخت XML را بازيابی و آنها را با يک فرمت قابل قبول ( مجموعه ای از جداول ) در خروجی نمايش خواهد داد . در اين برنامه اطلاعات مربوط به اولين سطح گره های موجود ( pc,case,docking_station) با استفاده از يک حلقه تکرار استخراج و برای بازيابی اطلاعات موجود در دومين سطح گره ها ( type, brand, model ) از يک حلقه تکرار ديگر استفاده شده است . مثال :  بازيابی تمام گره های موجود در يک سند XMLو نمايش آنها با يک فرمت مناسب <HTML><HEAD><TITLE>XML Example </TITLE><STYLE>H3 {color: blue}</STYLE><SCRIPT LANGUAGE=vbscript><!--Option ExplicitFunction getXML()Dim xmlDocDim xmlRootDim xmlPNodeDim xmlNodeDim strDocSet xmlDoc = CreateObject("Microsoft.xmldom")xmlDoc.async = FalsexmlDoc.load("mycomputer.xml")Set xmlRoot = xmlDoc.documentElementFor Each xmlPNode In xmlRoot.childNodes  strDoc = strDoc & "<H3>" & xmlPNode.nodeName & "</H3>"  If xmlPNode.childNodes.length = 0 Then     strDoc = strDoc & "<I>No data</I>"  Else    strDoc = strDoc & "<TABLE border>"    For Each xmlNode In xmlPNode.childNodes    strDoc = strDoc & "<TR>" & _    "<TD><B>" & xmlNode.nodeName & ":</B></TD>" & _    "<TD>" & xmlNode.text + "</TD>" & "</TR>"   Next End If  strDoc = strDoc & "</TABLE>"Next divHere.innerHTML = strDocEnd Function--></SCRIPT></HEAD><BODY onload="getXML()"><H1 align="center" dir="rtl">بازيابی تمام المانهای يک سندXML</H1><DIV ID="divHere"></DIV></BODY></HTML>خروجی برنامه فوق پس از مشاهده صفحه مربوطه در مرورگر به شکل زير خواهد بود :بازيابی تمام المان های يک سند XMLpctype:Laptopbrand:Toshibamodel:Tecra 8000processor:300 Mhz Pentium IIram:128 MBdrives:9 MB Hard Disk 1.4 MB Floppy Disk CD-ROMdisplay:14 inch active matrix LCD panelmodem:Toshiba internal V.90network:Xircom Cardbus Ethernet II 10/100docking_stationNo datacasebrand:USLcolor:blackfabric:vinylنسخه جاوا اسکريپت برنامه فوق به شکل زير است : ( فقط حلقه های تکرار مشخص شده اند ) مثال :  بازيابی تمام گره های موجود در يک سند XML (نسخه جاوااسکريپت ) xmlRoot = xmlDoc.documentElementstrDoc = "<TABLE>"for (intI=0; intI <= xmlRoot.childNodes.length-1;intI++) {      xmlPNode = xmlRoot.childNodes(intI)      strDoc = strDoc +"<H3>" + xmlPNode.nodeName + "</H3>"      if (xmlPNode.childNodes.length == 0)         strDoc = strDoc + "<I>No data</I>"     else {               strDoc = strDoc + "<TABLE border>"               for (intJ=0;intJ <= xmlPNode.childNodes.length-1;intJ++) {                 xmlNode = xmlPNode.childNodes(intJ)                 strDoc = strDoc + "<TR>" +                 "<TD><B>" + xmlNode.nodeName + ":</B></TD>" +                 "<TD>" + xmlNode.text + "</TD>" +                "</TR>"              }       strDoc = strDoc + "</TABLE>"     }} بازيابی يک گره خاص و يا مجموعه ای از گره ها در برخی حالات علاقه مند به بازيابی گره ها از طريق حلقه تکرار نمی باشيم ، در چنين مواردی می توان مستقيما" اقدام به بازيابی مجموعه ای از گره ها در يک سند XML نمود . در اين رابطه می توان از متد getElementsByTagName استفاده کرد . گرامر استفاده از متد فوق بشکل زير است : nodelist = document.getElementsByTagName(tagname)در گرامر فوق :• nodelist ، يک شی از نوع nodelist است .• document ، يک شی از نوع document است . • tagname ، رشته ای بمنظور مسخص نمودن يک المان است . مثلا" "case/brand" . برای بازيابی تمام درخت XML می توان از "*" استفاده کرد . متد getElementsByTagName ، يک شی nodeList را بر می گرداند . شی nodeList ذاتا" معادل مجموعه childNodes است . شی فوق دارای يک خصلت ( lenght) و سه متد ( item,nextNode,reset) است . از متد item مربوط به شی nodeList بمنظور بازيابی يک آيتم از مجموعه گره های موجود در nodeList استفاده می گردد . در مثال زير از متد getElementsByTagName بمنظور بازيابی متن مربوط به المان pc/ram استفاده شده است . مثال : بازيابی يک المان خاص با استفاده از متد getElementsByTagName( نسخه Vbscript)Function getXML()  Dim xmlDoc  Dim xmlNodes  Set xmlDoc = CreateObject("Microsoft.xmldom")  xmlDoc.async = False  xmlDoc.load("mycomputer.xml")  Set xmlNodes = xmlDoc.getElementsByTagName("pc/ram")  divHere.innerHTML = xmlNodes.item(0).textEnd Functionمثال: بازيابی يک المان خاص با استفاده از متد getElementsByTagName( نسخه javascript)function getXML() {   var xmlDoc   var xmlNodes   xmlDoc = new ActiveXObject("Microsoft.xmldom")   xmlDoc.async = false   xmlDoc.load("mycomputer.xml")   xmlNodes = xmlDoc.getElementsByTagName("pc/ram")   divHere.innerHTML = xmlNodes.item(0).text}*بازيابی خصلت ها تمام اطلاعات در سند های XML از طريق محتويات المان ها ذخيره نشده و در برخی حالات از خصلت مربوط به يک المان استفاده و اطلاعات بکمک آن ذخيره می گردد . بمنظور بازيابی اطلاعات ذخيره شده در خصلت مربوط به يک المان می توان از مجموعه attributes استفاده کرد . برای ارائه توضيحات کاربردی بيشتر ، فايل mycomputer.xml ( در مثال های قبل از آن استفاده شده بود ) را با اندک تغييراتی که عمدتا" به استفاده از خصلت بهمراه المان ها بر می گردد ، تغيير نام و يک فايل ديگر با نام mycomputer1.xml را ايجاد که تگ های pc و case آن بصورت زير باشند : <pc type="Laptop" brand="Toshiba" model="Tecra 8000">... <case brand="USL">برنامه زيرخصلت های مربوط به المان PC را در خروجی نمايش می دهد . مثال :  نمايش خصلت های يک المان ( نسخه VBScript)<HTML><HEAD><TITLE>XML Example </TITLE><SCRIPT LANGUAGE=vbscript><!--  Function getXML( )    Dim xmlDoc    Dim xmlAtt    Dim xmlPNode    Dim strDoc    Dim xmlNodes    Dim xmlPCNode    Set xmlDoc = CreateObject("Microsoft.xmldom")    xmlDoc.async = False    xmlDoc.load("mycomputer.xml")    Set xmlNodes = xmlDoc.getElementsByTagName("pc")     Set xmlPCNode = xmlNodes.item(0)     For Each xmlAtt in xmlPCNode.attributes        strDoc = strDoc & "<BR><B>" & xmlAtt.nodeName & ":</B>" & _        xmlAtt.text     Next     divHere.innerHTML = strDoc  End Function--></SCRIPT></HEAD><BODY onload="getXML( )"><H1 align="center" dir="rtl">بازيابی خصلت های يکالمان</H1><DIV ID="divHere"></DIV></BODY></HTML>خروجی برنامه فوق پس از مشاهده صفحه مربوطه در مرورگر به صورت زير است : بازيابی خصلت های يک المانtype:Laptopbrand:Toshibamodel:Tecra 8000مثال :  نمايش خصلت های يک المان ( نسخه JavaScript) - فقط حلقه تکرار آورده شده است . for (intI=0;intI <= xmlPCNode.attributes.length-1;intI++) {   xmlAtt = xmlPCNode.attributes(intI)   strDoc = strDoc +  "<BR><B>" + xmlAtt.nodeName + ": </B>" +   xmlAtt.text}بمنظور بازيابی محتويات يک خصلت خاص، می توان از متد getAttribute مربوط به شی node استفاده کرد . مثلا" کد زير خصلت brand مربوط به المان case را بازيابی می نمايد :Set xmlNodes = xmlDoc.getElementsByTagName("case") Set xmlPCNode = xmlNodes.item(0) divHere.innerHTML = xmlPCNode.getAttribute("brand")تاکنون به بررسی برخی از امکانات XML DOM بصورت بسيار محدود اشاره شد. XML DOM دارای مجموعه ای از خصلت ها و متد ها ی متنوع ديگر است . شرکت ماکروسافت نيز مجموعه ای ديگر از خصلت ها و متدها را در اين زمينه تعريف نموده است . بهرحال برای انجام يک عمليات بخصوص می توان از روش های متعددی استفاده و در اين زمينه يک راه حل شفاف و منحصر بفرد وجود ندارد . استفاده از XML بر روی سرويس دهنده تمام مثال های ارائه شده در بخش های قبل ، فايل های XML را بر روی سرويس گيرنده پردازش می کردند. بمنظور پردازش فايل های XML بر روی سرويس دهنده ، می توان از عنصر XMLDOM از طريق صفحات ASP استفاده کرد . برنامه زير اطلاعات موجود در فايل mycomputer.xml ( در بخش های قبل از آن استفاده شده است ) را پردازش و با يک فرمت مناسب ( استفاده از سه جدول مجزا برای نمايش هر يک از المان های سطح اول ) در خروجی نمايش می دهد . ( نظير اين عمليات در بخش های قبل نيز ارائه گرديد در اين مثال عمليات مورد نظر بر روی سرويس دهنده انجام خواهد شد ) . مثال :  پردازش يک فايل XMLبرروی سرويس دهنده و ارائه خروجی مناسب <%@ Language=VBScript %><%Option Explicit%><HTML><HEAD><TITLE>XML/ASP Example </TITLE><STYLE>H3 {color: blue}</STYLE></HEAD><H1>Mycomputer XML Tree Parsed on the Server</H1><% Dim xmlDoc Dim xmlRoot Dim xmlPNode Dim xmlNode Dim strDoc Set xmlDoc = Server.CreateObject("Microsoft.xmldom") xmlDoc.async = False xmlDoc.load(Server.MapPath("mycomputer.xml")) Set xmlRoot = xmlDoc.documentElement For Each xmlPNode In xmlRoot.childNodes  strDoc = strDoc & "<H3>" & xmlPNode.nodeName & "</H3>"  If xmlPNode.childNodes.length = 0 Then     strDoc = strDoc & "<I>No data</I>"  Else    strDoc = strDoc & "<TABLE border>"    For Each xmlNode In xmlPNode.childNodes      strDoc = strDoc & "<TR>" & _      "<TD><B>" & xmlNode.nodeName & ":</B></TD>" & _      "<TD>" & xmlNode.text + "</TD>" & _      "</TR>"   Next End If strDoc = strDoc & "</TABLE>"Next Response.Write strDoc%></BODY></HTML>پس از انجام پردازش های لازم بر روی سرويس دهنده ، خروجی مناسب برای نمايش در مرورگر ارسال خواهد شد . پردازش فايل XML وابسته به امکانات موجود در مرورگر نبوده و صرفا" مرورگرها ، نمايش دهنده اطلاعات ارسالی از سرويس دهنده خواهند بود . /خ





این صفحه را در گوگل محبوب کنید

[ارسال شده از: راسخون]
[مشاهده در: www.rasekhoon.net]
[تعداد بازديد از اين مطلب: 349]

bt

اضافه شدن مطلب/حذف مطلب







-


گوناگون

پربازدیدترینها
طراحی وب>


صفحه اول | تمام مطالب | RSS | ارتباط با ما
1390© تمامی حقوق این سایت متعلق به سایت واضح می باشد.
این سایت در ستاد ساماندهی وزارت فرهنگ و ارشاد اسلامی ثبت شده است و پیرو قوانین جمهوری اسلامی ایران می باشد. لطفا در صورت برخورد با مطالب و صفحات خلاف قوانین در سایت آن را به ما اطلاع دهید
پایگاه خبری واضح کاری از شرکت طراحی سایت اینتن