XML: چیست، ساختار سند و اصل کار

نویسنده: IT Sectr منتشر شده: 2026-03-08 زمان مطالعه: 8 دقیقه

XML (eXtensible Markup Language) یک فرمت متنی برای ذخیره و انتقال داده‌های ساختاریافته با استفاده از برچسب‌های سفارشی است. این فرمت به طور گسترده در فایل‌های پیکربندی، خدمات وب و توسعه Android استفاده می‌شود. به گفته کنسرسیوم W3C، مشخصات XML از سال 2008 یک استاندارد پایدار باقی مانده است. XML ساختار داده‌ای دقیقی با قابلیت اعتبارسنجی از طریق طرح‌ها فراهم می‌کند.

نکات اصلی

  • XML — یک زبان نشانه‌گذاری توسعه‌پذیر با برچسب‌های سفارشی برای داده‌های ساختاریافته
  • ساختار دقیق — برچسب‌های بسته‌شونده اجباری، عنصر ریشه و اعتبارسنجی از طریق XSD
  • فضاهای نام — مکانیزمی برای جلوگیری از تداخل نام‌ها در یک سند
  • XSLT — تبدیل XML به فرمت‌های دیگر: HTML، PDF، CSV
  • توسعه Android — XML برای طرح‌بندی‌ها، مانیفست و منابع استفاده می‌شود

XML چیست؟

XML یک زبان نشانه‌گذاری است که مجموعه‌ای از قوانین برای رمزگذاری اسناد در قالبی قابل خواندن برای انسان و ماشین تعریف می‌کند. برخلاف HTML، XML مجموعه ثابتی از برچسب‌ها ندارد — توسعه‌دهنده برچسب‌های خود را متناسب با ساختار داده ایجاد می‌کند.

XML در سال 1996 توسط کنسرسیوم W3C به عنوان زیرمجموعه ساده‌شده SGML (Standard Generalized Markup Language) توسعه یافت. هدف اصلی XML جداسازی محتوا و نمایش داده‌ها است. برخلاف HTML که ظاهر را توصیف می‌کند، XML ساختار و معنی داده‌ها را توصیف می‌کند.

ویژگی کلیدی XML توسعه‌پذیری آن است. اگر نوع داده جدیدی در پروژه ظاهر شود، توسعه‌دهنده بدون تغییر ساختار موجود، به سادگی برچسب‌های جدیدی اضافه می‌کند. این امر XML را برای ذخیره‌سازی طولانی‌مدت داده‌ها و تبادل بین سیستم‌های مختلف مناسب می‌سازد.

حوزه‌های اصلی کاربرد XML

  • توسعه Android — فایل‌های طرح‌بندی، مانیفست، منابع (strings، colors، themes)
  • پیکربندی — Maven POM، Ant build، پیکربندی وب (web.xml)
  • خدمات وب — SOAP، XML-RPC، فیدهای RSS/Atom
  • گردش اسناد — SVG، DocBook، Office Open XML
  • پایگاه‌های داده — SQL Server (XML type)، Oracle، PostgreSQL

نحو و ساختار XML

نحو XML سخت‌گیرانه‌تر از HTML است. هر برچسب باز باید یک برچسب بسته متناظر داشته باشد، ویژگی‌ها در گیومه قرار می‌گیرند، نام برچسب‌ها به حروف بزرگ و کوچک حساس هستند. سند باید دقیقاً یک عنصر ریشه داشته باشد که شامل تمام عناصر دیگر است.

سند XML می‌تواند با اعلامیه‌ای شروع شود که نسخه XML و رمزگذاری را مشخص می‌کند. سپس عنصر ریشه می‌آید که در داخل آن می‌توانند عناصر تودرتو، ویژگی‌ها، محتوای متنی و نظرات وجود داشته باشد. عناصر خالی به صورت نوشته می‌شوند.

xml
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
    <book id="bk001">
        <title>XML Developer Guide</title>
        <author>John Smith</author>
        <price currency="USD">29.99</price>
        <published>2026-03-15</published>
    </book>
    <book id="bk002">
        <title>Advanced XML Schemas</title>
        <author>Jane Doe</author>
        <price currency="USD">49.99</price>
        </book>
</catalog>

قوانین XML خوش‌فرم

Well-formed XML باید قوانین اساسی را رعایت کند: برچسب‌های بسته برای هر برچسب باز الزامی است، تودرتو بودن دقیق است (تداخل برچسب‌ها ممنوع است)، مقادیر ویژگی‌ها همیشه در گیومه هستند. نقض هر قانونی سند را نامعتبر کرده و قابل تجزیه نیست.

  1. یک عنصر ریشه — سند دقیقاً یک ریشه دارد
  2. تودرتو بودن صحیح — برچسب‌ها نباید تداخل داشته باشند
  3. برچسب‌های بسته — برای همه عناصر به جز خودبسته‌شونده الزامی است
  4. حساسیت به حروف بزرگ و کوچک — <Book> و <book> عناصر متفاوتی هستند
  5. گیومه در ویژگی‌ها — مقادیر ویژگی‌ها در گیومه دوتایی یا تکی

فضاهای نام و طرح‌های XML

فضاهای نام XML (XML Namespaces) مشکل تداخل نام‌ها را زمانی که در یک سند از عناصر فرهنگ‌های مختلف استفاده می‌شود حل می‌کنند. فضای نام با ویژگی xmlns با یک URI که فرهنگ را به طور یکتا شناسایی می‌کند تعیین می‌شود.

XML Schema (XSD) زبانی برای توصیف ساختار سند XML است. XSD مشخص می‌کند که کدام عناصر و ویژگی‌ها مجاز هستند، انواع داده‌های آنها، الزامی بودن و محدودیت‌ها. طرح‌ها امکان اعتبارسنجی خودکار سند را قبل از پردازش فراهم می‌کنند که برای راه‌حل‌های یکپارچه‌سازی حیاتی است.

فناوری هدف مثال
DTD اعتبارسنجی پایه ساختار قدیمی، امکانات کمتر
XSD تایپ‌سازی دقیق و اعتبارسنجی استاندارد صنعتی
RELAX NG جایگزین فشرده برای XSD ساده‌تر و خواناتر از XSD
XSLT تبدیل XML به فرمت‌های دیگر XML به HTML، PDF، CSV
XPath پیمایش و انتخاب گره‌ها پرس‌وجوهای درخت XML

XML در توسعه موبایل

XML نقش کلیدی در توسعه Android ایفا می‌کند. سیستم عامل Android از XML برای توصیف رابط کاربری (فایل‌های طرح‌بندی)، پیکربندی برنامه (AndroidManifest.xml)، منابع (رشته‌ها، رنگ‌ها، تم‌ها) و گرافیک برداری (VectorDrawable) استفاده می‌کند. در iOS، XML کمتر استفاده می‌شود، عمدتاً برای Storyboard و فایل‌های پیکربندی plist.

در Android، هر صفحه از برنامه با یک فایل XML با سلسله‌مراتب مؤلفه‌های View توصیف می‌شود: ConstraintLayout، LinearLayout، TextView، Button. این رویکرد منطق برنامه را از نمایش جدا می‌کند و نگهداری و تطبیق با صفحه‌های مختلف را ساده می‌کند. فایل‌های XML منابع امکان بومی‌سازی برنامه را بدون تغییر کد فراهم می‌کنند.

مثال طرح‌بندی Android

یک فایل طرح‌بندی معمولی شامل ConstraintLayout ریشه با عناصر تودرتویی است که هر کدام دارای ویژگی‌های مکان، اندازه و سبک هستند. Android XML را برای بهینه‌سازی عملکرد در هنگام راه‌اندازی به فرمت باینری AXML کامپایل می‌کند.

xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/welcome"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/click"
        app:layout_constraintTop_toBottomOf="@id/title"
        app:layout_constraintStart_toStartOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

تجزیه XML در پلتفرم‌های موبایل

تجزیه XML در پلتفرم‌های موبایل با دو رویکرد اصلی انجام می‌شود: DOM (Document Object Model) کل سند را به عنوان درخت در حافظه بارگذاری می‌کند، SAX (Simple API for XML) سند را به صورت جریانی می‌خواند و کنترل‌کننده‌های رویداد را فراخوانی می‌کند. DOM برای اسناد کوچک مناسب است، SAX — برای فایل‌های بزرگ با محدودیت حافظه.

در Android تجزیه‌کننده‌های داخلی در دسترس هستند: XmlPullParser برای تجزیه جریانی و DocumentBuilder برای رویکرد DOM. در iOS از Foundation XMLParser با پروتکل نمایندگی استفاده می‌شود. برای سریال‌سازی اشیاء به XML اغلب از کتابخانه‌هایی مانند SimpleXML در PHP یا Jackson XML در Java استفاده می‌شود.

تجزیه XML در Android (Kotlin)

در Android برای تجزیه مؤثر XML توصیه می‌شود از XmlPullParser استفاده کنید. تجزیه‌کننده در حالت رویدادی کار می‌کند: برای حرکت به عنصر بعدی next() را فراخوانی می‌کند و نوع رویداد (START_TAG، TEXT، END_TAG) را بازمی‌گرداند. این امکان پردازش اسناد با هر اندازه‌ای را با حداقل مصرف حافظه فراهم می‌کند.

kotlin
import org.xmlpull.v1.XmlPullParser
import org.xmlpull.v1.XmlPullParserException
import java.io.IOException

fun parseCatalog(parser: XmlPullParser): List<Book> {
    val books = mutableListOf<Book>()
    var eventType = parser.getEventType()
    var currentBook: Book? = null

    while (eventType != XmlPullParser.END_DOCUMENT) {
        when (eventType) {
            XmlPullParser.START_TAG -> {
                when (parser.getName()) {
                    "book" -> currentBook = Book()
                    "title" -> parser.next()
                    "author" -> parser.next()
                }
            }
            XmlPullParser.TEXT -> {
                currentBook?.apply {
                    title = parser.getText() ?: ""
                }
            }
            XmlPullParser.END_TAG -> {
                if (parser.getName() == "book") {
                    currentBook?.let { books.add(it) }
                }
            }
        }
        eventType = parser.next()
    }
    return books
}

نمونه‌های XML در برنامه‌ها

نمونه‌های استفاده XML نقش آن را در پروژه‌های واقعی نشان می‌دهد. علاوه بر توسعه Android، XML برای پیکربندی کامپایل، توصیف داده‌ها و گردش اسناد استفاده می‌شود. آشنایی با نحو XML برای کار با Maven، خدمات SOAP و بسیاری از ابزارهای سازمانی ضروری است.

پیکربندی Maven (POM)

فایل pom.xml پروژه Maven را توصیف می‌کند: وابستگی‌ها، افزونه‌ها، نسخه‌ها و پروفایل‌های کامپایل. هر وابستگی با برچسب‌های groupId، artifactId و version مشخص می‌شود. Maven به طور خودکار کتابخانه‌های مشخص شده را از مخازن بارگیری می‌کند.

xml
<?xml version="1.0" encoding="UTF-8"?>
<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
    http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0.0</version>
    <dependencies>
        <dependency>
            <groupId>com.squareup.retrofit2</groupId>
            <artifactId>retrofit</artifactId>
            <version>2.9.0</version>
        </dependency>
    </dependencies>
</project>

XML در مقابل JSON: چه زمانی کدام را انتخاب کنیم

انتخاب بین XML و JSON به نیازهای خاص پروژه بستگی دارد. JSON برای REST API، برنامه‌های موبایل و پیکربندی‌هایی که فشردگی و سرعت مهم هستند مناسب است. XML در سیستم‌های سازمانی، گردش اسناد و توسعه Android که نیاز به اعتبارسنجی دقیق، فضاهای نام و تبدیل داده دارند غیرقابل جایگزین است.

XML در سناریوهای ذخیره‌سازی طولانی‌مدت اسناد برتری دارد. به لطف طرح‌های XSD، اسناد XML را می‌توان به طور خودکار اعتبارسنجی کرد که برای سیستم‌های پزشکی، مالی و حقوقی حیاتی است. تبدیل‌های XSLT امکان تولید HTML، PDF و سایر فرمت‌ها را از یک منبع XML فراهم می‌کند که گردش اسناد را ساده می‌کند.

از سوی دیگر، JSON به استانداردی برای APIهای وب و برنامه‌های موبایل تبدیل شده است. سادگی یکپارچه‌سازی با JavaScript، اندازه کوچکتر و سرعت بالای تجزیه، JSON را به انتخاب ارجح برای REST API، پیام‌های WebSocket و فایل‌های پیکربندی تبدیل می‌کند. برای بیشتر پروژه‌های جدید توصیه می‌شود با JSON شروع کنید و تنها در صورت ظهور نیازهای خاص به XML منتقل شوید.

سوالات متداول

XML چه تفاوتی با HTML دارد؟

XML ساختار و محتوای داده‌ها را توصیف می‌کند، HTML — ظاهر و نمایش را. XML امکان ایجاد هر برچسبی را فراهم می‌کند، HTML مجموعه ثابتی دارد. XML در نحو سخت‌گیرانه‌تر است: همه برچسب‌ها باید بسته شوند، HTML برچسب‌های باز را مجاز می‌داند. XML — برای داده‌ها، HTML — برای نمایش.

XSD چیست و چه کاربردی دارد؟

XSD (XML Schema Definition) زبانی برای توصیف ساختار سند XML است. XSD مشخص می‌کند که کدام عناصر و ویژگی‌ها مجاز هستند، انواع داده‌ها، الزامی بودن و محدودیت‌های آنها. طرح امکان اعتبارسنجی خودکار سند XML را قبل از پردازش فراهم می‌کند و از خطاها جلوگیری کرده و یکپارچگی داده‌ها را تضمین می‌کند.

چگونه XML را در Android تجزیه کنیم؟

در Android برای تجزیه XML از XmlPullParser — تجزیه‌کننده جریانی داخلی استفاده کنید. این تجزیه‌کننده در حالت رویدادی کار می‌کند: START_TAG، TEXT و END_TAG را در یک حلقه پردازش می‌کند و حافظه را به طور مؤثر مدیریت می‌کند. برای اسناد کوچک، تجزیه‌کننده DOM از طریق DocumentBuilderFactory که کل سند را به عنوان درخت گره در حافظه بارگذاری می‌کند مناسب است.

تفاوت بین DTD و XSD چیست؟

DTD (Document Type Definition) یک مکانیزم اعتبارسنجی قدیمی با قابلیت‌های محدود است: از انواع داده (همه چیز رشته است) و فضاهای نام پشتیبانی نمی‌کند. XSD جایگزین مدرنی با پشتیبانی از انواع داده (اعداد، تاریخ‌ها، شمارش‌ها)، فضاهای نام و توسعه‌پذیری است. XSD خود یک سند XML است، DTD از نحو خاص خود استفاده می‌کند.

چرا فضاهای نام در XML مورد نیاز هستند؟

فضاهای نام از تداخل نام‌ها جلوگیری می‌کنند زمانی که یک سند XML عناصری از منابع مختلف را ترکیب می‌کند. به عنوان مثال، در طرح‌بندی Android، برچسب View می‌تواند هم از android.view و هم از یک کتابخانه باشد. ویژگی xmlns با URI منبع هر عنصر و ویژگی را به طور یکتا شناسایی می‌کند.

خلاصه

  • XML — زبان نشانه‌گذاری توسعه‌پذیر با برچسب‌های سفارشی برای داده‌های ساختاریافته
  • نحو دقیق — برچسب‌های بسته اجباری، عنصر ریشه، حساسیت به حروف بزرگ و کوچک
  • فضاهای نام و طرح‌های XSD اعتبارسنجی را تضمین کرده و از تداخل نام‌ها جلوگیری می‌کنند
  • Android از XML برای رابط‌ها، منابع و پیکربندی برنامه استفاده می‌کند
  • تجزیه از طریق XmlPullParser (جریانی) یا DOM (در حافظه) انجام می‌شود
  • XSLT امکان تبدیل XML به HTML، PDF و سایر فرمت‌ها را فراهم می‌کند
  • محبوبیت کمتر در REST API نسبت به JSON، اما XML در Enterprise و Android غیرقابل جایگزین است

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید