در قسمت قبل توضیح دادیم که XML جهت ذخیره و انتقال داده ها طراحی شده است. XML طوری طراحی شده است که هم برای انسان و هم برای ماشین قابل خواندن باشد.. در این قسمت از سری آموزشی XML، مباحث درخت و سینتکس XML را تشریح می کنیم و می گوئیم چگونه می توان از XML استفاده کرد.
XML در بسیاری از قسمت های توسعه ی وب استفاده می شود. XML به صورت دیتایی جدا ارائه و از لایه presentation جدا می شود.
در توسعه ی وب یا نرم افزارهای دیگر، در لایه ی View یا presentation یا ارائه، اطلاعاتی برای کاربر به نمایش در می آید. XML در رابطه با طریقه ی نمایش دیتا هیچگونه اطلاعاتی را با خود ندارد اما همان اطلاعات فایل XML می توانند در بسیاری از روش های نمایش اطلاعات بکارگرفته شوند. با توجه به این که XML دیتا را انتقال می دهد و در اختیار می گذارد اما درباره ی شیوه ی نمایش آن، اطلاعاتی را عرضه نمی کند، با XML می توان یک جدایی کامل بین لایه ی دیتا و لایه ی presentation انجام داد. لایه ی دیتا که شامل اطلاعات می شود و لایه ی presentation شامل view و نمایش برای کاربر می شود.
در بسیاری از پروژه ها و برنامه های HTML، از XML جهت ذخیره و انتقال داده ها استفاده می شود، در حالیکه از HTML جهت فرمت بندی و نمایش همان داده ها استفاده می کنند.
در زمانی که داده ها در HTML نمایش داده می شوند، لازم نیست هنگام تغییر داده ها، فایل HTML را ویرایش کنید. با استفاده از XML می توانید داده ها را در فایل های جدا ذخیره کنید. با مقدار کمی کد جاوا اسکریپت می توانید داده های یک فایل XML را بخوانید و محتویات مربوط به داده ها در هر صفحه HTML به روز کنید. ساختار فایل Books.xml را در کد زیر مشاهده کنید که داده های مربوط به کتاب ها را بدون شیوه ی خاصی برای نمایش ذخیره و قابل خواندن کرده است:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="web" cover="paperback"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
شما مطالب بسیاری را در رابطه با XML و جاوا اسکریپت در مباحث مربوط به DOM در این دوره آموزشی مشاهده خواهید کرد.
فایل های XML از یک ساختار درختی تبعیت می کنند که با «ریشه» آغاز می شود و به شاخه های آن، برگ های این درخت می گوییم. تصویر زیر را که ساختار یک فایل XML را نشان می دهد، مشاهده کنید:
تصویری که در بالا آمده است، اطلاعات مربوط به کتاب ها را به صورت زیر در یک فایل XML قرار می دهد:
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
اسناد یا فایل های XML به عنوان عنصر درخت ها در نظر گرفته می شوند. یک درخت XML از عنصر ریشه شروع می شود و شاخه های آن درخت، عناصر فرزند هستند. همه عناصر می توانند عناصری را به عنوان زیر مجموعه خود داشته باشند (عناصر فرزند):
<?xml version="1.0" encoding="UTF-8"?> <bookstore> <book category="cooking"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="web"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>
اصطلاحات پدر، فرزند و برادر (عناصر هم سطح) جهت شرح روابط بین عناصر بکار می روند. عناصر پدر، فرزند دارند. فرزندها نیز پدر دارند. برادرها نیز عناصری هستند که همگی عناصر فرزند یک پدر هستند. همه عناصر می توانند محتوای متنی (برای مثال در بالا Harry Potter محتوای متنی است) و صفت یا ویژگی (برای مثال "category="cooking یک ویژگی یا صفت است) داشته باشند.
XML از سینتکسی که واضح و توصیف کننده است، بهره می برد.
بخش مقدمه فایل XML، نسخه و سیستم اندکدینگ (encoding) در فایل XML را نشان می دهد:
<?xml version="1.0" encoding="UTF-8"?>
در خط بعدی فایل XML عنصر ریشه سند XML قرار می گیرد:
<bookstore>
خط بعدی با عنصر <book> آغاز می شود:
<book category="cooking">
عناصر <book> خود شامل 4 عنصر هستند: <title> ،<author> ،<year> ،<price>.
<title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price>
خط بعدی با عنصر کتاب (book) خاتمه می یابد:
</book>
شما از این مثال می توانید می توانید دریابید که که فایل XML شامل اطلاعاتی راجع به کتاب های یک کتاب فروشی است.
قوانین سینتکس XML بسیار ساده و منطقی هستند. این قوانین را می توان به راحتی آموخت و استفاده کرد.
فایل های XML حتما باید شامل یک عنصر ریشه باشند که پدر همه عناصر سند XML جاری است:
<root> <child> <subchild>.....</subchild> </child> </root>
در کد مثال زیر، <note> به عنوان عنصر ریشه تلقی می گردد:
<?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
این خط را به عنوان مقدمه فایل یا سند XML می شناسیم:
<?xml version="1.0" encoding="UTF-8"?>
آوردن مقدمه XML انتخابی است. اگر وجود داشته باشد، حتما باید به عنوان اولین چیز در سند XML بیاید. اسناد XML می توانند شامل کاراکترهای بین المللی باشند. برای مثال کاراکتر های نروژی øæå یا فرانسوی êèé.
برای جلوگیری از بروز خطا، باید از سیستم encoding استفاده کنید یا فایل های XML خود را تحت UTF-8 ذخیره کنید. UTF-8 سیستم اندکدینگ پیش فرض کاراکتر ها برای فایل های XML است.
نکته: UTF-8 همچنین برای HTML5 ،CSS ،JavsScript ،PHP و SQL سیستم encoding پیش فرض محسوب می گردد.
در XML، نبستن تگ بر خلاف قوانین سینتکس است. همه عناصر XML همانطور که با یک تگ باز شروع می شوند، باید با تگ بسته نیز به پایان برسند:
<p>This is a paragraph.</p> <br />
نکته: تگ مقدمه XML، تگ بسته ندارد! این یک خطا نیست. در حقیقت عنصر مقدمه یا prolog جزئی از سند XML نیست.
تگ های XML به بزرگی و کوچکی حروف حساس اند، برای مثال تگ <Letter> متفاوت از تگ <letter> است.
باز و بسته کردن تگ ها باید با حروف یکسان باشد:
<message>This is correct</message>
«باز و بسته کردن تگ» عموما به «آغاز و پایان تگ ها» اشاره دارد. به هر صورتی که ترجیح می دهید استفاده کنید، اما تگ های آغازی و پایانی باید یکی باشند.
در HTML، ممکن است شما عناصری را ببینید که به درستی به صورت تو در تو قرار نگرفته اند:
<b><i>This text is bold and italic</b></i>
در XML همه عناصر باید به درستی به صورت تو در تو قرار گرفته باشند:
<b><i>This text is bold and italic</i></b>
در مثال بالا، «تو در تو به صورت درست» به بیان ساده یعنی وقتی عنصر <i> داخل عنصر <b> باز شده است، حتما باید داخل عنصر <b> بسته شود.
عناصر XML ویژگی یا صفاتی دارند به صورت جفت مقدار/نام مانند آن چه در HTML است. در XML، مقادیر مربوط به صفات یا ویژگی ها باید داخل کوتیشن قرار بگیرند:
<note date="12/11/2007"> <to>Tove</to> <from>Jani</from> </note>
برخی کاراکترها در XML مفهوم خاصی دارند. اگر شما یک کاراکتری مانند ">" درون عنصر XML خود بگذارید، با خطا روبرو می شوید. خطا به این دلیل رخ می دهد که پارسر در XML، آن را آغاز یک عنصر جدید تفسیر می کند. بنابراین کد زیر خطا تولید می کند:
<message>salary < 1000</message>
به جهت جلوگیری از این خطا، برای مثال اگر می خواهید کاراکتر ">" را نشان دهید، باید از علائم خاص استفاده کنید. در کد زیر با علامت خاص، ">" را نمایش می دهیم:
<message>salary < 1000</message>
5 علائم خاص از پیش تعریف شده در XML را می توانید در جدول زیر مشاهده کنید:
کوچک تر از | > | ;lt& |
بزرگ تر از | < | ;gt& |
آمپرسند (ampersand) | & | ;amp& |
کوتیشن | ' | ;apos& |
کوتیشن دو گانه | '' | ;quot& |
تنها استفاده کردن از > و & در XML ممنوع شده است. اما عادت خوبی است که به جای < هم از ;gt& و همین طور برای کاراکترها هم از بقیه علائم استفاده کنید.
سینتکس XML برای نوشتن کامنت ها شبیه سینتکس کامنت ها در HTML است:
<!-- This is a comment -->
نمی توان از دو خط تیره در میان کامنت استفاده کرد:
<!-- This is an invalid -- comment -->
XML تعداد فضاهای خالی را کم نمی کند. (HTML چند فضای خالی یا white-space را که پشت سر یکدیگر آمده باشند به یک فضای خالی تبدلی می کند و دراوقع تعداد آن ها را کم می کند).
برای مثال در HTML داریم: Hello Tove که به Hello Tove تبدیل می شود اما اگر در XML همین عبارت را داشته باشیم در نهایت همچنان به صورت Hello Tove می ماند.
برنامه های ویندوزی از ترکیب کدهای CR + LF استفاده می کنند تا یک خط جدید ایجاد کنند.
منظور از اصطلاح خط جدید یا خط بعد همان کاری است که با کلیدی enter در فایل های متنی انجام می دهیم.
خط جدید یا رفتن به خط بعدی در سیستم های مبتنی بر مک فقط با کد CR اجرا می شود. XML نیز خط جدید را با LF ذخیره و اعمال می کند.
LF به طور کلی اصطلاحی است که برای رفتن به خط جدید (بعدی) مورد استفاده قرار می گیرد (همان کاراکتر 'n\') و همچنین CR هم همان کاراکتر 'r\' است که گفته شد در بعضی از سیستم ها بکار گرفته می شود و به معنای رفتن به سر خط کنونی است (به جای آن که به سر خط بعدی برود).
اصطلاحا می گویند اسناد یا فایل های XML که براساس قواعد سینتکس XML که در بالا ذکر شد باشند، اسناد well-formed هستند یعنی به خوبی ساختاربندی شده و شکل گرفته اند.
در این قسمت، به پرسشهای تخصصی شما دربارهی محتوای مقاله پاسخ داده نمیشود. سوالات خود را اینجا بپرسید.