CodeGym /جاوا بلاگ /Random-UR /جاوا میں XML
John Squirrels
سطح
San Francisco

جاوا میں XML

گروپ میں شائع ہوا۔
ہائے! آج ہم XML کے نام سے ایک اور ڈیٹا فارمیٹ متعارف کرائیں گے۔ یہ ایک بہت اہم موضوع ہے۔ حقیقی جاوا ایپلی کیشنز پر کام کرتے وقت، آپ کو تقریباً یقینی طور پر XML سے متعلق کاموں کا سامنا کرنا پڑے گا۔ جاوا کی ترقی میں، یہ فارمیٹ تقریباً عالمگیر طور پر استعمال ہوتا ہے (ہم نیچے اس کی وجہ معلوم کریں گے)، اس لیے میں تجویز کرتا ہوں کہ آپ سطحی طور پر اس سبق کا جائزہ نہ لیں، بلکہ ہر چیز کی مکمل سمجھ حاصل کریں اور اضافی لٹریچر/لنک کا مطالعہ بھی کریں :) یہ یقینی طور پر وقت کا ضیاع نہیں ہوگا۔ تو، آئیے آسان چیزوں کے ساتھ شروع کریں: "کیا" اور "کیوں"!

جاوا XML کیا ہے؟

XML کا مطلب ایکسٹینسیبل مارک اپ لینگویج ہے۔ ہوسکتا ہے کہ آپ مارک اپ لینگویج سے پہلے ہی واقف ہوں — کیا آپ نے ایچ ٹی ایم ایل کے بارے میں سنا ہے، جو ویب صفحات بنانے کے لیے استعمال ہوتا ہے :) XML کیا ہے؟  - 1ایچ ٹی ایم ایل اور ایکس ایم ایل کی شکل بھی ایک جیسی ہوتی ہے:
ایچ ٹی ایم ایل 1
<h1>title</h1>
<p>paragraph</p>
<p>paragraph</p>
XML 1
<headline>title</headline>
<paragraph>paragraph<paragraph>
<paragraph>paragraph<paragraph>
ایچ ٹی ایم ایل 2
<h1>title</h1>
<p>paragraph</p>
<p>paragraph</p>
XML 2
<chief>title</chief>
<paragraph>paragraph<paragraph>
<paragraph>paragraph<paragraph>
دوسرے الفاظ میں، XML ڈیٹا کو بیان کرنے کے لیے ایک زبان ہے۔

آپ کو XML کی ضرورت کیوں ہے؟

XML اصل میں انٹرنیٹ کے ذریعے ڈیٹا سمیت زیادہ آسانی سے ذخیرہ کرنے اور بھیجنے کے لیے ایجاد کیا گیا تھا۔ اس کے کئی فوائد ہیں جو آپ کو اس تک پہنچنے میں مدد کرتے ہیں۔ سب سے پہلے، یہ ایک انسان اور کمپیوٹر دونوں کے ذریعہ پڑھنا آسان ہے۔ میرے خیال میں آپ آسانی سے سمجھ سکتے ہیں کہ یہ XML فائل کیا بیان کرتی ہے:
<?xml version="1.0" encoding="UTF-8"?>
<book>
   <title>Harry Potter and the Philosopher’s Stone</title>
   <author>J. K. Rowling</author>
   <year>1997</year>
</book>
کمپیوٹر بھی اس فارمیٹ کو آسانی سے سمجھ سکتا ہے۔ دوسرا، چونکہ ڈیٹا کو سادہ متن کے طور پر ذخیرہ کیا جاتا ہے، اس لیے جب ہم اسے ایک کمپیوٹر سے دوسرے کمپیوٹر میں منتقل کرتے ہیں تو مطابقت کے مسائل نہیں ہوں گے۔ یہ سمجھنا ضروری ہے کہ XML قابل عمل کوڈ نہیں ہے - یہ ڈیٹا کی وضاحت کی زبان ہے۔ XML کا استعمال کرتے ہوئے ڈیٹا کی وضاحت کرنے کے بعد، آپ کو کوڈ لکھنے کی ضرورت ہے (مثال کے طور پر، جاوا میں) جو اس ڈیٹا کو بھیج/ وصول/ پروسیس کر سکتا ہے۔

XML کی ساخت کیسے ہے؟

اہم جزو ٹیگز ہے: زاویہ بریکٹ میں یہ چیزیں ہیں:
<book>
</book>
افتتاحی ٹیگ اور اختتامی ٹیگ ہیں۔ اختتامی ٹیگ میں ایک اضافی علامت (" / ") ہے، جیسا کہ اوپر دی گئی مثال میں دیکھا جا سکتا ہے۔ ہر افتتاحی ٹیگ میں ایک اختتامی ٹیگ ہونا ضروری ہے۔ وہ دکھاتے ہیں کہ فائل میں ہر عنصر کی تفصیل کہاں سے شروع ہوتی ہے اور کہاں ختم ہوتی ہے۔ ٹیگز نیسٹ کیا جا سکتا ہے! ہماری کتاب کی مثال میں، <book> ٹیگ میں 3 نیسٹڈ ٹیگز ہیں: <title>، <author>، اور <year>۔ یہ نیسٹنگ کی ایک سطح تک محدود نہیں ہے: نیسٹڈ ٹیگز کے اپنے نیسٹڈ ٹیگ وغیرہ ہو سکتے ہیں۔ اس ڈھانچے کو ٹیگ ٹری کہا جاتا ہے۔ آئیے اس درخت کو ایک نمونہ XML فائل کا استعمال کرتے ہوئے دیکھیں جو کار ڈیلرشپ کی وضاحت کرتی ہے:
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
   <car category="truck">
       <model lang="en">Scania R 770</model>
       <year>2005</year>
       <price currency="US dollar">200000.00</price>
   </car>
   <car category="sedan">
       <title lang="en">Ford Focus</title>
       <year>2012</year>
       <price currency="US dollar">20000.00</price>
   </car>
   <car category="sport">
       <title lang="en">Ferrari 360 Spider</title>
       <year>2018</year>
       <price currency="US dollar">150000.00</price>
   </car>
</carstore>
یہاں ہمارے پاس ایک اعلی درجے کا ٹیگ ہے: <carstore>۔ اسے جڑ عنصر بھی کہا جاتا ہے۔ <carstore> میں ایک چائلڈ ٹیگ ہے: <car>۔ <car>، بدلے میں، 3 چائلڈ ٹیگز بھی ہیں: <model>، <year> اور <price>۔ ہر ٹیگ میں اوصاف ہوسکتے ہیں، جن میں اضافی اہم معلومات ہوتی ہیں۔ ہماری مثال میں، <model> ٹیگ میں "lang" وصف ہے، جو ماڈل کے نام کو ریکارڈ کرنے کے لیے استعمال ہونے والی زبان کی نشاندہی کرتا ہے:
<model lang="en">Scania R 770</model>
یہاں ہم اشارہ کرتے ہیں کہ نام انگریزی میں لکھا ہوا ہے۔ ہمارے <price> ٹیگ میں "کرنسی" کا وصف ہے۔
<price currency="US dollar">150000.00</price>
یہاں ہم اشارہ کرتے ہیں کہ کار کی قیمت امریکی ڈالر میں دی گئی ہے۔ اس طرح، XML میں ایک "خود بیان کرنے والا" نحو ہے۔ آپ ڈیٹا کو بیان کرنے کے لیے درکار کوئی بھی معلومات شامل کر سکتے ہیں۔ مزید برآں، فائل کے اوپری حصے میں، آپ XML ورژن اور ڈیٹا لکھنے کے لیے استعمال ہونے والی انکوڈنگ کی نشاندہی کرنے والی لائن شامل کر سکتے ہیں۔ اسے "پرولوگ" کہا جاتا ہے اور یہ اس طرح لگتا ہے:
<?xml version="1.0" encoding="UTF-8"?>
ہم XML ورژن 1.0 اور UTF-8 انکوڈنگ استعمال کر رہے ہیں۔ یہ ضروری نہیں ہے، لیکن اگر، مثال کے طور پر، آپ کی فائل مختلف زبانوں میں متن استعمال کرتی ہے تو یہ کام آ سکتا ہے۔ ہم نے ذکر کیا کہ XML کا مطلب ہے "ایکسٹینسیبل مارک اپ لینگویج"، لیکن "ایکسٹینسیبل" کا کیا مطلب ہے؟ اس کا مطلب ہے کہ یہ آپ کی اشیاء اور فائلوں کے نئے ورژن بنانے کے لیے بہترین ہے۔ مثال کے طور پر، فرض کریں کہ ہم اپنی کار ڈیلرشپ پر موٹر سائیکلوں کی فروخت بھی شروع کرنا چاہتے ہیں! اس نے کہا، ہمیں ہمارے پروگرام کی ضرورت ہے کہ وہ <carstore> کے دونوں ورژن کو سپورٹ کرے: پرانا (بغیر موٹر سائیکل) اور نیا۔ ہمارا پرانا ورژن یہ ہے:
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
   <car category="truck">
       <model lang="en">Scania R 770</model>
       <year>2005</year>
       <price currency="US dollar">200000.00</price>
   </car>
   <car category="sedan">
       <title lang="en">Ford Focus</title>
       <year>2012</year>
       <price currency="US dollar">20000.00</price>
   </car>
   <car category="sport">
       <title lang="en">Ferrari 360 Spider</title>
       <year>2018</year>
       <price currency="US dollar">150000.00</price>
   </car>
</carstore>
اور یہاں نیا توسیع شدہ ہے:
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
   <car category="truck">
       <model lang="en">Scania R 770</model>
       <year>2005</year>
       <price currency="US dollar">200000.00</price>
   </car>
   <car category="sedan">
       <title lang="en">Ford Focus</title>
       <year>2012</year>
       <price currency="US dollar">20000.00</price>
   </car>
   <car category="sport">
       <title lang="en">Ferrari 360 Spider</title>
       <year>2018</year>
       <price currency="US dollar">150000.00</price>
   </car>
   <motorcycle>
       <title lang="en">Yamaha YZF-R6</title>
       <year>2018</year>
       <price currency="Russian Ruble">1000000.00</price>
       <owner>Vasia</owner>
   </motorcycle>
   <motorcycle>
       <title lang="en">Harley Davidson Sportster 1200</title>
       <year>2011</year>
       <price currency="Euro">15000.00</price>
       <owner>Petia</owner>
   </motorcycle>
</carstore>
ہماری فائل میں موٹرسائیکلوں کی تفصیل شامل کرنا کتنا آسان اور آسان ہے :) مزید یہ کہ ہمیں موٹرسائیکلوں کے لیے بالکل وہی چائلڈ ٹیگ لگانے کی ضرورت نہیں ہے جیسے کاروں کے لیے۔ براہ کرم نوٹ کریں کہ موٹر سائیکلوں میں، کاروں کے برعکس، <مالک> عنصر ہوتا ہے۔ یہ کمپیوٹر (یا انسان) کو ڈیٹا پڑھنے سے نہیں روکتا۔

XML اور HTML کے درمیان فرق

ہم پہلے ہی کہہ چکے ہیں کہ XML اور HTML ظاہری شکل میں بہت ملتے جلتے ہیں۔ اس سے یہ جاننا بہت ضروری ہے کہ وہ کس طرح مختلف ہیں۔ سب سے پہلے، وہ مختلف مقاصد کے لئے استعمال ہوتے ہیں. HTML ویب صفحات کو مارک اپ کرنے کے لیے ہے۔ مثال کے طور پر، ویب سائٹ بناتے وقت، آپ HTML کا استعمال کر کے یہ بتا سکتے ہیں: "مینیو اوپری دائیں کونے میں ہونا چاہیے۔ اس میں فلاں فلاں بٹن ہونا چاہیے"۔ دوسرے الفاظ میں، HTML کا کام ڈیٹا کو ظاہر کرنا ہے۔ XML معلومات کو محفوظ کرنے اور بھیجنے کے لیے ہے جو انسانوں اور کمپیوٹرز کے لیے آسان ہے۔ اس فارمیٹ میں اس بات کا کوئی اشارہ نہیں ہے کہ اس ڈیٹا کو کس طرح ظاہر کیا جانا چاہئے: یہ اس پروگرام کے کوڈ پر منحصر ہے جو اسے پڑھتا ہے۔ دوسرا، ایک بڑا تکنیکی فرق ہے۔ HTML ٹیگز پہلے سے طے شدہ ہیں۔ دوسرے لفظوں میں، ایک HTML ہیڈر بنانے میں (مثال کے طور پر صفحہ کے اوپری حصے میں ایک بڑا کیپشن) صرف <h1></h1> ٹیگز استعمال کرتا ہے (<h2></h2> اور <h3></h3> استعمال کیا جاتا ہے۔ چھوٹے ہیڈر کے لیے)۔ آپ دوسرے ٹیگز کا استعمال کرتے ہوئے HTML ہیڈرز نہیں بنا سکتے۔ XML پہلے سے طے شدہ ٹیگز استعمال نہیں کرتا ہے۔ آپ ٹیگز کو کوئی بھی نام دے سکتے ہیں جو آپ چاہتے ہیں: <header>, <title>, <idontknow2121>۔

تنازعات کے حل

آزادی جو XML فراہم کرتی ہے وہ کچھ مسائل کا باعث بن سکتی ہے۔ مثال کے طور پر، ایک اور ایک ہی ہستی (مثال کے طور پر، ایک کار) ایک پروگرام کے ذریعے مختلف مقاصد کے لیے استعمال کی جا سکتی ہے۔ مثال کے طور پر، ہمارے پاس ایک XML فائل ہے جو کاروں کی وضاحت کرتی ہے۔ تاہم، ہمارے پروگرامرز آپس میں پہلے سے کسی معاہدے پر نہیں پہنچے۔ اور اب، اصلی کاروں کے ڈیٹا کے علاوہ، ہم اپنے XML میں کھلونا کاروں کے بارے میں ڈیٹا تلاش کر سکتے ہیں! مزید یہ کہ ان میں ایک جیسی صفات ہیں۔ ہم کہتے ہیں کہ ہمارا پروگرام ایسی XML فائل میں پڑھتا ہے۔ ہم ایک حقیقی کار کو کھلونا کار سے کیسے ممتاز کرتے ہیں؟
<?xml version="1.0" encoding="UTF-8"?>
<carstore>
   <car category="truck">
       <model lang="en">Scania R 770</model>
       <year>2005</year>
       <price currency="US dollar">200000.00</price>
   </car>
   <car category="sedan">
       <title lang="en">Ford Focus</title>
       <year>2012</year>
       <price currency="US dollar">100.00</price>
   </car>
</carstore>
یہاں سابقے اور نام کی جگہ ہماری مدد کریں گے۔ ہمارے پروگرام میں کھلونا کاروں کو اصلی کاروں سے ممتاز کرنے کے لیے (اور درحقیقت ان کے اصلی ہم منصبوں سے کھلونے)، ہم دو سابقے متعارف کراتے ہیں: "حقیقی" اور "کھلونا"۔
<real:car category="truck">
   <model lang="en">Scania R 770</model>
   <year>2005</year>
   <price currency="US dollar">200000.00</price>
</real:car>
<toy:car category="sedan">
   <title lang="en">Ford Focus</title>
   <year>2012</year>
   <price currency="US dollar">100.00</price>
</toy:car>
اب ہمارا پروگرام مختلف اداروں کے درمیان فرق کرنے کے قابل ہو جائے گا! ہر وہ چیز جس میں کھلونا کا سابقہ ​​ہے اسے کھلونوں کے طور پر سمجھا جائے گا :) تاہم، ہم نے ابھی کام نہیں کیا ہے۔ سابقے استعمال کرنے کے لیے، ہمیں ان میں سے ہر ایک کو نام کی جگہ کے طور پر رجسٹر کرنے کی ضرورت ہے۔ دراصل، "رجسٹر" ایک مضبوط لفظ ہے :) ہمیں صرف ان میں سے ہر ایک کے لیے ایک منفرد نام کے ساتھ آنے کی ضرورت ہے۔ یہ کلاسز کی طرح ہے: ایک کلاس کا ایک مختصر نام ( Cat ) اور ایک مکمل اہل نام ہے جس میں تمام پیکیجز شامل ہیں ( zoo.animals.Cat )۔ URI عام طور پر ایک منفرد نام کی جگہ بنانے کے لیے استعمال ہوتا ہے۔ کبھی کبھی یہ انٹرنیٹ ایڈریس کا استعمال کرتے ہوئے کیا جاتا ہے، جہاں اس نام کی جگہ کے افعال بیان کیے جاتے ہیں۔ لیکن اس کا درست انٹرنیٹ ایڈریس ہونا ضروری نہیں ہے۔ اکثر، پراجیکٹس میں URI جیسی تاریں استعمال ہوتی ہیں جو نام کی جگہ کے درجہ بندی کو ٹریک کرنے میں مدد کرتی ہیں۔ یہاں ایک مثال ہے:
<?xml version="1.0" encoding="UTF-8"?>
<carstore xmlns:real="http://testproject.developersgroup1.companyname/department2/namespaces/real"
         xmlns:toy="http://testproject.developersgroup1.companyname/department2/namespaces/toy">
<real:car category="truck">
   <model lang="en">Scania R 770</model>
   <year>2005</year>
   <price currency="US dollar">200000.00</price>
</real:car>
<toy:car category="sedan">
   <title lang="en">Ford Focus</title>
   <year>2012</year>
   <price currency="US dollar">100.00</price>
</toy:car>
</carstore>
بلاشبہ، "http://testproject.developersgroup1.companyname/department2/namespaces/real" پر کوئی ویب سائٹ نہیں ہے لیکن اس سٹرنگ میں مفید معلومات موجود ہیں: ڈیپارٹمنٹ 2 میں گروپ 1 کے ڈویلپرز "حقیقی" نام کی جگہ بنانے کے ذمہ دار ہیں۔ . اگر ہمیں نئے نام متعارف کرانے یا ممکنہ تنازعات پر بحث کرنے کی ضرورت ہے، تو ہمیں معلوم ہو جائے گا کہ کہاں جانا ہے۔ کبھی کبھی ڈویلپر ایک حقیقی وضاحتی ویب ایڈریس کو ایک منفرد نام کی جگہ کے نام کے طور پر استعمال کرتے ہیں۔ مثال کے طور پر، یہ ایک بڑی کمپنی کا معاملہ ہو سکتا ہے جس کے پروجیکٹ کو دنیا بھر کے لاکھوں لوگ استعمال کریں گے۔ لیکن یہ یقینی طور پر ہمیشہ نہیں کیا جاتا ہے: اسٹیک اوور فلو اس مسئلے پر بحث کرتا ہے۔ عام طور پر، URIs کو نام کی جگہ کے نام کے طور پر استعمال کرنے کی کوئی سخت ضرورت نہیں ہے: آپ آسانی سے بے ترتیب تاریں بھی استعمال کر سکتے ہیں۔ یہ آپشن بھی کام کرے گا:
xmlns:real="nvjneasiognipni4435t9i4gpojrmeg"
اس نے کہا، URI استعمال کرنے کے کئی فوائد ہیں۔ آپ یہاں اس کے بارے میں مزید پڑھ سکتے ہیں ۔

بنیادی XML معیارات

XML معیارات ایکسٹینشنز کا ایک سیٹ ہیں جو XML فائلوں میں اضافی فعالیت کا اضافہ کرتے ہیں۔ XML کے بہت سارے معیارات ہیں، لیکن ہم صرف سب سے اہم کو دیکھیں گے اور معلوم کریں گے کہ وہ AJAX کو ممکن بناتے ہیں، جو کہ XML کے مشہور ترین معیارات میں سے ایک ہے۔ یہ آپ کو ویب صفحہ کے مواد کو دوبارہ لوڈ کیے بغیر تبدیل کرنے دیتا ہے! XSLT آپ کو XML ٹیکسٹ کو دوسرے فارمیٹس میں تبدیل کرنے دیتا ہے۔ مثال کے طور پر، آپ XML کو HTML میں تبدیل کرنے کے لیے XSLT استعمال کر سکتے ہیں! جیسا کہ ہم نے کہا، XML کا مقصد ڈیٹا کو بیان کرنا ہے، اسے ظاہر کرنا نہیں۔ لیکن XSLT کے ساتھ ہم اس حد کو حاصل کر سکتے ہیں! XML DOM آپ کو XML فائل سے انفرادی عناصر کو بازیافت، ترمیم، شامل یا حذف کرنے دیتا ہے۔ یہاں ایک چھوٹی سی مثال ہے کہ یہ کیسے کام کرتا ہے۔ ہمارے پاس book.xml فائل ہے:
<bookstore>
   <book category="cooking">
       <title lang="en">Everyday Italian</title>
       <author>Giada De Laurentiis</author>
       <year>2005</year>
       <price>30.00</price>
   </book>
   <book category="children">
       <title lang="en">Harry Potter</title>
       <author>J. K. Rowling</author>
       <year>2005</year>
       <price>29.99</price>
   </book>
</bookstore>
اس میں دو کتابیں ہیں۔ کتابوں میں ایک <title> عنصر ہوتا ہے۔ یہاں ہم اپنی XML فائل سے کتاب کے تمام عنوانات حاصل کرنے کے لیے جاوا اسکرپٹ کا استعمال کر سکتے ہیں اور کنسول پر پہلا پرنٹ کر سکتے ہیں:
<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
  myFunction(this);
  }
};
xhttp.open("GET", "books.xml", true);
xhttp.send();

function myFunction(xml) {
    var xmlDoc = xml.responseXML;
  document.getElementById("demo").innerHTML =
  xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
}
</script>

</body>
</html>
DTD ("دستاویز کی قسم کی تعریف") آپ کو XML فائل میں کسی ہستی کے لیے اجازت شدہ عناصر کی فہرست کی وضاحت کرنے دیتا ہے۔ مثال کے طور پر، فرض کریں کہ ہم کتابوں کی دکان کی ویب سائٹ پر کام کر رہے ہیں اور تمام ترقیاتی ٹیمیں اس بات پر متفق ہیں کہ XML فائلوں میں کتاب کے عناصر کے لیے صرف عنوان، مصنف، اور سال کے اوصاف کا تعین کیا جانا چاہیے۔ لیکن ہم اپنے آپ کو لاپرواہی سے کیسے بچائیں؟ بہت آسان!
<?xml version="1.0"?>
<!DOCTYPE book [
       <!ELEMENT book (title,author,year)>
       <!ELEMENT title (#PCDATA)>
       <!ELEMENT author (#PCDATA)>
       <!ELEMENT year (#PCDATA)>
       ]>

<book>
   <title>The Lord of The Rings</title>
   <author>John R.R. Tolkien</author>
   <year>1954</year>
</book>
یہاں ہم نے <book> کے لیے درست صفات کی ایک فہرست بیان کی ہے۔ وہاں ایک نیا عنصر شامل کرنے کی کوشش کریں اور آپ کو فوری طور پر ایک غلطی ہو جائے گی!
<book>
   <title>The Lord of The Rings</title>
   <author>John R.R. Tolkien</author>
   <year>1954</year>
   <mainhero>Frodo Baggins</mainhero>
</book>
غلطی! "یہاں عنصر مین ہیرو کی اجازت نہیں ہے" بہت سے دوسرے XML معیارات ہیں۔ آپ ان میں سے ہر ایک سے اپنے آپ کو واقف کر سکتے ہیں اور کوڈ کی گہرائی میں کھودنے کی کوشش کر سکتے ہیں۔ بہر حال، اگر آپ کو XML کے بارے میں معلومات کی ضرورت ہے، تو آپ وہاں تقریباً ہر چیز تلاش کر سکتے ہیں :) اور اس کے ساتھ ہی ہمارا سبق ختم ہو جاتا ہے۔ یہ کاموں پر واپس جانے کا وقت ہے! :) اگلے وقت تک!
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION