چگونه می‌توان از XML استفاده کرد؟ درخت‌ها و سینتکس در XML

24 اردیبهشت 1399
درسنامه درس 2 از سری آموزش XML
XML-02

در قسمت قبل توضیح دادیم که XML جهت ذخیره و انتقال داده ها طراحی شده است. XML طوری طراحی شده است که هم برای انسان و هم برای ماشین قابل خواندن باشد.. در این قسمت از سری آموزشی XML، مباحث درخت‌ و سینتکس XML را تشریح می کنیم و می گوئیم چگونه می توان از XML استفاده کرد.

چگونه می توانیم XML را مورد استفاده قرار دهیم؟

XML در بسیاری از قسمت های توسعه ی وب استفاده می شود. XML به صورت دیتایی جدا ارائه و از لایه presentation جدا می شود.

XML لایه دیتا را از لایه presentation جدا می کند

در توسعه ی وب یا نرم افزارهای دیگر، در لایه ی View یا presentation یا ارائه، اطلاعاتی برای کاربر به نمایش در می آید. XML در رابطه با طریقه ی نمایش دیتا هیچگونه اطلاعاتی را با خود ندارد اما همان اطلاعات فایل XML می توانند در بسیاری از روش های نمایش اطلاعات بکارگرفته شوند. با توجه به این که XML دیتا را انتقال می دهد و در اختیار می گذارد اما درباره ی شیوه ی نمایش آن، اطلاعاتی را عرضه نمی کند، با XML می توان یک جدایی کامل بین لایه ی دیتا و لایه ی presentation انجام داد. لایه ی دیتا که شامل اطلاعات می شود و لایه ی presentation شامل view و نمایش برای کاربر می شود.

XML اغلب یک مکمل برای HTML است

در بسیاری از پروژه ها و برنامه های HTML، از XML جهت ذخیره و انتقال داده ها استفاده می شود، در حالیکه از 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 tree

مثالی از سند (فایل) 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 از عنصر ریشه شروع می شود و شاخه های آن درخت، عناصر فرزند هستند. همه عناصر می توانند عناصری را به عنوان زیر مجموعه خود داشته باشند (عناصر فرزند):

<?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 از سینتکسی که واضح و توصیف کننده است، بهره می برد.

بخش مقدمه فایل 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 حتما باید یک عنصر ریشه داشته باشند

فایل های 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 می شناسیم:

<?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، نبستن تگ بر خلاف قوانین سینتکس است. همه عناصر XML همانطور که با یک تگ باز شروع می شوند، باید با تگ بسته نیز به پایان برسند:

<p>This is a paragraph.</p>
<br />

نکته: تگ مقدمه XML، تگ بسته ندارد! این یک خطا نیست. در حقیقت عنصر مقدمه یا prolog جزئی از سند XML نیست.

تگ های XML به حروف کوچک و بزرگ حساسند

تگ های XML به بزرگی و کوچکی حروف حساس اند، برای مثال تگ <Letter> متفاوت از تگ <letter> است.

باز و بسته کردن تگ ها باید با حروف یکسان باشد:

<message>This is correct</message>

«باز و بسته کردن تگ» عموما به «آغاز و پایان تگ ها» اشاره دارد. به هر صورتی که ترجیح می دهید استفاده کنید، اما تگ های آغازی و پایانی باید یکی باشند.

عناصر XML باید به درستی به صورت تو در تو نوشته شده باشند

در 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 باید همیشه داخل کوتیشن قرار گیرند

عناصر XML ویژگی یا صفاتی دارند به صورت جفت مقدار/نام مانند آن چه در HTML است. در XML، مقادیر مربوط به صفات یا ویژگی ها باید داخل کوتیشن قرار بگیرند:

<note date="12/11/2007">
  <to>Tove</to>
  <from>Jani</from>
</note>

علائم خاص

برخی کاراکترها در XML مفهوم خاصی دارند. اگر شما یک کاراکتری مانند ">" درون عنصر XML خود بگذارید، با خطا روبرو می شوید. خطا به این دلیل رخ می دهد که پارسر در XML، آن را آغاز یک عنصر جدید تفسیر می کند. بنابراین کد زیر خطا تولید می کند:

<message>salary < 1000</message>

به جهت جلوگیری از این خطا، برای مثال اگر می خواهید کاراکتر ">" را نشان دهید، باید از علائم خاص استفاده کنید. در کد زیر با علامت خاص، ">" را نمایش می دهیم:

<message>salary &lt; 1000</message>

5 علائم خاص از پیش تعریف شده در XML را می توانید در جدول زیر مشاهده کنید:

کوچک تر از > ;lt&
بزرگ تر از < ;gt&
آمپرسند (ampersand) & ;amp&
کوتیشن ' ;apos&
کوتیشن دو گانه '' ;quot&

تنها استفاده کردن از > و & در XML ممنوع شده است. اما عادت خوبی است که به جای < هم از ;gt& و همین طور برای کاراکترها هم از بقیه علائم استفاده کنید.

کامنت ها در XML

سینتکس XML برای نوشتن کامنت ها شبیه سینتکس کامنت ها در HTML است:

<!-- This is a comment -->

نمی توان از دو خط تیره در میان کامنت استفاده کرد:

<!-- This is an invalid -- comment -->

فضای خالی در XML از پیش رزرو شده است

XML تعداد فضاهای خالی را کم نمی کند. (HTML چند فضای خالی یا white-space را که پشت سر یکدیگر آمده باشند به یک فضای خالی تبدلی می کند و دراوقع تعداد آن ها را کم می کند).

برای مثال در HTML داریم: Hello     Tove که به Hello Tove تبدیل می شود اما اگر در XML همین عبارت را داشته باشیم در نهایت همچنان به صورت Hello     Tove می ماند.

خط جدید در فایل های XML

برنامه های ویندوزی از ترکیب کدهای CR + LF استفاده می کنند تا یک خط جدید ایجاد کنند.

منظور از اصطلاح خط جدید یا خط بعد همان کاری است که با کلیدی enter در فایل های متنی انجام می دهیم.

خط جدید یا رفتن به خط بعدی در سیستم های مبتنی بر مک فقط با کد CR اجرا می شود. XML نیز خط جدید را با LF ذخیره و اعمال می کند.

LF به طور کلی اصطلاحی است که برای رفتن به خط جدید (بعدی) مورد استفاده قرار می گیرد (همان کاراکتر 'n\') و همچنین CR هم همان کاراکتر 'r\' است که گفته شد در بعضی از سیستم ها بکار گرفته می شود و به معنای رفتن به سر خط کنونی است (به جای آن که به سر خط بعدی برود).

فایل های XML که به خوبی شکل گرفته اند

اصطلاحا می گویند اسناد یا فایل های XML که براساس قواعد سینتکس XML که در بالا ذکر شد باشند، اسناد well-formed هستند یعنی به خوبی ساختاربندی شده و شکل گرفته اند.

تمام فصل‌های سری ترتیبی که روکسو برای مطالعه‌ی دروس سری آموزش XML توصیه می‌کند:
نویسنده شوید
دیدگاه‌های شما

در این قسمت، به پرسش‌های تخصصی شما درباره‌ی محتوای مقاله پاسخ داده نمی‌شود. سوالات خود را اینجا بپرسید.