تنسيق XML
حوّل كتلة XML متراصّة إلى شيء مقروء بالمسافات البادئة، أو صغّره من جديد. تبقى التعليقات وأقسام CDATA ونطاقات الأسماء سليمة. لا يُخزَّن أي شيء.
- لا يُخزَّن أبدًا
- لا طابور ولا انتظار
- دون تسجيل ودون علامة مائية
يظهر XML المنسَّق هنا.
كيف تعمل الأداة
الصق XML
أو أفلِت ملف .xml أو .svg أو .rss أو .xsd. لا يُخزَّن أبدًا.
اختر المسافة البادئة
مسافتان أو أربع أو علامات Tab، أو تصغير إلى سطر واحد.
انسخ أو نزّل
إذا كان XML معطوبًا، تحصل على السطر والعمود بدلًا من النتيجة.
لماذا تُعدّ إعادة المسافات البادئة في XML أخطر مما تبدو
المسافات في XML ذات دلالة افتراضيًا، وهذا بالضبط ما يوقع الناس في الخطأ. على عكس JSON حيث التنسيق لا يغيّر شيئًا، يُلزَم محلل XML بالإبلاغ عن المسافات وفواصل الأسطر بين العناصر على أنها محتوى نصي — والمخطط (schema)، إن وُجد، هو الذي يقرر أنه يمكن تجاهلها. لذا فإعادة المسافات البادئة تغيّر المستند فعلًا؛ ففي معظم ملفات الإعدادات والبيانات لا يهتم أحد بذلك، أما في المستندات ذات المحتوى المختلط — نص وعناصر جنبًا إلى جنب، كما في XHTML أو DocBook — فقد تغيّر ما يقوله المستند.
لذلك يترك التنسيق هنا ما يجب تركه كما هو. العنصر الذي يحمل xml:space="preserve" يحتفظ بمحتواه تمامًا كما كُتب، لأن هذه السمة وُجدت للتصريح بذلك تحديدًا. وتمرّ أقسام CDATA دون أي مساس؛ فهي موجودة لتحمل نصًا يجب ألا يُفسَّر، وإعادة التنسيق داخلها ستُتلفه. وتبقى مراجع الكيانات مراجعَ كما هي بدلًا من توسيعها إلى الأحرف التي تمثلها.
تُحفظ نطاقات الأسماء تمامًا كما كُتبت — البادئات والتعريفات والعناصر المرتبطة بها. يبدو هذا بديهيًا وليس كذلك: فأداة التنسيق التي توحّد البادئات، أو تنقل التعريفات إلى حيث تظن أنها تنتمي، تُنتج مستندًا مكافئًا من الناحية التقنية لكنه يفشل مع الأدوات التي تطابق البادئات حرفيًا. ويُحفظ ترتيب السمات أيضًا، رغم أن XML يعدّه بلا معنى، للسبب نفسه — لأن مقارنة الفروق (diff) مع النسخة السابقة أهم من الترتيب الشكلي.
ما يُفحص أثناء التنسيق هو سلامة البنية: كل وسم مُغلق، والتداخل صحيح، وعنصر جذر واحد، وأحرف مسموح بها، وعلامات & وأقواس زاوية مُهرَّبة كما ينبغي. هذا هو الأدنى بين معيارَي XML. فقد يكون المستند سليم البنية تمامًا ويظل غير صالح وفق DTD أو المخطط الذي يحكمه، وهذا ما لا يكشفه أي قدر من التنسيق.
عندما تحتاج إلى شيء آخر
يؤدي xmllint --format in.xml المهمة نفسها في سطر الأوامر، وهو مثبّت مسبقًا على معظم أنظمة Unix؛ ويمنحك xmlstarlet fo --indent-tab تحكمًا أكبر في المسافات البادئة نفسها. وكلاهما يتعامل مع ملفات أكبر بكثير مما تستطيع صفحة ويب الاحتفاظ به في الذاكرة.
حين يحتاج المستند إلى المقارنة أو التوقيع أو التخزين بصيغة قياسية، فالتنسيق هو العملية الخطأ تمامًا. Canonical XML — xmllint --c14n — يُنتج الصيغة الموحّدة الوحيدة التي يؤول إليها أي مستندين متكافئين، وهي ما تعتمد عليه التوقيعات الرقمية على XML. وتجميل مستند موقَّع يُبطل توقيعه، وهذه أغلى طريقة لتعلّم الدرس.
الأسئلة الشائعة
هل يُخزَّن XML الخاص بي في أي مكان؟
لا. لا يوجد أي اتصال بخادم ولا أي تسجيل، ولا يُخزَّن أي شيء. يمكنك قطع الاتصال بالإنترنت بعد تحميل الصفحة وستستمر في العمل. وهذا أهم هنا مما يبدو: فما يلصقه الناس في أداة تنسيق عبر الإنترنت هو استجابات API وملفات إعدادات وحمولات أخطاء، وهذه تحمل عادةً رموزًا مميزة (tokens) وسجلات عملاء وأسماء خوادم داخلية.
ما الذي يبقى بعد التنسيق؟
التعليقات وأقسام CDATA وتعليمات المعالجة وتعريف XML وجميع بادئات نطاقات الأسماء. ويبقى ترتيب السمات كما كُتب. والعنصر الذي لا يحتوي إلا على نص يبقى في سطر واحد، لأن تقسيم <title>Hello</title> على ثلاثة أسطر لا يجعله أجمل — وفي مستند ذي محتوى مختلط سيغيّر ما يقوله النص فعلًا.
هل ستغيّر المسافات البادئة معنى XML الخاص بي؟
في عنصر لا يحتوي إلا على عناصر أخرى، لا. لكن XML لا يملك قاعدة عامة تقول إن المسافات بلا دلالة — ففي المحتوى المختلط، حيث يجتمع النص والعناصر جنبًا إلى جنب، تصبح المسافات المضافة جزءًا من النص فعلًا. لهذا تُترك العناصر النصية فقط هنا في سطر واحد بدلًا من تقسيمها. وإذا كان مستندك يحتوي على محتوى مختلط حقيقي وتهمه المسافات، فالتصغير هو العملية الأكثر أمانًا.
هل يعمل مع HTML؟
فقط إذا كان HTML مكتوبًا بصيغة XML سليمة البنية — وهذا ما لا ينطبق على معظم HTML الحقيقي. فالوسوم غير المُغلقة مثل <br> و<img> و<li>، والسمات بلا علامات اقتباس، وعلامات & المنفردة كلها صحيحة في HTML وغير صالحة في XML. والمحلل هنا محلل XML صارم، لذا سيُبلغ عنها كأخطاء بدلًا من التخمين. أما XHTML وSVG فيُنسَّقان بشكل ممتاز.
وماذا عن SVG؟
نعم — SVG هو XML، وهذه طريقة جيدة لقراءة ملف SVG مصغَّر. تمرّ المسارات والتدرجات والأنماط المضمّنة دون تغيير؛ ولا يتحرك إلا المسافات بين العناصر.
هل هناك حد للحجم؟
الذاكرة المتاحة، لا حد نفرضه نحن. المستندات التي يبلغ حجمها بضعة ميغابايتات تُنسَّق فورًا؛ أما الكبيرة جدًا فيحدّها ما يمكن الاحتفاظ به دفعة واحدة، لا أي شيء من جهتنا.
معلومة مفيدة: التحقق من سلامة البنية فقط. يُفحص المستند للتأكد من توازن الوسوم وصحة التداخل وسلامة الأحرف، ثم تُعاد مسافاته البادئة — لكن لا يُجلب ملف DTD أو XSD ولا يُطبَّق، لذا قد يُنسَّق الملف بلا أي مشكلة ويظل غير صالح وفق مخططه. تُحفظ نطاقات الأسماء (namespaces) تمامًا كما كُتبت.
أضِف هذه الأداة إلى موقعك
مجانية لأي مدونة أو صفحة فصل دراسي أو مقالة مساعدة. الصق مقتطفًا واحدًا وسيتمكن زوارك من استخدامها مباشرةً على صفحتك.