مُنسِّق XML والمدقِّق

الصق XML، نسِّق بمسافات بادئة مناسبة أو تحقق من الصياغة. يتعامل مع الخصائص والمساحات. بدون رفع.

  1. الصق XML في منطقة النص اليمنى.
  2. انقر «تنسيق» للذهاب والعودة عبر fast-xml-parser وإنتاج XML بمسافات بادئة.
  3. انقر «تحقق» لفحص حسن التشكيل (well-formedness) دون تعديل المدخل.
  4. تشير الأخطاء إلى الموضع المخالف في المستند.
ماذا تفعل؟

يحلل XML بـ fast-xml-parser ويعيد إصداره بإزاحة متسقة. يُحفَظ ترتيب السمات داخل كل عنصر ويُحفَظ تداخل العناصر بالضبط. يبقى المحتوى المختلط (نص + عناصر فرعية) والنطاقات (prefix:tag) سليمة. المخرج XML حسن التشكيل — لكن «حسن التشكيل» ليس بمعنى «صالح» (الصلاحية تحتاج مخططًا أو DTD، وهذا غير مفحوص في الأداة).

مثال

مدخل XML غير مرتب:

<root version="1"><name>Ada</name><tags>math</tags><tags>logic</tags></root>

مخرج منسَّق:

<root version="1">
  <name>Ada</name>
  <tags>math</tags>
  <tags>logic</tags>
</root>

أخطاء XML الشائعة وكيفية إصلاحها

قواعد حسن تشكيل XML أصرم من HTML. تغطي الأنماط أدناه معظم حالات فشل المحلِّل.

  • وسم غير مغلق. `<a><b></a>` غير صالح — يجب إغلاق `<b>` (بـ `<b/>` أو `</b>` في مكان ما). لا يسمح XML بوسوم إغلاق اختيارية على غرار HTML.
  • عدم تطابق حالة الأحرف. XML حساس لحالة الأحرف — `<Foo></foo>` اسمان مختلفان. طابق الحالة بالضبط.
  • محارف خاصة دون تهريب. يجب تهريب `<` أو `>` أو `&` أو علامة الاقتباس داخل النص أو قيمة السمة: `&lt;` و `&gt;` و `&amp;` و `&quot;`. غلِّف البيانات التي تحوي هذه المحارف بـ CDATA: `<![CDATA[...]]>`.
  • جذور متعددة. يحتاج XML إلى عنصر جذر واحد بالضبط. `<a/><b/>` على المستوى الأعلى غير صالح — لُفّهما: `<root><a/><b/></root>`.
  • اسم عنصر غير صالح. لا يمكن أن تبدأ أسماء العناصر برقم، أو تحوي مسافات، أو تستخدم الأحرف المحجوزة (`< > & " \'`). الأسماء التي تبدأ بـ `xml` (بأي حالة أحرف) محجوزة في المواصفة.
  • علامات اقتباس غير متطابقة حول السمات. `<a name="value\'>` يخلط بين علامات الاقتباس المزدوجة والمفردة. اختر نمطًا واحدًا متسقًا لكل سمة. كلاهما XML صالح.
الأسئلة الشائعة

هل يغير التنسيق بياناتي؟

فقط المسافات بين العناصر. يُحفَظ ترتيب العناصر وترتيب السمات وقيم السمات والمحتوى النصي وتأطير CDATA. قد يتطبَّع الشكل الذاتي الإغلاق (`<x/>`) والشكل الصريح (`<x></x>`).

هل تُحفَظ تعليقات XML؟

يحذف fast-xml-parser التعليقات افتراضيًا. إن احتجت تنسيقًا يحفظ التعليقات استخدم أداة مختلفة (تحويل XSLT الهوياتي مثلًا، أو `xmllint --format`).

هل يتحقق هذا من المخطط؟

لا. يفحص هذا حسن التشكيل فقط — أن المستند يُحلَّل بوصفه XML صحيحًا نحويًا. التحقق من المخطط (XSD، DTD، RelaxNG) خطوة منفصلة تحتاج المخطط مدخلًا إضافيًا.

كيف تُعالَج النطاقات (namespaces)؟

تبقى بادئات النطاق جزءًا من اسم العنصر (`x:foo`). تُحفَظ إعلانات النطاق الافتراضية وارتباطات البادئات كسمات. لا يُجرى تعامل واعٍ بالنطاقات (حل عناوين URI).

هل يُرفَع XML الخاص بي؟

لا. كل شيء يعمل في متصفحك — يُحلَّل مدخلك ويُعاد تسلسله بـ JavaScript على هذه الصفحة ولا يُرسَل إلى أي خادم.

هل يمكنني تخصيص المسافات البادئة؟

مثبتة حاليًا على مسافتين لكل مستوى. للتخصيص شغّل fast-xml-parser من سطر الأوامر — نفس المكتبة — ومرّر `{ indentBy: " " }` أو أي سلسلة أخرى.