تقنية

⁦CDATA⁩ في ⁦XML⁩: لماذا تبقى ⁦&⁩ نصًا بدل علامة واحدة؟

نص a محرف واحد؛ نص b خمسة محارف.
النص الناتج من تجربتنا.

الموضع مهم.

الخلاصة السريعة

لأن CDATA لا يفسر & مرجعًا؛ تبقى المحارف الخمسة نفسها.

  • داخل المقطع، المرجع يبدو نصًا فقط.
  • خارجه، الكيان المعرّف مسبقًا يُفسر.
  • قارن النص الناتج، لا شكل المصدر.
  • المقاطع لا تتداخل.

الموضع يغير القراءة

توضح مواصفة XML أن نهاية CDATA وحدها تُعرف ترميزًا داخل المقطع. لذلك يمكن كتابة & و< حرفيًا، ولا تستعمل &amp; للهروب منهما هناك.

تجربة عنصرين

<r>
  <a>&amp;</a>
  <b><![CDATA[&amp;]]></b>
</r>

حللنا المثال بقارئي ElementTree وlxml. نص a علامة & واحدة، ونص b هو &amp; بطول خمسة محارف. تطابقت النتيجتان.

حدود المقطع

ينتهي المقطع عند ]]>. ولا يجوز تداخل مقاطع CDATA. اختبار XML، لا عرض HTML أو ضمان لسلامة تطبيق.

المصادر ومتابعة القراءة

  1. W3C — XML 1.0: 2.7 و4.6 (يفتح في نافذة جديدة)w3.org

أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.