اپنا XML چیک کریں
میل نہ کھانے والے ٹیگز، غیر متعین انٹیٹیز، ٹوٹے ہوئے نیم اسپیسز — براؤزر کے اپنے XML پارسر سے ڈھونڈے گئے اور بالکل درست جگہ کے ساتھ۔ کچھ بھی محفوظ نہیں کیا جاتا۔
- کبھی محفوظ نہیں کی جاتی
- نہ قطار، نہ انتظار
- نہ سائن اپ، نہ واٹر مارک
XML پیسٹ کریں، ٹائپ کرتے ہی اس کی جانچ ہوتی ہے۔
یہ کیسے کام کرتا ہے
اپنا XML پیسٹ کریں
یا فائل ڈراپ کریں۔ کچھ بھی کہیں نہیں بھیجا جاتا۔
نتیجہ پڑھیں
درست ساخت، اندر موجود چیزوں کے خلاصے کے ساتھ۔ یا پہلی خرابی کی بالکل درست لائن اور کالم۔
درست کریں اور دوبارہ چیک کریں
وہیں ایڈٹ کریں؛ ٹائپ کرتے ہی جواب اپ ڈیٹ ہو جاتا ہے۔
دو الگ معیار، اور یہ ان میں سے کون سا ہے
XML درستی کے دو درجے متعین کرتا ہے اور انہیں اکثر آپس میں ملا دیا جاتا ہے۔ درست ساخت (well-formed) کا مطلب ہے کہ دستاویز XML کے اپنے سنٹیکس کی پابندی کرتی ہے: ایک روٹ ایلیمنٹ، ہر ٹیگ بند، درست نیسٹنگ، جائز حروف، ایمپرسینڈ اور اینگل بریکٹس درست طریقے سے ایسکیپ، ایٹریبیوٹ ویلیوز کوٹس میں، اور ایک ایلیمنٹ میں ایٹریبیوٹس کے نام منفرد۔ ویلڈ (valid) کا مطلب اس سے بڑھ کر ہے — کہ دستاویز کسی خاص اسکیما سے بھی میل کھاتی ہے، یعنی صحیح ایلیمنٹس صحیح ترتیب میں صحیح قسم کی ویلیوز کے ساتھ۔ یہ صفحہ پہلی چیز چیک کرتا ہے۔ ہر XML پارسر اس میں ناکام دستاویز کو رد کر دیتا ہے، اس لیے یہی جانچ طے کرتی ہے کہ فائل پڑھی بھی جا سکتی ہے یا نہیں۔
خرابیاں متوقع ہوتی ہیں۔ بغیر ایسکیپ کیا ہوا & سب سے عام ہے، اور بہت بڑے فرق سے — یہ انٹیٹی ریفرنس شروع کرتا ہے، اس لیے کسی ایلیمنٹ میں سیدھا پیسٹ کیا گیا کوئری اسٹرنگ والا URL دستاویز توڑ دیتا ہے۔ ٹیکسٹ میں اکیلا < بھی یہی کرتا ہے۔ پھر میل نہ کھانے والے یا بند نہ کیے گئے ٹیگز، غلط ترتیب میں بند کیے گئے ایلیمنٹس، دو روٹ ایلیمنٹس، اور کوئی بھٹکا ہوا کنٹرول کریکٹر جس کی XML بالکل اجازت نہیں دیتا، حالانکہ وہ فائل میں نظر ہی نہیں آتا۔
کوئی DTD یا اسکیما جان بوجھ کر کبھی نہیں لائی جاتی، اور یہ ایک سیکیورٹی خصوصیت ہے، کوئی کمی نہیں۔ XML دستاویز کسی بیرونی انٹیٹی کا نام لے سکتی ہے، اور جو پارسر اسے حل کرتا ہے وہ جا کر وہ چیز لے آتا ہے جس کی طرف وہ اشارہ کرتی ہے — ڈسک پر کوئی فائل، یا اندرونی نیٹ ورک کا کوئی ایڈریس۔ یہی XML External Entity کمزوری ہے، جو سب سے زیادہ استعمال ہونے والی بگز کی اقسام میں سے ہے، اور اس کا واحد مکمل بچاؤ یہ ہے کہ انہیں حل ہی نہ کیا جائے۔ اس لیے یہاں کوئی چیز کسی طرف رابطہ نہیں کرتی، اور اس کی قیمت یہ ہے کہ اسکیما کے مقابلے میں ویلیڈیشن اس صفحے کے دائرے سے باہر ہے۔
آپ کو وہ درست لائن اور کالم ملتا ہے جہاں پارسنگ رکی۔ ہر پارسر کی طرح، یہ وہ جگہ ہے جہاں دستاویز کا مطلب بننا بند ہوا، ضروری نہیں کہ غلطی وہیں ہو: بند نہ کیا گیا ٹیگ عموماً اس کے بعد آنے والے غیر متوقع بند ہونے والے ٹیگ پر رپورٹ ہوتا ہے، کبھی کبھی سینکڑوں لائنیں بعد۔ بتائی گئی جگہ وہ ہے جہاں سے اوپر کی طرف دیکھنا شروع کریں، وہ نہیں جہاں ایڈٹ کرنا ہے۔
جب آپ کو کچھ اور چاہیے
اسکیما کے مقابلے میں ویلیڈیشن کے لیے xmllint معیاری ٹول ہے: XSD کے لیے xmllint --noout --schema schema.xsd file.xml، RELAX NG کے لیے --relaxng، اور DTD کے لیے --noout --valid۔ یہ پہلی خرابی پر رکنے کے بجائے ہر خلاف ورزی رپورٹ کرتا ہے، اور جب دستاویز محض ٹوٹی ہوئی نہیں بلکہ واقعی غلط ہو تو آپ کو یہی چاہیے۔
ناقابلِ اعتماد ان پٹ والے کسی بھی کام میں ویلیڈیٹر سے زیادہ پارسر کی کنفیگریشن اہم ہے۔ آپ جو بھی زبان استعمال کر رہے ہیں اس میں بیرونی انٹیٹی ریزولوشن اور DTD پروسیسنگ واضح طور پر بند کریں — Python میں defusedxml، PHP میں LIBXML_NONET، Java میں secure processing — کیونکہ کئی مقبول پارسرز اب بھی ڈیفالٹ طور پر انٹیٹیز حل کرتے ہیں، اور کمزوری ڈیفالٹ ہی میں ہوتی ہے۔
اکثر پوچھے جانے والے سوالات
کیا میرا XML کہیں محفوظ کیا جاتا ہے؟
نہیں۔ نہ کوئی سرور کال ہے نہ لاگنگ، اور کچھ بھی محفوظ نہیں کیا جاتا۔ صفحہ لوڈ ہونے کے بعد آپ انٹرنیٹ بند کر سکتے ہیں اور یہ کام کرتا رہتا ہے۔ یہاں یہ بات جتنی لگتی ہے اس سے زیادہ اہم ہے: لوگ آن لائن فارمیٹر میں API ریسپانسز، کنفیگ فائلیں اور ایرر پے لوڈز پیسٹ کرتے ہیں، اور ان میں اکثر ٹوکنز، کسٹمرز کے ریکارڈز اور اندرونی ہوسٹ نیمز ہوتے ہیں۔
“درست ساخت (well-formed)” کا کیا مطلب ہے؟
یہ کہ دستاویز XML کے اپنے اصولوں کی پابندی کرتی ہے: ہر ٹیگ بند، ٹیگز صحیح ترتیب میں نیسٹ، بالکل ایک روٹ ایلیمنٹ، ایٹریبیوٹس کوٹس میں، اور ہر & اور < یا تو ایسکیپ کیا گیا ہو یا کسی درست انٹیٹی کا حصہ ہو۔ XML کے بارے میں پوچھے جا سکنے والے دو سوالوں میں سے یہ پہلا ہے۔ دوسرا — کہ دستاویز کسی خاص اسکیما سے میل کھاتی ہے یا نہیں — الگ سوال ہے، اور یہ صفحہ اس کا جواب نہیں دیتا۔
کیا یہ DTD یا XSD اسکیما کے مقابلے میں ویلیڈیٹ کرتا ہے؟
نہیں۔ یہ چیک کرتا ہے کہ دستاویز درست ساخت والا XML ہے، اور زیادہ تر لوگ اصل میں اسی خرابی کو دیکھ رہے ہوتے ہیں۔ اسکیما ویلیڈیشن کے لیے آپ کی اسکیما فائل اور ایک ویلیڈیٹنگ پارسر چاہیے، اور کوئی براؤزر ایسا پارسر ساتھ نہیں دیتا؛ یہاں اس کا دعویٰ کرنے کا مطلب یا تو آپ کی دستاویز سرور کو بھیجنا ہوتا یا خاموشی سے چیک نہ کرنا۔ یہ فرق جاننے کے لائق ہے: کوئی دستاویز مکمل طور پر درست ساخت کی ہو کر بھی اپنی اسکیما کے لحاظ سے غلط ہو سکتی ہے۔
XML کی سب سے عام خرابیاں کون سی ہیں؟
عموماً اکیلا ایمپرسینڈ — & کو & لکھنا ضروری ہے، URL کے اندر بھی، اس لیے کسی ایلیمنٹ میں سیدھا پیسٹ کیا گیا کوئری اسٹرنگ دستاویز توڑ دیتا ہے۔ اس کے بعد: غلط ترتیب میں بند کیا گیا ٹیگ، دو روٹ ایلیمنٹس، جیسی غیر متعین انٹیٹی (جو HTML میں متعین ہے اور XML میں نہیں)، اور بغیر ڈیکلیئر کیے استعمال ہونے والا نیم اسپیس پری فکس۔ ہر ایک اپنے نام اور جگہ کے ساتھ رپورٹ ہوتی ہے۔
کیا HTML درست XML ہے؟
عموماً نہیں، اور یہ غلطی نہیں بلکہ معمول کی بات ہے۔ HTML میں <br> اور <li> جیسے بغیر بند کیے ٹیگز، بغیر کوٹس کے ایٹریبیوٹس اور اکیلے ایمپرسینڈ جائز ہیں؛ XML میں ان میں سے کوئی بھی جائز نہیں۔ اگر آپ کو ایسا HTML چاہیے جو درست XML بھی ہو تو وہ XHTML ہے، اور اس میں ہر ٹیگ بند کرنا ضروری ہے۔
کیا سائز کی کوئی حد ہے؟
دستیاب میموری، نہ کہ ہماری طرف سے لگائی گئی کوئی حد۔ چند میگا بائٹس کی دستاویزات فوراً فارمیٹ ہو جاتی ہیں؛ بہت بڑی دستاویزات کی حد یہ ہے کہ ایک وقت میں کتنا رکھا جا سکتا ہے، ہماری طرف کی کوئی چیز نہیں۔
جاننا مفید ہے: درست ساخت (well-formedness) کی جانچ، اسکیما ویلیڈیشن نہیں۔ ٹیگز کا توازن، درست نیسٹنگ اور جائز حروف چیک کیے جاتے ہیں اور آپ کو پہلی خرابی کی بالکل درست لائن اور کالم ملتا ہے۔ DTD یا XSD کے مقابلے میں ویلیڈیشن کے لیے اسے لانا پڑتا، جو ایک نیٹ ورک ریکوئسٹ ہے اور یہ صفحہ جان بوجھ کر کبھی نہیں کرتا۔
یہ ٹول اپنی ویب سائٹ پر لگائیں
کسی بھی بلاگ، کلاس پیج یا ہیلپ آرٹیکل کے لیے مفت۔ ایک اسنیپٹ پیسٹ کریں اور آپ کے وزیٹرز اسے سیدھا آپ کے صفحے پر استعمال کر سکیں گے۔