آموزش XML و آشنایی با ساختار دستوری آن
💡شروع آموزش XML
در این راهنمای آموزش XML، ساختار دستوری، المنت ها، ویژگی ها، اعتبارسنجی و روش های نمایش اطلاعات در XML را با مثال بررسی می کنیم. XML یا زبان نشانه گذاری توسعه پذیر، روشی متنی و ساختارمند برای نگهداری و انتقال داده است. برخلاف HTML که بیشتر برای نمایش محتوا در مرورگر به کار می رود، XML به شما اجازه می دهد ساختار و معنای داده ها را با تگ های متناسب با نیاز خود تعریف کنید.
🌐کاربرد XML در وب
در مسیر توسعه وب، شناخت XML در کنار مباحثی مانند
طراحی سایت می تواند برای کار با خوراک های داده، تنظیمات نرم افزار، تبادل اطلاعات میان سامانه ها و بعضی اسناد ساختاریافته مفید باشد. XML به تنهایی زبان برنامه نویسی یا ابزار طراحی صفحه نیست؛ بلکه قالبی برای توصیف داده است که برنامه های مختلف می توانند آن را بخوانند و پردازش کنند.
ساختار دستوری و قواعد پایه XML
📘اعلام نسخه و کدگذاری
سند XML ممکن است با اعلان XML آغاز شود. این اعلان نسخه زبان و در صورت نیاز کدگذاری نویسه ها را مشخص می کند. اعلان، تگ معمولی XML نیست و تگ پایانی ندارد. اگر از آن استفاده می کنید، باید در ابتدای سند قرار بگیرد و عبارت کدگذاری را با کدگذاری واقعی فایل هماهنگ کنید؛ برای نمونه، اگر فایل با UTF-8 ذخیره شده، همان مقدار را اعلام کنید.
<?xml version="1.0" encoding="UTF-8"?>
⚠️حساسیت به حروف بزرگ و کوچک
نام تگ ها در XML به حروف بزرگ و کوچک حساس است. بنابراین <Letter> و <letter> دو نام متفاوت به شمار می روند. تگ آغاز و پایان یک عنصر نیز باید دقیقا نام یکسانی داشته باشند. اگر نام یا بزرگی و کوچکی حروف در دو طرف یکسان نباشد، سند خوش ساخت نخواهد بود و پردازشگر XML معمولا خطا گزارش می کند.
<from>This is not OK!</From>
<from>This is OK!</from>
🧩تگ ها باید درست تو در تو باشند
هر تگی که باز می شود باید پیش از بسته شدن تگ والد خودش بسته شود. به بیان دیگر، تگ ها باید به شکل تو در تو و با ترتیب صحیح قرار بگیرند. بسته شدن تگ بیرونی پیش از تگ داخلی، ساختار را خراب می کند؛ حتی اگر همه تگ های باز شده در جایی از متن دارای تگ پایانی باشند.
<b><i>This is not OK!</b></i>
<b><i>This is OK!</i></b>
✅هر سند فقط یک عنصر ریشه دارد
یک سند XML باید دقیقا یک عنصر ریشه داشته باشد و سایر عناصر درون آن قرار بگیرند. عنصر ریشه، چارچوب کلی داده را می سازد و اجازه نمی دهد چند عنصر مستقل در سطح اصلی سند باقی بمانند. رعایت این قاعده به برنامه ها کمک می کند محتوای سند را به شکل درختی و قابل پیش بینی بخوانند.
<root>
<child>
<subchild>متن نمونه</subchild>
</child>
</root>
المنت های زبان XML و اجزای سند
🗂️عنصر، محتوا و ویژگی
عنصر XML از تگ آغاز، محتوای احتمالی و تگ پایان تشکیل می شود. محتوا می تواند متن، عنصرهای دیگر یا ترکیبی از هر دو باشد. ویژگی ها نیز در تگ آغاز می آیند و اطلاعاتی توصیفی درباره عنصر ارائه می کنند. در نتیجه، می توان داده ها را به صورت یک ساختار درختی از عنصرهای والد و فرزند سازمان دهی کرد.
- عنصرهای تو در تو: برای دسته بندی داده و نشان دادن رابطه میان بخش های مختلف سند استفاده می شوند.
- متن: مقدار متنی یک عنصر را تشکیل می دهد؛ مانند نام نویسنده یا عنوان کتاب.
- ویژگی: اطلاعات تکمیلی را در تگ آغاز نگه می دارد؛ مانند دسته بندی یک کتاب.
- محتوای ترکیبی: ممکن است شامل متن و عنصرهای فرزند به طور هم زمان باشد.
📚نمونه فهرست کتاب ها
در نمونه زیر، bookstore عنصر ریشه و هر book یک عنصر فرزند آن است. عنصرهای عنوان، نویسنده، سال و قیمت نیز جزئیات هر کتاب را نگه می دارند. ویژگی category در تگ آغاز، دسته کتاب را مشخص می کند.
<bookstore>
<book category="CHILDREN">
<title>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
قواعد نام گذاری تگ ها
✍️انتخاب نام های خوانا
نام تگ ها را طوری انتخاب کنید که نقش و محتوای عنصر را روشن کنند. نام ها می توانند از حروف، عددها و برخی نویسه های مجاز ساخته شوند، اما نباید با عدد شروع شوند یا شامل فاصله باشند. همچنین نامی که با حروف «xml» آغاز می شود برای کاربردهای معمول انتخاب مناسبی نیست و دونقطه در نام ها کاربرد ویژه ای در فضای نام دارد.
- توصیفی بنویسید: نام هایی مانند
first_name و book_title از نام های مبهم خواناتر هستند.
- نام را بیش از حد طولانی نکنید:
book_title معمولا روشن تر و ساده تر از نام های چندبخشی و طولانی است.
- در یک سند یکدست بمانید: یک روش ثابت برای جدا کردن واژه ها انتخاب کنید تا خواندن و نگهداری داده آسان تر شود.
- از فاصله در نام تگ استفاده نکنید: در صورت نیاز، از شیوه نام گذاری جایگزین و مجاز استفاده کنید.
ویژگی های تگ های XML و تفاوت آن ها با المنت ها
🔎تعریف ویژگی ها
ویژگی XML در تگ آغاز یک عنصر نوشته می شود و مقدار آن باید داخل کوتیشن دوتایی یا تکی قرار بگیرد. ویژگی برای اطلاعات کوتاه و توصیفی مناسب است؛ برای نمونه، می توان نوع فایل یا شناسه یک رکورد را در آن نگه داشت. نام ویژگی نیز باید در همان تگ یکتا باشد و مقدار آن باید به درستی نقل قول شود.
<file type="gif">Computer.gif</file>
<person age="30">Sara</person>
<person age='30'>Sara</person>
⚠️انتخاب کوتیشن مناسب
اگر مقدار ویژگی شامل کوتیشن دوتایی باشد، می توانید مقدار را با کوتیشن تکی دربر بگیرید؛ یا نویسه کوتیشن را به شکل مناسب در XML بنویسید. این کار باعث می شود مرز آغاز و پایان مقدار برای پردازشگر روشن بماند.
<person name='Alireza "Farhadi"'>student</person>
چه زمانی داده را به صورت المنت بنویسیم؟
🌱ساختار روشن و قابل گسترش
گاهی می توان یک داده را هم به شکل ویژگی و هم به صورت عنصر فرزند نمایش داد. برای نمونه، سن فرد می تواند ویژگی age باشد یا درون عنصر جداگانه age قرار بگیرد. وقتی داده ممکن است چند مقدار داشته باشد، ساختار فرزند داشته باشد یا در آینده گسترش پیدا کند، استفاده از المنت ها معمولا خوانایی و انعطاف بیشتری فراهم می کند. انتخاب نهایی باید با ساختار مورد انتظار برنامه و قرارداد داده هماهنگ باشد.
<person age="18">
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
<person>
<age>18</age>
<firstname>Anna</firstname>
<lastname>Smith</lastname>
</person>
| معیار |
ویژگی XML |
عنصر فرزند XML |
| جایگاه |
در تگ آغاز عنصر |
در محتوای عنصر والد |
| مناسب برای |
اطلاعات کوتاه و توصیفی |
داده های اصلی، چندمقداری یا ساختاریافته |
| امکان تو در تو شدن |
خیر |
بله |
اعتبارسنجی اسناد XML
🛠️سند خوش ساخت و سند معتبر
سند خوش ساخت، قواعد نحوی XML را رعایت می کند: یک عنصر ریشه دارد، تگ ها درست بسته شده اند، ترتیب تو در تو بودن صحیح است و مقدار ویژگی ها داخل کوتیشن آمده است. اما خوش ساخت بودن همیشه به معنای انطباق با ساختار مورد انتظار یک برنامه نیست. اعتبارسنجی بررسی می کند که سند علاوه بر قواعد پایه، با تعریف ساختار یا محدودیت های تعیین شده نیز مطابقت داشته باشد.
<note>
<to>Hamed</to>
<from>Ali</from>
<heading>Reminder</heading>
<body>Do not forget me this weekend!</body>
</note>
اعتبارسنجی با DTD
📋تعریف ساختار با DTD
DTD یا تعریف نوع سند، مشخص می کند یک سند XML چه عنصرهایی دارد و چه ترتیبی برای آن ها مجاز است. می توان تعریف DTD را درون سند قرار داد یا به فایلی جداگانه پیوند داد. پردازشگر با مقایسه سند و این تعریف می تواند وجود عنصرهای لازم و ترتیب آن ها را بررسی کند.
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
اعتبارسنجی با XML Schema
🔐کنترل نوع و ترتیب داده ها
XML Schema روشی برای تعریف ساختار و محدودیت های داده است. این روش، که معمولا با زبان XSD نوشته می شود، امکان تعیین نوع داده، عنصرهای مجاز، ترتیب آن ها و بسیاری از قواعد تکمیلی را فراهم می کند. در نتیجه برای سامانه هایی که به قرارداد داده دقیق نیاز دارند، می تواند گزینه مناسبی باشد.
<xs:element name="note"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType>
<xs:sequence>
<xs:element name="to" type="xs:string"/>
<xs:element name="from" type="xs:string"/>
<xs:element name="heading" type="xs:string"/>
<xs:element name="body" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
| روش |
کاربرد اصلی |
نکته |
| بررسی خوش ساخت بودن |
کنترل قواعد پایه XML |
ساختار را با قواعد نحوی می سنجد. |
| DTD |
تعریف عناصر و ترتیب آن ها |
برای تعریف برخی محدودیت های ساختاری مناسب است. |
| XML Schema یا XSD |
تعریف ساختار و انواع داده |
قواعد نوع داده و محدودیت های دقیق تری ارائه می دهد. |
قالب بندی فایل های XML با CSS
🎨نمایش داده با CSS
برای نمایش خواناتر XML در مرورگر می توان یک فایل CSS را به سند پیوند داد. CSS ظاهر عنصرها را کنترل می کند؛ برای نمونه، مشخص می کند هر عنصر چگونه نمایش داده شود یا چه رنگ و فاصله ای داشته باشد. این کار داده XML را به صفحه HTML تبدیل نمی کند، بلکه نحوه نمایش همان سند را قالب بندی می کند.
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="book_catalog.css"?>
<CATALOG>
<BOOK>
<TITLE>HTML</TITLE>
<AUTHOR>Developer1</AUTHOR>
<COMPANY>Pishgaman</COMPANY>
<PRICE>4500</PRICE>
<YEAR>2019</YEAR>
</BOOK>
</CATALOG>
🖌️نمونه قواعد CSS برای XML
در CSS، نام عنصرهای XML می تواند به عنوان انتخابگر استفاده شود. در مثال زیر، کاتالوگ، کتاب ها و عنوان هر کتاب ظاهر جداگانه ای دارند. نام عنصرها در فایل CSS باید با نام هایی که در سند XML نوشته شده اند هماهنگ باشد.
CATALOG {
background-color: #ffffff;
width: 100%;
}
BOOK {
display: block;
margin-bottom: 30pt;
}
TITLE {
color: #ff0000;
font-size: 20pt;
}
AUTHOR {
color: #0000ff;
font-size: 20pt;
}
PRICE, YEAR, COMPANY {
display: block;
color: #000000;
margin-left: 20pt;
}
✅چه زمانی CSS کافی است؟
اگر هدف فقط بهتر کردن نمایش داده های XML در مرورگر باشد، CSS می تواند راهکاری ساده باشد. اما زمانی که لازم است داده انتخاب، مرتب، تغییر شکل یا به قالب دیگری تبدیل شود، استفاده از XSLT انتخاب مناسب تری است. در هر دو روش، صحت نشانی فایل و دسترسی مرورگر به آن را بررسی کنید.
قالب بندی و تبدیل فایل های XML با XSLT
🔄تبدیل ساختار XML
XSLT زبانی برای تبدیل و پردازش اسناد XML است. با استفاده از الگوها و دستورهای آن می توان اطلاعات مورد نیاز را از سند انتخاب کرد و خروجی دیگری ساخت؛ برای نمونه، تبدیل داده های XML به HTML برای نمایش در مرورگر. نتیجه تبدیل به الگوی XSLT و ابزار یا پردازشگری بستگی دارد که آن را اجرا می کند.
<?xml version="1.0" encoding="UTF-8"?>
<breakfast_menu>
<food>
<name>Belgian Waffles</name>
<price>$5.95</price>
<description>Belgian waffles with maple syrup</description>
<calories>650</calories>
</food>
<food>
<name>French Toast</name>
<price>$4.50</price>
<description>Slices made from sourdough bread</description>
<calories>600</calories>
</food>
</breakfast_menu>
🧾نمونه الگوی XSLT
نمونه ساده زیر هر عنصر food را پیدا می کند و نام، قیمت و توضیحات آن را در خروجی HTML قرار می دهد. دستورهای for-each و value-of برای پیمایش و خواندن مقدارها استفاده شده اند. در پروژه واقعی باید الگو را با ساختار سند و نسخه ابزار تبدیل هماهنگ کنید.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="breakfast_menu/food">
<div>
<strong><xsl:value-of select="name"/></strong>
<span> - <xsl:value-of select="price"/></span>
<p><xsl:value-of select="description"/></p>
</div>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
۵ نکته مهم برای نوشتن XML دقیق و قابل نگهداری
۱. پیش از نوشتن، ساختار داده را مشخص کنید
۱
پیش از ساخت تگ ها، مشخص کنید هر داده چه معنایی دارد و چه رابطه ای با داده های دیگر پیدا می کند. طراحی ساختار از ابتدا، از نام گذاری های متناقض و بازنویسی های پرهزینه جلوگیری می کند. برای سندهای مشترک، درباره نام عنصرها و ترتیب آن ها با همه استفاده کنندگان توافق کنید.
۲. نام های معنادار و یکدست انتخاب کنید
۲
نام دقیق، فهم سند را برای افراد و ابزارها ساده می کند. اگر برای جدا کردن واژه ها از زیرخط استفاده کرده اید، همان شیوه را در کل سند ادامه دهید. نام ها را نیز با حروف کوچک و بزرگ یکسان بنویسید؛ XML این تفاوت را نادیده نمی گیرد.
۳. ویژگی و المنت را بر اساس نقش داده انتخاب کنید
۳
ویژگی ها را برای جزئیات کوتاه و المنت ها را برای داده های اصلی یا پیچیده در نظر بگیرید. اگر احتمال دارد یک مقدار چند بار تکرار شود یا خودش زیرساختار داشته باشد، عنصر فرزند معمولا انتخاب روشن تری است. مهم تر از انتخاب یک قاعده همیشگی، یکدستی در کل پروژه است.
۴. سند را با ابزار اعتبارسنجی بررسی کنید
۴
بررسی دستی برای سندهای کوتاه مفید است، اما در داده های بزرگ احتمال خطا بالا می رود. از پردازشگر XML یا ویرایشگری استفاده کنید که خطاهای نحوی را مشخص می کند. اگر قرارداد DTD یا XSD دارید، اعتبارسنجی بر اساس همان قرارداد را هم انجام دهید.
۵. کدگذاری و نمایش را جداگانه کنترل کنید
۵
اگر حروف فارسی یا نویسه های ویژه به شکل نادرست نمایش داده می شوند، کدگذاری فایل و اعلان XML را بررسی کنید. همچنین به یاد داشته باشید که خوش ساخت بودن سند با ظاهر آن فرق دارد: CSS برای قالب بندی نمایش و XSLT برای تبدیل و تولید خروجی به کار می رود.
خطاهای رایج XML و روش پیدا کردن آن ها
🚨عیب یابی مرحله به مرحله
هنگام بروز خطا، ابتدا پیام پردازشگر و شماره خط را بخوانید. سپس تگ های باز و بسته، حروف بزرگ و کوچک، نقل قول ویژگی ها و عنصر ریشه را بررسی کنید. اگر خطای نحوی پیدا نشد، سراغ کدگذاری فایل و بعد مطابقت با DTD یا XSD بروید. این ترتیب کمک می کند به جای تغییرهای پراکنده، علت اصلی مشکل را جدا کنید.
| نشانه خطا |
علت احتمالی |
راه بررسی |
| خطای پایان عنصر |
تگ پایانی جا افتاده یا نام آن متفاوت است. |
تگ های آغاز و پایان را جفت به جفت مقایسه کنید. |
| خطای ساختار تو در تو |
ترتیب بسته شدن تگ ها نادرست است. |
عنصرهای داخلی را پیش از عنصر والد ببندید. |
| خطای مقدار ویژگی |
مقدار داخل کوتیشن نیست یا کوتیشن بسته نشده است. |
نقل قول آغاز و پایان را بررسی کنید. |
| نمایش نادرست نویسه ها |
کدگذاری فایل با اعلان آن همخوانی ندارد. |
کدگذاری ذخیره سازی و مقدار اعلان را یکسان کنید. |
| رد شدن سند در اعتبارسنجی |
ساختار با DTD یا XSD مطابقت ندارد. |
عنصرهای لازم، ترتیب و نوع داده را با تعریف تطبیق دهید. |
XML در کنار دیگر بخش های وب
🔗جایگاه XML در پروژه وب
در یک پروژه وب، XML ممکن است برای انتقال یا سازمان دهی داده به کار برود، اما به تنهایی جایگزین HTML، CSS یا پایگاه داده نیست. همچنین موضوعاتی مانند
سئو و
خرید بک لینک مباحث مستقلی هستند و با یادگیری XML به طور مستقیم جایگزین نمی شوند. شناخت ساختار داده می تواند به همکاری بهتر میان اجزای فنی کمک کند، اما هر ابزار باید در جای درست خود استفاده شود.
جمع بندی آموزش XML
⭐نکته پایانی
برای نوشتن یک سند XML قابل اعتماد، عنصر ریشه را مشخص کنید، تگ ها را درست و با رعایت بزرگی و کوچکی حروف ببندید و مقدار ویژگی ها را داخل کوتیشن بگذارید. نام های روشن انتخاب کنید و هر زمان ساختار مشخصی لازم است، سند را با DTD یا XML Schema اعتبارسنجی کنید. با تمرین روی نمونه های کوچک، اصول آموزش XML و کاربرد المنت ها، ویژگی ها، CSS و XSLT را بهتر درک خواهید کرد.
سوالات متداول آموزش XML
XML چیست و چه کاربردی دارد؟
XML یک قالب متنی برای توصیف، نگهداری و انتقال داده های ساختاریافته است. برنامه ها می توانند عناصر و رابطه های تعریف شده در سند را بخوانند و پردازش کنند.
تفاوت سند خوش ساخت و سند معتبر XML چیست؟
سند خوش ساخت قواعد نحوی پایه XML را رعایت می کند؛ مانند داشتن یک عنصر ریشه و بسته شدن درست تگ ها. سند معتبر علاوه بر این قواعد، با تعریف ساختاری مانند DTD یا XML Schema نیز مطابقت دارد.
چه زمانی از ویژگی و چه زمانی از المنت استفاده کنیم؟
ویژگی معمولا برای اطلاعات کوتاه و توصیفی مناسب است. برای داده های اصلی، چندمقداری یا داده هایی که به ساختار فرزند نیاز دارند، المنت انتخابی روشن تر و قابل گسترش تر است.
آیا می توان فایل XML را با CSS قالب بندی کرد؟
بله. با پیوند دادن فایل CSS به سند XML می توان نحوه نمایش عنصرها را در مرورگر قالب بندی کرد. CSS ظاهر را تغییر می دهد، اما وظیفه تبدیل ساختار XML به HTML را ندارد.
تفاوت CSS و XSLT در کار با XML چیست؟
CSS برای تعیین ظاهر و شیوه نمایش سند استفاده می شود. XSLT می تواند داده های XML را پردازش و به خروجی دیگری، مانند HTML، تبدیل کند؛ بنابراین انتخاب میان آن ها به هدف پروژه بستگی دارد.