XML (eXtensible Markup Language) هو تنسيق نصي لتخزين ونقل البيانات المنظمة باستخدام علامات مخصصة. يُستخدم على نطاق واسع في ملفات التكوين وخدمات الويب وتطوير Android. وفقاً لاتحاد W3C، تظل مواصفات XML معياراً ثابتاً منذ عام 2008. يوفر XML هيكل بيانات صارماً مع إمكانية التحقق من الصحة عبر المخططات.
النقاط الرئيسية
XML هي لغة ترميز تحدد مجموعة من القواعد لتشفير المستندات بتنسيق يمكن قراءته بواسطة الإنسان والآلة على حد سواء. على عكس HTML، ليس لدى XML مجموعة ثابتة من العلامات — حيث ينشئ المطورون علاماتهم الخاصة التي تتوافق مع هيكل البيانات.
تم تطوير XML بواسطة اتحاد W3C في عام 1996 كمجموعة فرعية مبسطة من SGML (Standard Generalized Markup Language). الهدف الرئيسي لـ XML هو فصل المحتوى عن عرض البيانات. على عكس HTML الذي يصف المظهر، تصف XML هيكل البيانات ومعناها.
الخاصية الأساسية لـ XML هي قابلية التوسع. إذا ظهرت أنواع جديدة من البيانات في مشروع، يضيف المطور ببساطة علامات جديدة دون تغيير الهيكل الحالي. وهذا يجعل XML مناسباً لتخزين البيانات طويل الأمد والتبادل بين الأنظمة المختلفة.
تركيب XML أكثر صرامة من HTML. يجب أن تحتوي كل علامة فتح على علامة إغلاق مقابلة، وتُكتب السمات بين علامتي اقتباس، وأسماء العلامات حساسة لحالة الأحرف. يجب أن يحتوي المستند على عنصر جذر واحد بالضبط يحتوي على جميع العناصر الأخرى.
يمكن أن يبدأ مستند 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 جيد التكوين يجب أن يتبع القواعد الأساسية: علامات الإغلاق إلزامية لكل علامة فتح، التداخل صارم (تداخل العلامات ممنوع)، قيم السمات دائماً بين علامتي اقتباس. انتهاك أي قاعدة يجعل المستند غير صالح وغير قابل للتحليل.
مساحات أسماء XML تحل مشكلة تضارب الأسماء عند استخدام عناصر من قواميس مختلفة في مستند واحد. تُعرّف مساحة الاسم بواسطة السمة xmlns مع URI يحدد القاموس بشكل فريد.
XML Schema (XSD) هي لغة لوصف هيكل مستند XML. يحدد XSD العناصر والسمات المسموح بها وأنواع بياناتها والإلزام والقيود. تسمح المخططات بالتحقق التلقائي من صحة المستند قبل المعالجة، وهو أمر بالغ الأهمية لحلول التكامل.
| التقنية | الغرض | مثال |
|---|---|---|
| DTD | التحقق الأساسي من الهيكل | قديم، إمكانيات أقل |
| XSD | التحقق الصارم والتنميط | معيار الصناعة |
| RELAX NG | بديل مضغوط لـ XSD | أبسط وأكثر قابلية للقراءة من XSD |
| XSLT | تحويل XML إلى صيغ أخرى | XML إلى HTML, PDF, CSV |
| XPath | التنقل واختيار العقد | استعلامات لشجرة XML |
XML يلعب دوراً رئيسياً في تطوير Android. يستخدم نظام Android XML لوصف واجهة المستخدم (ملفات التخطيط)، تكوين التطبيق (AndroidManifest.xml)، الموارد (strings, colors, themes) والرسومات المتجهة (VectorDrawable). في iOS، يُستخدم XML بشكل أقل، خاصة في Storyboard وملفات التكوين plist.
في Android، يتم وصف كل شاشة تطبيق بملف XML مع تسلسل هرمي لمكونات View: ConstraintLayout, LinearLayout, TextView, Button. يفصل هذا النهج منطق التطبيق عن العرض، مما يبسط الصيانة والتكيف مع الشاشات المختلفة. تسمح ملفات XML الخاصة بالموارد بتوطين التطبيق دون تغيير الكود.
يحتوي ملف التخطيط النموذجي على ConstraintLayout جذر مع عناصر متداخلة، لكل منها سمات الموقع والحجم والنمط. يقوم Android بتجميع XML إلى تنسيق ثنائي AXML لتحسين الأداء عند بدء التشغيل.
<?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 على المنصات المحمولة يتم بطريقتين رئيسيتين: DOM (Document Object Model) يحمل المستند بأكمله في الذاكرة كشجرة، SAX (Simple API for XML) يقرأ المستند بشكل تسلسلي، مستدعياً معالجات الأحداث. DOM مناسب للمستندات الصغيرة، SAX للملفات الكبيرة ذات قيود الذاكرة.
Android يحتوي على محللات مدمجة: XmlPullParser للتحليل التسلسلي و DocumentBuilder لنهج DOM. iOS يستخدم Foundation XMLParser مع بروتوكول المفوض. لتسلسل الكائنات إلى XML، غالباً ما تُستخدم مكتبات مثل SimpleXML في PHP أو Jackson XML في Java.
يوصي Android باستخدام XmlPullParser لتحليل XML بكفاءة. يعمل المحلل في وضع يعتمد على الأحداث: يستدعي next() للانتقال إلى العنصر التالي ويعيد نوع الحدث (START_TAG, TEXT, END_TAG). يتيح ذلك معالجة مستندات من أي حجم باستهلاك ضئيل للذاكرة.
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 توضح دوره في المشاريع الحقيقية. بالإضافة إلى تطوير Android، يُستخدم XML لتكوين البناء ووصف البيانات وسير العمل الوثائقي. فهم تركيب XML ضروري للعمل مع Maven وخدمات SOAP والعديد من أدوات المؤسسات.
ملف pom.xml يصف مشروع Maven: التبعيات والإضافات والإصدارات وملامح البناء. يتم تحديد كل تبعية بعلامات groupId و artifactId و version. يقوم Maven تلقائياً بتنزيل المكتبات المحددة من المستودعات.
<?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 يعتمد على متطلبات المشروع المحددة. JSON مناسب لـ REST API والتطبيقات المحمولة والتكوينات حيث تكون الاكتناز والسرعة مهمة. XML لا غنى عنه في أنظمة المؤسسات وسير العمل الوثائقي وتطوير Android حيث تكون هناك حاجة للتحقق الصارم ومساحات الأسماء وتحويل البيانات.
XML يتفوق في سيناريوهات تخزين المستندات طويلة الأمد. بفضل مخططات XSD، يمكن التحقق من مستندات XML تلقائياً، وهو أمر بالغ الأهمية للأنظمة الطبية والمالية والقانونية. تتيح تحويلات XSLT إنشاء HTML و PDF وصيغ أخرى من مصدر XML واحد، مما يبسط سير العمل الوثائقي.
JSON، بدوره، أصبح المعيار لواجهات برمجة تطبيقات الويب والتطبيقات المحمولة. سهولة التكامل مع JavaScript والحجم الأصغر وسرعة التحليل العالية تجعل JSON الخيار المفضل لـ REST API ورسائل WebSocket وملفات التكوين. بالنسبة لمعظم المشاريع الجديدة، يُوصى بالبدء بـ JSON والانتقال إلى XML فقط عندما تظهر متطلبات محددة.
الأسئلة الشائعة
XML يصف بنية ومحتوى البيانات، HTML يصف المظهر والعرض. XML يسمح بإنشاء أي علامات، HTML لديه مجموعة ثابتة. XML أكثر صرامة في التركيب: يجب إغلاق جميع العلامات، HTML يسمح بعلامات غير مغلقة. XML للبيانات، HTML للعرض.
XSD (XML Schema Definition) هي لغة لوصف هيكل مستند XML. يحدد XSD العناصر والسمات المسموح بها وأنواع بياناتها والإلزام والقيود. يسمح المخطط بالتحقق التلقائي من مستند XML قبل معالجته، مما يمنع الأخطاء ويضمن سلامة البيانات.
على Android، استخدم XmlPullParser لتحليل XML — محلل تسلسلي مدمج. يعمل بطريقة تعتمد على الأحداث: يعالج START_TAG و TEXT و END_TAG في حلقة، ويدير الذاكرة بكفاءة. للمستندات الصغيرة، محلل DOM عبر DocumentBuilderFactory مناسب، حيث يحمل المستند بأكمله في الذاكرة كشجرة عقد.
DTD (Document Type Definition) هي آلية تحقق قديمة بإمكانيات محدودة: لا تدعم أنواع البيانات (كل شيء سلاسل) ولا مساحات الأسماء. XSD هو بديل حديث مع دعم لأنواع البيانات (أرقام، تواريخ، تعدادات) ومساحات الأسماء وقابلية التوسع. XSD نفسه هو مستند XML، بينما DTD يستخدم تركيبته الخاصة.
مساحات الأسماء تمنع تضارب الأسماء عندما يجمع مستند XML عناصر من مصادر مختلفة. على سبيل المثال، في تخطيط Android، يمكن أن تأتي علامة View من android.view ومن مكتبة. السمة xmlns مع URI تحدد بشكل فريد مصدر كل عنصر وسمة.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا