مقدمه اي بر ايكس.ام.ال. (XML)
ترجمه ليلا خليلی
دانشجوی کارشناسی ارشد تهران
"ايكس.ام.ال."(XML: Extensible markup language) زبان نشانه گذاري گسترش پذير براي توصيف داده طراحي شده است و بر آنچه ازنوع داده است تمركز دارد. "اچ.تي.ام.ال." (HTML: Hypertext Markup Language) بر اي نمايش داده طراحي شده است و بر چگونگي نمايش داده تمركز دارد.
"ايكس.ام.ال." چيست؟
"ايكس.ام.ال." مخفف Extensible markup language زبان نشانه گذاري گسترش پذير است.
تعاريف عمده "ايكس.ام.ال." و "اچ.تي.ام.ال."
"ايكس.ام.ال." جانشيني براي "اچ.تي.ام.ال." نيست. "ايكس.ام.ال." براي توصيف داده و "اچ.تي.ام.ال." نمايش داده طراحي شده است
"ايكس.ام.ال." براي انجام دادن كاري طراحي نشده است
ممكن است درك آن سخت باشد اما "ايكس.ام.ال." كاري انجام نمي دهد. "ايكس.ام.ال." براي ساخت، ذخيره و ارسال اطلاعات ايجاد شده است. مثال زير يك سند "ايكس.ام.ال." را نشان مي دهد:
Don’t forgout me this weekend
اين يادداشت يك سرصفحه (header) و يك بدنه (body) دارد ،همچنين يك گيرنده و يك فرستنده اطلاعات دارد اما هنوز اين سند كاري انجام نمي دهد . درواقع اطلاعات ساده پيچيده شده در برچسب هاي "ايكس.ام.ال." است وفرد بايد يك نرم افزاري براي ارسال، دريافت يا نمايش آن بنويسد.
"ايكس.ام.ال." مستقل و گسترش پذير است
برچسب ها در"ايكس.ام.ال." از پيش تعريف شده نيست وشما بايد برچسب هاي خود را ابداع كنيد.برچسب هايي كه در نشانه گدذاري اسناد "اچ.تي.ام.ال." استفاده شده اند و ساختار اسناد "اچ.تي.ام.ال." از پيش تعريف شده اند. مثل <p>,<h1>
در توسعه آينده وب به احتمال خيلي زيادي از "ايكس.ام.ال." براي توصيف داده استفاده خواهد شد ، در حالي كه "اچ.تي.ام.ال." براي فرمت و نمايش داده ها استفاده خواهد شد.
سرعت توسعه استانداردهاي "ايكس.ام.ال." و سرعت انطباق تهيه كنندگان نرم افزارها با اين استانداردها تعجب آور است. نويسنده معتقد است كه "ايكس.ام.ال." براي آينده وب به اندازه "اچ.تي.ام.ال." كه پايه وب بوده است مهم خواهد بود . "ايكس.ام.ال." مهمترين ابزار براي كاربرد درست داده و انتقال داده خواهد بود.
"ايكس.ام.ال." چگونه استفاده خواهد شد
"ايكس.ام.ال." مي تواند داده را از "اچ.تي.ام.ال." جدا كند و در فايل "ايكس.ام.ال." ذخيره نمايد. در اين شيوه شما مي توانيد از "اچ.تي.ام.ال." براي نمايش و تنضيمات صفحه استفاده كنيد و مطمئن باشيد كه تغيير در داده اي زيربنايي نيازمند هيچ تغييري در "اچ.تي.ام.ال." شما نيست.
"ايكس.ام.ال." براي مبادله داده استفاده مي شود
ب"ايكس.ام.ال." ، داده مي تواند ميان سيستمهاي ناسازگار منتقل شود. در دنياي واقعي،سيستمهاي كامپيوتري و پايگاهاي داده شامل داده هايي در فرمت هاي ناسازگار(متضاد) هستند و يكي از چالش هاي زمان بر براي توسعه دهندگان مبادله داده ميان چنين سيستمهايي روي اينترنت است. تبديل داده به "ايكس.ام.ال." به مقدار زيادي اين پيچيدگي را كاهش مي دهد و داده هايي را ايجاد مي كند كه بوسيله انواع برنامه هاي كاربردي متفاوت مي تواند خوانده شود.
مبادله اطلاعات مالي در اينترنت
با "ايكس.ام.ال." اطلاعات مالي در اينترنت مي تواند مبادله شود. "ايكس.ام.ال." زبان اصلي براي مبادله اطلاعات مالي شركتها در اينترنت خواهد بود. تعدادي از برنامه هاي كاربردي جالب شركت به شركت در حال توسعه هستند.
"ايكس.ام.ال." براي اشتراك داده مي تواند استفاده شود
با "ايكس.ام.ال." فايل هاي متني ساده مي تواند براي اشتراك داده استفاده شود."ايكس.ام.ال." يك شيوه مستقل سخت افزاري و نرم افزاري را براي اشتراك داده فراهم مي كند كه با اين كار ايجاد داده اي كه برنامه هاي كاربردي متفاوت براحتي بتوانند با آن كار كنند را آسان مي كند. "ايكس.ام.ال." همچنين گسترش و ارتقاء سيستم به سيستم هاي عملياتي جديد ، سرورها، برنامه هاي كاربردي و مروگرهاي جديد تسهيل مي نمايد.
"ايكس.ام.ال." داده را بسيار پراستفاده مي نمايد
با "ايكس.ام.ال." داده شما براي كاربران زيادي قابل دسترس خواهد بود. چون "ايكس.ام.ال." از نرم افزار ، سخت افزار و برنامه كاربردي مستقل است شما مي توانيد داده خود را همچنين براي مرورگرهاي ديگري غير از مرورگرهاي استاندارد "اچ.تي.ام.ال." قابل دسترس نمايند. برنامه هاي كاربردي و مشتريان ديگر مي توانند به فايل هاي "ايكس.ام.ال." شما به عنوان منابع داده دسترسي پيدا كنند مثل اينكه آنها به پايگاههاي داده دسترسي پيدا مي كنند. داده شما ممكن است براي تمام انواع بنگاههاي ماشين خوان قابل دسترس باشد و امكان دسترسي افراد نابينا و ديگر افراد معلول به داده هاي شما را تسهيل مي گردد.
"ايكس.ام.ال." براي ايجاد زبان جديد مي تواند استفاده شود
"ايكس.ام.ال." مادر زبان i (wireless Markup language) WMI است. زبان نشانه گذاري بدون سيم استفاده شده در نشانه گذاري برنامه هاي كاربردي اينترنت براي ابزارهاي دستي مثل تلفن همراه در "ايكس.ام.ال." نوشته شده است. "ايكس.ام.ال." در آينده ممكن است به ما برنامه هاي كاربردي صفحه گسترده و پردازشگر ورد و پايگاه هاي داده كه مي توانند داده هاي يكديگر را در فرمت متن ساده بدون هيچ برنامه كاربردي تبديلي مابينشان بخوانند را ارائه دهد.
تركيب "ايكس.ام.ال."
تركيب قوانين "ايكس.ام.ال." بسيار ساده و روشن است. يادگيري و استفاده قوانين بسيار اسان است، براي همين ايجاد نرم افزاري كه بتواند "ايكس.ام.ال." را بخواند وبكار ببرد بسيار آسان است.
نمونه يك سند "ايكس.ام.ال." :
Don't forget me this weekend!
اولين خط در سند(اعلان "ايكس.ام.ال.") نسخه "ايكس.ام.ال." وكاراكتركد شده مورد استفاده در سند را توصيف مي كند. خط بعدي عنصر ريشه از سند را توصيف مي كند . چهار خط بعدي چها رعنصرفرزند ريشه را توصيف مي كند و خط آخر انتهاي عنصر ريشه را توصيف مي كند.
همه عناصر(elements) "ايكس.ام.ال." بايد يك برچسب (Tag) پاياني داشته باشند
در"ايكس.ام.ال." حذف برچسب پاياني غيرقانوني است. در "اچ.تي.ام.ال." تعدادي از عناصرمجبور نيستند كه يك برچسب پاياني داشته باشند.
<p> اين يك پاراگراف است
<p> اين يك پاراگراف ديگر است
اما در"ايكس.ام.ال." همه عناصر بايد يك برچسب پاياني داشته باشند مثل:
<p> اين يك پاراگراف است < SPAN>p>
<p> اين يك پاراگراف ديگر است < SPAN>p>
توجه: اعلان "ايكس.ام.ال." برچسب پاياني ندارد. اين يك اشتباه نيست.اعلان بخشي از سند "ايكس.ام.ال." نيست . اعلان ، يك عنصر "ايكس.ام.ال." نيست و مي تواند برچسب پاياني را نداشته باشد.
برچسب هاي "ايكس.ام.ال." نسبت به بزرگي و كوچكي حروف حساس هستند:
برخلاف "اچ.تي.ام.ال." برچسب هاي "ايكس.ام.ال." نسبت به بزرگي و كوچكي حروف حساس هستند. با "ايكس.ام.ال." برچسب <letter> از برچسب <Letter> متفاوت است.
بنابراين برچسب هاي آغازي و آخري بايد به يك حالت نوشته شود. مثال:
همه عناصر "ايكس.ام.ال."بايد بطور مناسب قرار بگيرند با قرار گرفتن نامناسب برچسب ها، هيچ معني در "ايكس.ام.ال." نخواهند داشت. در "اچ.تي.ام.ال." بعضي از عناصر مي توانند بطور نامناسبي با يكديگر قرار بگيرندمثل:<b><i>this is bold and italic< SPAN>b><i>
همه اسناد "ايكس.ام.ال." بايد يك عنصر ريشه(root) داشته باشند
تمامي اسناد "ايكس.ام.ال." بايد شامل يك جفت برچسب واحد براي تعريف عنصر ريشه باشند. همه عناصر بايد درون اين عنصر ريشه باشند. همه عناصر مي توانند عناصر فرزند(child) داشته باشند.عناصر فرعي بايد بطور صحيحي درون والدين قرار بگيرند.
ويژگي مقادير بايد هميشه داخل " " قرار بگيرند
در "ايكس.ام.ال." حذف " " اطراف مقادير توصيفي غير قانوني است. در دو سند "ايكس.ام.ال." زير سند اول نادرست و سند دوم درست است:
اشكال سند اول اين است كه ويژگي (attribute) تاريخ داخل " " قرار نگرفته است.
در "ايكس.ام.ال." فضاي خالي حفظ مي شود
برخلاف "اچ.تي.ام.ال." در"ايكس.ام.ال." فضاي خالي در سند كوتاه نمي شود. جمله اي مثل:
Hello my name is Tove,
در "اچ.تي.ام.ال."بصورت زير نمايش داده خواهد شد:
Hello my name is Tove,
توضيح(comments) در "ايكس.ام.ال."
تركيب نوشتن توضيح در"ايكس.ام.ال." شبيه "اچ.تي.ام.ال." است.
"ايكس.ام.ال." يك متن ساده بعلاوه تعدادي برچسب داخل علامت <> مي باشد، نرم افزاري كه متن ساده را كنترل مي كند همچنين مي تواند"ايكس.ام.ال." را هم كنترل نمايد.
عناصر "ايكس.ام.ال."
عناصر "ايكس.ام.ال."گسترش پذير و مرتبط هستند. اين عناصر قواعد نامگذاري ساده اي دارند.
اسناد "ايكس.ام.ال." براي انتقال اطلاعات بيشتر مي تواند گسنرش داده شود. به مثال زير توجه كنيد:
Don't forget me this weekend!
با اين تصور كه ما يك برنامه كاربردي ايجاد كرده ايم كه عناصر<to>, <from>, and <body> را از اسناد "ايكس.ام.ال." براي توليد اين خروجي بيرون مي كشد:
MESSAGE
To: Tove
From: Jani
Don't forget me this weekend
تصور كنيد كه مولف سند "ايكس.ام.ال." مقداري اطلاعات اضافي به سند اضافه مي نمايد.
Don't forget me this weekend!
برنامه كاربردي بايد هنوز قادر به يافتن عناصر <to>and<from>, <body> در اسناد "ايكس.ام.ال." باشد و همان خروجي را توليد نمايد.
عناصر"ايكس.ام.ال." بصورت والدين و فرزندان با هم مرتبط هستند. براي درك "ايكس.ام.ال." شما بايد بدانيد چگونه ارتباطات مابين عناصر"ايكس.ام.ال." نامگذاري مي شود و چگونه مندرجات عناصر توصيف مي شود.
فرض كنيد اين توصيف يك كتاب است:
My First XML
Introduction to XML
What is HTML
What is XML
XML Syntax
عناصر بايد برچسب پاياني داشته باشند و بطور مناسبي جاگذاري شوند.
فرض كنيد اين سند "ايكس.ام.ال." توصيف يك كتاب است:
book عنصر ريشه است. Title, prod and chapter عناصر فرزند book است. Book والدين Title , prod and chapter است. Title, prod and chapter عناصر خواهر هستند چون آنها والدين يكساني دارند.
عناصر داراي مندرجات(content) هستند:
عناصر مي توانند مندرجات متفاوتي داشته باشند . يك عنصر"ايكس.ام.ال." از عنصر برچسب آغازي تا عنصر برچسب پاياني را شامل مي شود. يك عنصر مي تواند عصر مندرجات ؤ مندرجات مركب،مندرجات ساده يا مندرجات خالي داشته باشد. يك عنصر همچنين مي تواند ويژگي( صفت مشخصه) داشته باشد. در مثال بالا:
book عنصر مندرجات دارد ، براي اينكه آن شامل عناصر ديگر است.
capter مندرجات مركب دارد ، براي اينكه هم متن و هم عناصر ديگر دارد.
para مندرجات ساده دارد(مندرجات متني) براي اينكه فقط شامل متن است.
prod مندرجات خالي دارد براي اينكه هيچ اطلاعاتي را منتقل نمي كند.
در مثال بالا فقط عنصرprod صفت مشخصه دارد. صفت مشخصه كه ID ناميده مي شود ، داراي مقدار . "657-33" است. صفت مشخصه اي كه media ناميده مي شود ، داراي مقدار "paper" است.
نامگذاري عناصر
عناصر "ايكس.ام.ال." بايد اين قواعد نامگذاري را دنبال كنند:
نامها بايد شامل حروف ، شماره ها و ديگر كاراكترها باشند.
نامها نبايد با شماره و كاراكترهاي نقطه گذاري شروع شوند.
نامها نبايد با حروف "ايكس.ام.ال." شروع شوند.
نامها نمي توانند فضاي خالي داشته باشند.
ويژگي هاي "ايكس.ام.ال."
عناصر"ايكس.ام.ال." دقيقا مثل "اچ.تي.ام.ال." مي توانند ويژگي هايي را در برچسب آغازي داشته باشند.
ويژگي ها براي فراهم كردن اطلاعات اضافي درباره عناصر استفاده مي شوند.
در مثال "اچ.تي.ام.ال." زيرويژگي SRC اطلاعات اضافي را درباره عنصرIMG فراهم مي كند.
ويژگي ها (صفات مشخصه) اغلب اطلاعاتي فراهم مي كنند كه قسمتي از داده نيست. در مثال زير file type غيرمرتبط با داده است ، اما براي نرم افزار مهم است كه مي خواهد اين عنصر را بكار ببرد.
شيوه كوتيشن مارك (Quote)بصورت " " يا ' '
مقادير ويژگي ها(صفات مشخصه) بايد هميشه داخل كوتيشن مارك قرار گيرند ،هر دو كوتيشن مفرد (' ') وجفت (" ") مي تواند استفاده شود. براي جنسيت شخص ، برچسب شخص بصورت زير مي تواند نوشته شود:
يا بصورت:
توجه:
اگر مقدار صفت مشخصه ، خود داراي كوتيشن جفت باشد ، ضروري است كه كوتيشن مفرد بكار برده شود وبالعكس. مثال:
داده مي تواند در عناصر فرزند يا ويژگي ها(عناصر مشخصه) ذخيره شود. مثال:
در مثال اول جنسيت يك ويژگي و در مثال دوم يك عنصر فرزند است. هر دو مثال اطلاعات يكساني را فراهم مي كنند. قواعدي براي اينكه چه وقت از ويژگي ها و چه وقت از عناصر فرزند بايد استفاده شود ، وجود ندارد.
سه سند"ايكس.ام.ال." زير دقيقا شامل اطلاعات يكساني است:
يك ويژگي date در مثال اول استفاده شده است:
Don't forget me this weekend!
عنصرdate در مثال دوم استفاده شده است:
Don't forget me this weekend!
يك عنصر date گسترش يافته در مثال سوم استفاده شده است:
Don't forget me this weekend!
بعضي از مشكلات استفاده از ويژگي ها(صفات مشخصه) عبارتند از:
ويژگي ها نمي توانند شامل چندين مقدار باشند(عناصر فرزند مي توانند)
ويژگي ها به آساني قابل گسترش نيستند(براي تغييرات آينده)
ويژگي ها نمي توانند ساختارها را توصيف كنند(عناصر فرزند مي توانند)
از ويژگي ها فقط براي فراهم نمودن اطلاعاتي كه با داده مرتبط نيست استفاده كنيد.
اعتبار"ايكس.ام.ال."
يك سند"ايكس.ام.ال." با تركيب صحيح، سندي است كه مطابق با قواعد تركيب "ايكس.ام.ال." باشد . سند "ايكس.ام.ال." خوب فرمت شده ، تركيب درست "ايكس.ام.ال." را دارد.
Don't forget me this weekend!
اسناد معتبر "ايكس.ام.ال."
همچنين يك سند معتبر "ايكس.ام.ال." با"دي.دي.تي." (DTD:Document type definition) مطابقت دارد.
يك سند معتبر "ايكس.ام.ال." يك سند "ايكس.ام.ال." خوب فرمت شده است كه همچنين با قواعد توصيف نوع سند(DTD) مطابقت دارد.
Don't forget me this weekend!
يك DTD عناصر قانوني يك سند "ايكس.ام.ال." را توصيف مي كند. هدف ازيك DTD توصيف قوانين ساختمان يك سند "ايكس.ام.ال." است.
منبع
http://www.w3schools.com/xml/xml_whatis.asp