XML تقريبن هميشه غلط استعمال ڪيو ويو آهي

XML تقريبن هميشه غلط استعمال ڪيو ويو آهي
XML ٻولي 1996 ۾ ايجاد ڪئي وئي. جلد ئي اهو ظاهر نه ٿيو هو ته ان جي درخواست جي امڪانن کي اڳ ۾ ئي غلط سمجھڻ شروع ڪيو ويو هو، ۽ انهن مقصدن لاء جيڪي هن کي ترتيب ڏيڻ جي ڪوشش ڪري رهيا هئا، اهو بهترين انتخاب نه هو.

اهو چوڻ ۾ ڪو مبالغ نه آهي ته XML اسڪيمن جي وڏي اڪثريت مون ڏٺي آهي XML جا نامناسب يا غلط استعمال. ان کان علاوه، XML جي هن استعمال هڪ بنيادي غلط فهمي جو مظاهرو ڪيو جيڪو XML بابت هو.

XML هڪ مارڪ اپ ٻولي آهي. هي ڊيٽا فارميٽ نه آهي. اڪثر XML اسڪيمن واضح طور تي هن فرق کي نظر انداز ڪري ڇڏيو آهي، ايڪس ايم ايل کي ڊيٽا جي فارميٽ سان پريشان ڪري ٿو، جيڪو آخرڪار XML چونڊڻ ۾ غلطي جو نتيجو آهي ڇو ته اهو ڊيٽا فارميٽ آهي جيڪو اصل ۾ گهربل آهي.

تمام گهڻي تفصيل ۾ وڃڻ کان سواءِ، XML ڍانچي ۽ ميٽا ڊيٽا سان متن جي بلاڪن کي تشريح ڪرڻ لاءِ بھترين موزون آھي. جيڪڏهن توهان جو بنيادي مقصد ٽيڪسٽ جي بلاڪ سان ڪم ڪرڻ نه آهي، XML چونڊڻ ممڪن ناهي ته صحيح ثابت ٿئي.

هن نقطي نظر کان، هتي چيڪ ڪرڻ لاء هڪ سادي طريقو آهي ته ڪيئن چڱي طرح XML اسڪيما ٺاهيو ويو آهي. اچو ته مثال طور وٺون ھڪڙي دستاويز کي مطلوب اسڪيما ۾ ۽ ان مان سڀئي ٽيگ ۽ خاصيتون ختم ڪريو. جيڪڏهن رهجي وئي آهي ته سمجهه ۾ نه ايندي آهي (يا جيڪڏهن اتي هڪ خالي لڪير ڇڏي ويو آهي)، ته پوء يا ته توهان جو اسڪيما صحيح طرح ٺهيل نه آهي يا توهان کي صرف XML استعمال نه ڪرڻ گهرجي.

هيٺ آئون ڪجهه عام مثال ڏيندس غلط ٺهيل سرڪٽس جا.

<roоt>
  <item name="name" value="John" />
  <item name="city" value="London" />
</roоt>

هتي اسان ڏسون ٿا هڪ بي بنياد ۽ عجيب جو هڪ مثال (جيتوڻيڪ تمام عام) XML ۾ هڪ سادي اهم-قدر ڊڪشنري کي ظاهر ڪرڻ جي ڪوشش. جيڪڏهن توهان سڀئي ٽيگ ۽ خاصيتون هٽائي ڇڏيو، توهان کي خالي قطار سان ڇڏي ويندي. لازمي طور تي، هي دستاويز آهي، ڪابه پرواهه ناهي ته اهو ڪيئن بيوقوف ٿي سگهي ٿو، هڪ خالي لڪير جو هڪ لفظي تشريح.

<root name="John" city="London" />

معاملن کي وڌيڪ خراب ڪرڻ لاءِ، اسان وٽ هتي صرف هڪ خالي اسٽرنگ جي هڪ لفظي تشريح نه آهي جيئن هڪ ڊڪشنري کي ظاهر ڪرڻ جو هڪ غير معمولي طريقو آهي - هن ڀيري ”لغت“ سڌو سنئون انڪوڊ ٿيل آهي روٽ عنصر جي خاصيتن جي طور تي. هي هڪ عنصر تي منسوب نالن جي ڏنل سيٽ کي اڻ ڄاڻايل ۽ متحرڪ بڻائي ٿو. ان کان علاوه، اهو ڏيکاري ٿو ته سڀئي ليکڪ حقيقت ۾ ظاهر ڪرڻ چاهيندا هئا هڪ سادي اهم-قدر نحو، پر ان جي بدران هن XML لاڳو ڪرڻ لاء بلڪل عجيب فيصلو ڪيو، هڪ واحد خالي عنصر جي استعمال کي مجبور ڪيو صرف هڪ اڳوڻو نحو استعمال ڪرڻ لاء. ۽ مون کي اهڙيون اسڪيمون اڪثر اينديون آهن.

<roоt>
  <item key="name">John</item>
  <item key="city">London</item>
</roоt>

اھو ڪجھھ بھتر آھي، پر ھاڻي ڪجھھ سببن لاءِ ڪنجيون ميٽاداٽا آھن ۽ قدر نه آھن. لغات تي هڪ تمام عجيب نظر. جيڪڏهن توهان سڀئي ٽيگ ۽ خاصيتون هٽائي ڇڏيو، اڌ معلومات گم ٿي ويندي.

XML ۾ هڪ صحيح لغت جو اظهار هن طرح نظر ايندو:

<roоt>
  <item>
    <key>Name</key>
    <value>John</value>
  </item>
  <item>
    <key>City</key>
    <value>London</value>
  </item>
</roоt>

پر جيڪڏهن ماڻهن اهو عجيب فيصلو ڪيو آهي ته XML کي ڊيٽا فارميٽ طور استعمال ڪيو وڃي ۽ پوءِ ان کي استعمال ڪرڻ لاءِ هڪ لفظ ترتيب ڏيو، پوءِ انهن کي اهو سمجهڻ گهرجي ته اهي جيڪي ڪري رهيا آهن اهو نامناسب آهي ۽ نه آسان. اهو پڻ عام آهي ڊزائنر لاءِ غلطيءَ سان چونڊڻ لاءِ XML انهن جي ايپليڪيشن ٺاهڻ لاءِ. پر ان کان به وڌيڪ، اهي مٿي بيان ڪيل فارمن مان هڪ ۾ XML کي بي معنيٰ طور تي استعمال ڪرڻ سان معاملو خراب ڪن ٿا، حقيقت کي نظر انداز ڪري ٿو ته XML صرف هن لاء مناسب ناهي.

بدترين XML اسڪيما؟ رستي جي ذريعي، انعام لاء بدترين XML اسڪيما جيڪو مون ڏٺو آهي، Polycom IP ٽيليفوني فونز لاءِ پاڻمرادو ترتيب ڏيڻ واري فائيل فارميٽ حاصل ڪري ٿي. اهڙين فائلن کي TFTP ذريعي ايڪس ايم ايل درخواست فائلن کي ڊائون لوڊ ڪرڻ جي ضرورت آهي، جنهن... عام طور تي، هتي هڪ اهڙي فائل مان هڪ اقتباس آهي:

<softkey
        softkey.feature.directories="0"
        softkey.feature.buddies="0"
        softkey.feature.forward="0"
        softkey.feature.meetnow="0"
        softkey.feature.redial="1"
        softkey.feature.search="1"

        softkey.1.enable="1"
        softkey.1.use.idle="1"
        softkey.1.label="Foo"
        softkey.1.insert="1"
        softkey.1.action="..."

        softkey.2.enable="1"
        softkey.2.use.idle="1"
        softkey.2.label="Bar"
        softkey.2.insert="2"
        softkey.2.action="..." />

هي ڪنهن جي خراب مذاق ناهي. ۽ هي منهنجي ايجاد نه آهي:

  • عناصر صرف صفتن کي ڳنڍڻ لاءِ اڳياڙيءَ جي طور تي استعمال ڪيا ويندا آهن، جن کي پاڻ ۾ درجابندي جا نالا آهن.
  • جيڪڏهن توهان هڪ خاص قسم جي رڪارڊ جي ڪيترن ئي مثالن کي قيمتون تفويض ڪرڻ چاهيو ٿا، توهان کي اهو ڪرڻ لاءِ خاصيت جا نالا استعمال ڪرڻ گهرجن. جنهن ۾ انڊيڪس آهن.
  • ان کان علاوه، شروع ٿيندڙ خاصيتون softkey.، عناصر تي رکيل هجڻ ضروري آهي <softkey/>سان شروع ٿيندڙ خاصيتون feature.، عناصر تي رکيل هجڻ ضروري آهي <feature/> وغيره، ان حقيقت جي باوجود ته اها مڪمل طور تي غير ضروري ۽ پهرين نظر ۾ بي معنيٰ نظر اچي ٿي.
  • ۽ آخرڪار، جيڪڏهن توهان اميد ڪئي هئي ته هڪ وصف جي نالي جو پهريون جزو هميشه عنصر جي نالي وانگر هوندو - ائين ڪجھ به ناهي! مثال طور، خاصيتون up. سان ڳنڍيل هجڻ گهرجي <userpreferences/>. عنصرن سان منسوب نالن کي منسلڪ ڪرڻ جو حڪم صوابديدي آھي، تقريبن مڪمل طور تي.

دستاويز يا ڊيٽا. هر هڪ وقت ۾، ڪو ماڻهو XML ۽ JSON جي مقابلي ڪرڻ جي ڪوشش ڪندي مڪمل طور تي عجيب ڪم ڪري ٿو- ۽ اهڙيء طرح ڏيکاري ٿو ته اهي سمجهي نٿا سگهن. XML هڪ دستاويز مارڪ اپ ٻولي آهي. JSON هڪ منظم ڊيٽا فارميٽ آهي، تنهنڪري انهن جو هڪ ٻئي سان مقابلو ڪرڻ جهڙو آهي نرم سان گرم جو مقابلو ڪرڻ جي ڪوشش.

جي وچ ۾ فرق جو تصور دستاويز ۽ ڊيٽا. XML جي هڪ اينالاگ جي طور تي، اسان مشروط طور تي مشين پڙهڻ جي قابل دستاويز وٺي سگهون ٿا. جيتوڻيڪ اهو ارادو ڪيو ويو آهي ته مشين پڙهڻ جي قابل هجي، اهو استعاري طور تي دستاويزن ڏانهن اشارو ڪري ٿو، ۽ هن نقطي نظر کان اصل ۾ PDF دستاويزن جي مقابلي ۾ آهي، جيڪي اڪثر ڪري مشين پڙهڻ جي قابل نه هوندا آهن.

مثال طور، XML ۾ عناصر جي ترتيب جي اهميت آهي. پر JSON ۾، شين جي اندر اهم-قدر جوڑوں جو حڪم بي معني ۽ اڻ ڄاڻايل آهي. جيڪڏھن توھان چاھيو ٿا ھڪڙي غير ترتيب ڏنل ڊڪشنري ڪي-ويليو جوڙن جو، اصل ترتيب جنھن ۾ عناصر ان فائل ۾ نظر اچن ٿا ان سان ڪو فرق نٿو پوي. پر توهان هن ڊيٽا مان ڪيترن ئي مختلف قسمن جي ڊيٽا ٺاهي سگهو ٿا. دستاويزن جو، ڇاڪاڻ ته دستاويز ۾ هڪ خاص حڪم آهي. استعاري طور، اهو ڪاغذ تي هڪ دستاويز جي برابر آهي، جيتوڻيڪ ان ۾ جسماني طول و عرض نه آهي، پرنٽ آئوٽ يا PDF فائل جي برعڪس.

مناسب XML لغت جي نمائندگي جو منهنجو مثال لغت ۾ عناصر جي ترتيب کي ڏيکاري ٿو، جيئن JSON نمائندگي جي مخالفت. مان هن آرڊر کي نظر انداز نٿو ڪري سگهان: هي لڪير آهي دستاويز جي ماڊل ۽ XML فارميٽ ۾. ڪجھ ھن XML دستاويز جي تشريح ڪرڻ وقت آرڊر کي نظر انداز ڪرڻ جو انتخاب ڪري سگھن ٿا، پر ھن بابت بحث ڪرڻ جو ڪو به مقصد نه آھي ڇو ته اھو مسئلو خود فارميٽ جي بحث جي دائري کان ٻاھر آھي. ان کان علاوه، جيڪڏهن توهان دستاويز کي برائوزر ۾ ڏسڻ جي قابل بڻائيندا آهيو ان سان هڪ cascading اسٽائل شيٽ سان ڳنڍڻ سان، توهان ڏسندا ته لغت عناصر هڪ خاص ترتيب ۾ ظاهر ٿيندا آهن ۽ ڪنهن ٻئي ۾ نه.

ٻين لفظن ۾، هڪ لغت (منظم ٿيل ڊيٽا جو هڪ ٽڪرو) ۾ تبديل ٿي سگهي ٿو n مختلف ممڪن دستاويز (XML، PDF، پيپر، وغيره ۾)، جتي n - لغت ۾ عناصر جي ممڪن ميلاپ جو تعداد، ۽ اسان اڃا تائين ٻين ممڪن متغيرن جو حساب نه ورتو آھي.

بهرحال، اهو پڻ آهي ته جيڪڏهن توهان صرف ڊيٽا کي منتقل ڪرڻ چاهيو ٿا، ته پوء هن لاء مشين-ريڊ قابل دستاويز استعمال ڪندي اثرائتو نه ٿيندو. اهو هڪ نمونو استعمال ڪري ٿو، جيڪو هن معاملي ۾ غير ضروري آهي؛ اهو صرف رستي ۾ حاصل ٿيندو. اضافي طور تي، ماخذ ڊيٽا کي ڪڍڻ لاء، توهان کي هڪ پروگرام لکڻ جي ضرورت پوندي. ڪنهن به شيءِ لاءِ XML استعمال ڪرڻ ۾ شايد ئي ڪو نقطو آهي جيڪو ڪنهن نقطي تي دستاويز جي طور تي فارميٽ نه ڪيو ويندو (چئو، CSS يا XSLT استعمال ڪندي، يا ٻئي)، ڇو ته اهو ئي آهي (جيڪڏهن صرف نه) ائين ڪرڻ جو بنيادي سبب. دستاويز جي ماڊل ڏانهن.

ان کان علاوه، جيئن ته XML نمبرن جو ڪو به تصور نه آهي (يا بوليان ايڪسپريشن، يا ٻيون ڊيٽا جا قسم)، هن فارميٽ ۾ پيش ڪيل سڀئي انگ صرف اضافي متن سمجهيا وڃن ٿا. ڊيٽا کي ڪڍڻ لاء، اسڪيما ۽ ان جي تعلق سان لاڳاپيل ڊيٽا جو اظهار ڪيو وڃي ڄاڻڻ ضروري آهي. توهان کي اهو به ڄاڻڻ جي ضرورت آهي جڏهن، حوالي جي بنياد تي، هڪ خاص متن جو عنصر هڪ نمبر جي نمائندگي ڪري ٿو ۽ هڪ نمبر ۾ تبديل ڪيو وڃي، وغيره.

اهڙيء طرح، ايڪس ايم ايل دستاويزن مان ڊيٽا ڪڍڻ جو عمل اسڪين ٿيل دستاويزن کي سڃاڻڻ جي عمل کان ايترو مختلف ناهي، مثال طور، جدولن جي انگن اکرن جي ڪيترن ئي صفحن کي ٺاهيندي. ها، اهو ممڪن آهي ته اهو اصول ۾ ڪيو وڃي، پر اهو سڀ کان وڌيڪ بهتر طريقو ناهي، سواء آخري ريسرٽ جي، جڏهن بلڪل ڪو ٻيو اختيار نه آهي. هڪ مناسب حل صرف اصل ڊيٽا جي هڪ ڊجيٽل ڪاپي ڳولڻ آهي جيڪو دستاويز جي ماڊل ۾ شامل نه آهي جيڪا ڊيٽا کي ان جي مخصوص متن جي نمائندگي سان گڏ ڪري ٿي.

اهو چيو ته، اهو مون کي حيران نه ٿو ڪري ته XML ڪاروبار ۾ مشهور آهي. ان جو سبب خاص طور تي اهو آهي ته دستاويز جي شڪل (ڪاغذ تي) سمجھڻ ۽ ڪاروبار لاءِ واقف آهي، ۽ اهي هڪ واقف ۽ سمجھڻ وارو ماڊل استعمال ڪرڻ جاري رکڻ چاهيندا آهن. ساڳيءَ ئي سبب لاءِ، ڪاروبار به اڪثر پي ڊي ايف دستاويزن بدران وڌيڪ مشين پڙهڻ لائق فارميٽ استعمال ڪندا آهن - ڇاڪاڻ ته اهي اڃا تائين هڪ مخصوص جسماني سائيز سان ڇپيل صفحي جي تصور سان جڙيل آهن. اهو انهن دستاويزن تي به لاڳو ٿئي ٿو جيڪي ڪڏهن به ڇپجڻ ممڪن نه آهن (مثال طور، رجسٽري دستاويزن جو هڪ 8000-صفحو PDF). هن نقطي نظر کان، ڪاروبار ۾ XML جو استعمال لازمي طور تي skeuomorphism جو هڪ مظهر آهي. ماڻهو هڪ محدود سائيز جي ڇپيل صفحي جي استعاري خيال کي سمجھندا آهن، ۽ اهي سمجھندا آهن ته ڪيئن پرنٽ ٿيل دستاويزن جي بنياد تي ڪاروباري عمل پيدا ڪجي. جيڪڏھن اھو توھان جو ھدايت آھي، دستاويز جيڪي جسماني سائيز جي حدن کان سواءِ آھن جيڪي مشين سان پڙھي سگھن ٿيون-XML دستاويز- ھڪ واقف ۽ آرامده دستاويزي هم منصب ھوندي جدت جي نمائندگي ڪن ٿا. اهو انهن کي ڊيٽا پيش ڪرڻ جي غلط ۽ گهڻو ڪري اسڪيومورفڪ طريقي سان رهڻ کان نٿو روڪي.

اڄ تائين، صرف ايڪس ايم ايل اسڪيمن جي مون کي خبر آهي ته مان صحيح طور تي فارميٽ جو صحيح استعمال ڪري سگهان ٿو XHTML ۽ DocBook.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو