« Binding بين XML Schema Ùˆ كلاس هاي جاوا | صÙ?حه اصلی | مروري بر DTD »

مروري بر XML

October 29, 2007 09:20 AM

قبل از ادامه بحث ارتباط جاوا و XML ترجيح دادم اول كمي به معر�?ي XML و م�?اهيم مرتبط با آن بپردازم. البته مي دانم كه احتمالا با آن آشنا هستيد. با اين حال شايد مرور دوباره م�?اهيم آن بد نباشد. مطالب را از w3schools برداشته ام.

XML يا Extensible Markup Language امكاني است براي توصي�? داده ها. عبارت است از يك �?ايل متني با پسوند XML كه با هر اديتور متني قابل ويرايش است. شيوه نگارش آن در ادامه شرح داده خواهد شد.

برخي مشخصات XML :
* مانند HTML است اما تگ هاي آن از پيش تعري�? شده نيستند و كاربر، خود بايد آنها را تعري�? نمايد.
* از DTD يا يك XML Schema براي توصي�? داده ها است�?اده مي كند.

ت�?اوت اصلي XML و HTML اين است كه HTML بر چگونگي نمايش داده ها تاكيد دارد. در حالي كه XML محتواي داده ها را توصي�? مي كند. در واقع XML مكملي است بر HTML. نه جايگزين آن

كاربردهاي XML :
* با XML داده ها خارج از HTML نگهداري مي شوند.
* XML براي جابجايي داده ها به كار مي رود.
* XML براي به اشتراك گذاري داده ها به كار مي رود
* XML براي ذخيره سازي داده هاي به كار مي رود
* در واقع XML باعث مي شود كه داده هاي شما پركاربرد تر باشند
* XML مي تواند براي ساخت يك زبان جديد به كار رود. XML مادر زبان هايي چون WAP و WML است.

سينتكس :
سينتكس XML بسيار ساده است
مثال:

<?xml version="1.0" encoding="ISO-8859-1"?>
<note date="12/11/2006">
<to>You</to>
<from>me</from>
<heading>Reminder</heading>
<body>Don't forget</body>
</note>

اولين خط آن هميشه XML declaration است كه ورژن و character encoding به كار ر�?ته در سند XML را مشخص مي كند.
خط بعدي عنصر ريشه يا root element را مشخص مي نمايد. عنصر ريشه ماهيت سند XML را مشخص مي كند. مثل اينكه مي گوييم اين سند يك note است.

نكات:
* همه تگ هاي XML بايد بسته شوند و اين اجباري است.
* تگ هاي XML همه case sensitive هستند. بنابراين تگ هاي باز Ùˆ بسته بايد عينا يكسان نوشته شوند. به عبارت ديگر مثلا تگ <message> نمي تواند با <Message/> Ø¨Ø³ØªÙ‡ شود.
* ساختار تو درتوي تگ ها بايد به درستي رعايت شود.
* همه اسناد XML الزاما بايد داراي عنصر ريشه باشند . بقيه عناصر درون آن قرار داده شوند.
* در دو طر�? value همه attribute هاي سند XML بايد كوتيشن قرار گيرد. هم مي تواند single quote باشد و هم double quote
* �?ضاي خالي يا space رشته ها در سند XML پاك نمي شود.

comment در XML

<!-- This is a comment -->

عناصر XML
بين عناصر XML رابطه پدر و �?رزندي حاكم است.

<book>
<title>My First XML</title>
<prod id="33-657" media="paper"></prod>
<chapter>Introduction to XML
<para>What is HTML</para>
<para>What is XML</para>
</chapter>

<chapter>XML Syntax
<para>Elements must have a closing tag</para>
<para>Elements must be properly nested</para>
</chapter>

</book> 

محتواي element ها داراي چهار حالت است:

* element content : مثل book
* mixed content : مثل chapter
* simple content : مثل para
* empty content : مثل prod

در مثال بالا تنها prod داراي attribute است.

قواعد نامگذاري element ها:
* اسامي شامل حرو�? و اعداد و برخي كاراكترهاي ديگر مي شوند
* اسامي نبايد با عدد يا كاراكترهاي نقطه گذاري شروع شوند
* اسامي نبايد با عبارت xml يا XML يا Xml و ساير حالات XML شروع شود
* اسامي نبايد space داشته باشد
* اسامي نبايد ":" داشته باشند

اسامي element ها بهتر است گويا و توصي�?ي باشند.

كجا از element است�?اده شود و كجا از attribute ؟
هيچ قانوني براي اين كار وجود ندارد. اما كلا است�?اده از element ها در جاهايي كه نمي توان تمايزي بين اين دو قائل شد، توصيه مي شود. بهتر است هميشه داده ها را در element ها گنجاند. attribute ها را صر�?ا براي �?راهم نمودن اطلاعات در مورد داده ها (metadata) مقداردهي نماييد.
بعنوان برخي مشكلات است�?اده از attribute مي توان اين موارد را برشمرد:
* attribute ها نمي توانند چند مقدار بپذيرند
* attribute ها توسعه دادنشان سخت تر است.
* attribute ها قابليت نمايش structure ها را ندارند.
* كار با attribute ها در برنامه سخت تر است.
* attribute ها در تقابل با DTD تست كردنشان سخت تر است.

يك استثناء:
شناسه يا كد داده ها مثل counter اي كه بصورت سريال بالا مي رود را مي توان در attribute ها هم قرارداد.

XML با سينتكس درست Well Formed XML ناميده مي شود.
XML كه با DTD اعتبارسنجي شده ، Valid XML خوانده مي شود.

mahyar_ev | 09:20 AM

 

نظرخواهی

مطلب خوبی بود. سوالی دارم در مورد آن.
آیا روشی است Ú©Ù‡ توسط آن یک Ù?ایل XML را در یک صÙ?حه HTML به صورت خودکار نشان داد.
برای مثال Ù?رض Ú©Ù† مشخصات یک مجموعه موجودیت را در یک XML داریم Ùˆ بخواهیم آن را به عنوان نتیجه یک جستجو نشان دهیم یا توسط آن Ù?رم های ورود داده درست کنیم. به این Ø´Ú©Ù„ Ú©Ù‡ به ازاء هر موجودیت یک محل ورود داشته باشیم، مانند کاری Ú©Ù‡ InfoPath در داخل Ù?ایل های خودش Ù…ÛŒ کند.
از XML خیلی پرت هستم ، مگر نه!؟
همین!

ارسال شده توسط: ali در ساعت November 2, 2007 08:30 PM

من با InfoPath آشنا نيستم. اما بطور كلي XML مشابه يك منبع داده است. مثل بانك هاي رابطه اي. براي نمايش آن در صÙ?حه وب نيز بايد در web application خود با ابزار موجود در هر زبان مثل JAXB در جاوا اطلاعات آن را بخوانيد Ùˆ توسط jsp در صÙ?حه وب نمايش دهيد. مثل ساير محتواي ديناميك. اميدوارم منظور شما را درست متوجه شده باشم Ùˆ جوابم نامربوط نباشد. اگر اينطور نيست ممنون مي شوم كه بيشتر توضيح دهيد.

ارسال شده توسط: mahyar در ساعت November 3, 2007 10:14 AM