« 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

نظر شما چيست؟










Remember personal info?




برای ثبت نظر کلمه submit را در کادر زیر وارد کنید.