كل المقالات

XML Entities: الهروب من الأحرف في مستندات XML

مثل HTML، تستخدم XML القوسين الزاويين والعلامة & لتحديد بداية الوسوم ونهايتها، لذلك لا يمكن أن تظهر هذه الرموز كما هي داخل النص — فالمستند يصبح غير صالح، والمحلّل يتوقف بخطأ بدلًا من تجاهل المشكلة كما تفعل المتصفحات مع HTML.

الرموز الخمسة الإلزامية

على عكس HTML الذي يعرّف مئات الرموز المسمّاة، تتطلب مواصفة XML خمسة فقط:

  • &lt; — بدلًا من <
  • &gt; — بدلًا من >
  • &amp; — بدلًا من &
  • &apos; — بدلًا من علامة الاقتباس المفردة '
  • &quot; — بدلًا من علامة الاقتباس المزدوجة "

علامات الاقتباس يجب ترميزها فقط داخل قيم الخصائص (attributes)، أما < و& فيجب ترميزهما في أي محتوى نصي.

أين يظهر هذا فعليًا

نظام الفوترة الإلكترونية السعودي (فاتورة/ZATCA) يعتمد على تنسيق XML قائم على UBL، وأي اسم شركة يحتوي على & بلا ترميز يجعل الفاتورة بأكملها غير صالحة. المشكلة نفسها تظهر في خلاصات RSS للمواقع الإخبارية — عنوان خبر واحد يحتوي على علامة & غير مرمّزة يكفي لتعطيل الخلاصة كاملة عند أي قارئ يحاول تحليلها.

لماذا XML أكثر صرامة من HTML

المتصفحات عادة تتسامح مع HTML غير الصحيح وتحاول عرض الصفحة رغم الأخطاء. محلّلات XML لا تفعل ذلك: علامة & أو قوس زاوي واحد غير مرمّز يجعل المستند بأكمله غير صالح، وتتوقف المعالجة بخطأ فورًا.

متى نحتاج إلى هذا

  • تجهيز نص من إدخال المستخدم قبل إدراجه في مستند XML (خلاصات، ملفات إعداد، رسائل SOAP).
  • تشخيص المشكلات: رؤية النص الأصلي المختفي خلف الرموز في XML مستلم.
  • تحرير ملفات XML يدويًا دون كسر بنية المستند.

بديل الرموز: قسم CDATA

عندما تحتوي كتلة نصية على رموز خاصة كثيرة — مثل جزء من HTML أو كود مضمّن داخل XML — يكون من الأسهل تغليفها بـ<![CDATA[...]]>، حيث لا يحتاج < و& إلى ترميز ويُعاملان كنص عادي. الاستثناء الوحيد هو التسلسل ]]> الذي يُغلق قسم CDATA، لذلك لا يمكن أن يظهر داخل محتوى القسم نفسه.

جرّب الأداة