XML සෑම විටම පාහේ වැරදි ලෙස භාවිතා වේ

XML සෑම විටම පාහේ වැරදි ලෙස භාවිතා වේ
XML 1996 දී සොයා ගන්නා ලදී. එහි යෙදුම් පුළුල් ලෙස වරදවා වටහා ගන්නා තෙක් එය චිත්‍රයෙන් ඉවත් වී නොතිබූ අතර එය අනුවර්තනය කරන ලද අරමුණු සඳහා හොඳම තේරීම නොවීය.

මා දැක ඇති XML යෝජනා ක්‍රමවලින් අතිමහත් බහුතරයක් 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 හරහා XML ඉල්ලීම් ගොනු බාගත කිරීම අවශ්‍ය වේ, එනම්... හොඳයි, මෙන්න එවැනි එක් ගොනුවකින් උපුටා ගැනීමක්:

<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 ලේඛනය අර්ථකථනය කරන කෙනෙකු අනුපිළිවෙල නොසලකා හැරීමට තීරණය කළ හැකිය, නමුත් මේ ගැන තර්ක කිරීම අර්ථ විරහිත ය, මන්ද එය ආකෘතියේ විෂය පථයෙන් ඔබ්බට යයි. තවද, ඔබ ලේඛනය බ්‍රවුසරයක නැරඹිය හැකි කරන්නේ නම්, එයට කැස්කැඩින් ස්ටයිල් පත්‍රයක් ඇමිණීමෙන්, ශබ්දකෝෂ මූලද්‍රව්‍ය නිශ්චිත අනුපිළිවෙලක් අනුගමනය කරන බවත්, වෙනත් කිසිවක් අනුගමනය නොකරන බවත් ඔබට පෙනෙනු ඇත.

වෙනත් වචන වලින් කිවහොත්, ශබ්දකෝෂයක් (ව්‍යුහගත දත්ත කැබැල්ලක්) බවට පරිවර්තනය කළ හැකිය n විවිධ විය හැකි ලේඛන (XML ආකෘතියෙන්, PDF, කඩදාසි මත, ආදිය), එහිදී n — ශබ්දකෝෂයේ ඇති මූලද්‍රව්‍යවල විය හැකි සංයෝජන ගණන, සහ අපි තවමත් වෙනත් විය හැකි විචල්‍යයන් පවා සැලකිල්ලට ගෙන නොමැත.

කෙසේ වෙතත්, මෙයින් අදහස් කරන්නේ ඔබට දත්ත සම්ප්‍රේෂණය කිරීමට පමණක් අවශ්‍ය නම්, යන්ත්‍රයෙන් කියවිය හැකි ලේඛනයක් භාවිතා කිරීම අකාර්යක්ෂම බවයි. එය ආකෘතියක් භාවිතා කරයි, එය අතිරික්ත වන අතර එය මාර්ගයට බාධාවක් වනු ඇත. තවද, අමු දත්ත උපුටා ගැනීම සඳහා ක්‍රමලේඛනය අවශ්‍ය වේ. යම් අවස්ථාවක දී ලේඛනයක් ලෙස ආකෘතිගත නොකරන ඕනෑම දෙයක් සඳහා XML භාවිතා කිරීම කිසිසේත්ම අර්ථවත් නොවේ (කියන්න, CSS හෝ XSLT හෝ දෙකම භාවිතා කිරීම), මන්ද මෙය ලේඛන ආකෘතියකට ඇලී සිටීමට ප්‍රාථමික (එකම නොවේ නම්) හේතුවයි.

තවද, XML හි සංඛ්‍යා (හෝ බූලියන් ප්‍රකාශන හෝ වෙනත් දත්ත වර්ග) පිළිබඳ සංකල්පයක් නොමැති බැවින්, මෙම ආකෘතියෙන් නිරූපණය වන සියලුම සංඛ්‍යා අතිරේක පෙළක් ලෙස සැලකේ. දත්ත උපුටා ගැනීම සඳහා, යෝජනා ක්‍රමය සහ ප්‍රකාශිත අනුරූප දත්ත සමඟ එහි සම්බන්ධතාවය දැනගත යුතුය. සන්දර්භය මත පදනම්ව, නිශ්චිත පෙළ මූලද්‍රව්‍යයක් සංඛ්‍යාවක් නියෝජනය කරන අතර එය එකකට පරිවර්තනය කළ යුත්තේ කවදාදැයි දැන ගැනීම ද අවශ්‍ය වේ.

මේ අනුව, XML ලේඛනවලින් දත්ත උපුටා ගැනීමේ ක්‍රියාවලිය, බහු පිටු සංඛ්‍යාත්මක දත්ත අඩංගු වගු අඩංගු ස්කෑන් කරන ලද ලේඛන හඳුනා ගැනීමේ ක්‍රියාවලියට වඩා එතරම් වෙනස් නොවේ. ප්‍රතිපත්තිමය වශයෙන් මෙය කළ හැකි වුවද, එය වඩාත්ම ප්‍රශස්ත ප්‍රවේශය නොවේ - සමහර විට, එය අවසාන විසඳුම නම් මිස, වෙනත් විකල්ප නොමැති විට. සාධාරණ විසඳුමක් වනුයේ දත්ත එහි නිශ්චිත පෙළ නිරූපණය සමඟ ඒකාබද්ධ කරන ලේඛන ආකෘතියකට ඇතුළත් කර නොමැති මුල් දත්තවල ඩිජිටල් පිටපතක් සොයා ගැනීමයි.

කෙසේ වෙතත්, XML ව්‍යාපාර තුළ ජනප්‍රිය වීම ගැන මම කිසිසේත් පුදුම නොවෙමි. මෙයට හේතුව (කඩදාසි මත) ලේඛන ආකෘතිය ව්‍යාපාරවලට තේරුම් ගත හැකි සහ හුරුපුරුදු වීම සහ ඔවුන්ට මෙම හුරුපුරුදු සහ තේරුම්ගත හැකි ආකෘතිය දිගටම භාවිතා කිරීමට අවශ්‍ය වීමයි. එම හේතුව නිසාම, ව්‍යාපාර ද බොහෝ විට යන්ත්‍රයෙන් කියවිය හැකි ආකෘති වෙනුවට PDF ලේඛන භාවිතා කරයි - මන්ද ඒවා නිශ්චිත භෞතික ප්‍රමාණයක මුද්‍රිත පිටුවක සංකල්පයට බැඳී පවතී. මෙය කිසිදා මුද්‍රණය කිරීමට ඉඩක් නොමැති ලේඛන සඳහා පවා අදාළ වේ (නිදසුනක් ලෙස, පිටු 8000 ක රෙජිස්ට්‍රි ලියකියවිලි වල PDF ගොනුවක්). මෙම දෘෂ්ටිකෝණයෙන්, ව්‍යාපාරයේ XML භාවිතය අත්‍යවශ්‍යයෙන්ම ස්කියුමෝෆිස්වාදයේ ප්‍රකාශනයකි. සීමිත ප්‍රමාණයේ මුද්‍රිත පිටුවක රූපක අදහස මිනිසුන් තේරුම් ගන්නා අතර මුද්‍රිත ලේඛන මත පදනම්ව ව්‍යාපාර ක්‍රියාවලීන් ගොඩනඟන්නේ කෙසේදැයි ඔවුන් තේරුම් ගනී. මෙය ඔබේ මාර්ගෝපදේශය නම්, යන්ත්‍රයෙන් කියවිය හැකි භෞතික ප්‍රමාණයේ සීමාවන් නොමැති ලේඛන - XML ​​ලේඛන - නවෝත්පාදනයන් නියෝජනය කරන අතරම, ලේඛනයකට හුරුපුරුදු සහ සුවපහසු සමාන වේ. එමඟින් දත්ත ඉදිරිපත් කිරීමේ වැරදි සහ අධික ස්කියුමෝෆික් ක්‍රමයක් ලෙස රැඳී සිටීම වළක්වන්නේ නැත.

අද වන විට, මා දන්නා, මට සැබවින්ම ආකෘතියේ නිසි යෙදුම් ලෙස හැඳින්විය හැකි එකම XML යෝජනා ක්‍රම වන්නේ XHTML සහ DocBook පමණි.

මූලාශ්රය: www.habr.com

DDoS ආරක්ෂාව, VPS VDS සේවාදායකයන් සහිත අඩවි සඳහා විශ්වාසදායක සත්කාරකත්වය මිලදී ගන්න 🔥 DDoS ආරක්ෂාව, VPS VDS සේවාදායකයන් සහිත විශ්වාසදායක වෙබ් අඩවි සත්කාරකත්වය මිලදී ගන්න | ProHoster