
Gjuha XML u shpik në vitin 1996. Pothuajse sapo filloi të ekzistojë, mundësitë e përdorimit të tij u kuptuan gabimisht, dhe për ato qëllime për të cilat u përpoq të adaptohej, ai nuk ishte zgjedhja më e mirë.
Nuk do të ishte ekzagjerim të thuash se shumica dërrmuese e skemave XML që kam parë, përbënin një përdorim të paarsyeshëm ose të gabuar të XML. Për më tepër, kjo përdorim i XML testamentonte një keqkuptim themelor të asaj çfarë në thelb është XML.
XML është një gjuhë shënjimi. Kjo nuk është një format të dhënash. Në shumicën e skemave XML, kjo ndarje nuk u mor parasysh, duke e ngatërruar XML me një format të dhënash, çka në fund nënkuptonte një gabim në zgjedhjen e XML, pasi në të vërtetë duhej një format të dhënash.
Nëse nuk duam të hyjmë në detaje, XML i përshtatet më së miri annotimit të blloqeve të tekstit me strukturë dhe metadata. Nëse qëllimi juaj kryesor nuk është të punoni me një bllok teksti, zgjedhja e XML-së vështirë se do të ishte e arsyeshme.
Nga kjo pikëpamje, ekziston një mënyrë e thjeshtë për të verifikuar se sa mirë është ndërtuar një skemë XML. Merrni për shembull një dokument në skemën e parashikuar dhe hiqni të gjitha etiketat dhe atribute. Nëse në atë që ka mbetur nuk ka kuptim (ose nëse mbetet një varg i zbrazët), atëherë ose skema juaj është ndërtuar gabimisht, ose thjesht nuk duhej të përdornit XML.
Më tej do të jap disa nga shembujt më të zakonshëm të skemave të ndërtuara gabimisht.
Këtu shihet një shembull i një përpjekjeje të bazuar dhe të çuditshme (edhe pse shumë të zakonshme) për të shprehur me gjuhën XML një fjalor të thjeshtë "çelës-vlerë". Nëse hiqen të gjitha etiketat dhe atributet, mbetet një varg i zbrazët. Në thelb, ky dokument përfaqëson, sa absurd të tingëllojë, një annotim semantik të vargut të zbrazët.
<root name="John" city="London" />ĂfarĂ« Ă«shtĂ« edhe mĂ« keq, kĂ«tu nuk kemi vetĂ«m njĂ« annotim semantik tĂ« njĂ« string tĂ« zbrazĂ«t si njĂ« mĂ«nyrĂ« ekstravagante pĂ«r tĂ« shprehur rregulloren â kĂ«tĂ« herĂ« 'rregullorja' Ă«shtĂ« koduar direkt si atribute tĂ« elementit rrĂ«njĂ«. Nga kjo, grupi i caktuar i emrave tĂ« atributeve nĂ« element bĂ«het i paqartĂ« dhe dinamik. MĂ« tej, Ă«shtĂ« e qartĂ« se gjithçka qĂ« autori donte tĂ« shprehte, ishte njĂ« sintaksĂ« e thjeshtĂ« 'çelĂ«s-vlerĂ«', por nĂ« vend tĂ« kĂ«saj ai zgjodhi njĂ« vendim krejtĂ«sisht tĂ« çuditshĂ«m pĂ«r tĂ« aplikuar XML, duke detyruar pĂ«rdorimin e njĂ« elementi tĂ« zbrazĂ«t si njĂ« prefiks pĂ«r tĂ« pĂ«rdorur sintaksĂ«n e atributeve. KĂ«to skema mĂ« hasen shumĂ« shpesh.
John
LondonKjo është disi më mirë, por tani çelësat për një arsye janë metadata, ndërsa vlerat jo. Një pikëpamje shumë e çuditshme për rregulloret. Nëse hiqni të gjitha etiketat dhe atributet, do të humbasë gjysmën e informacionit.
Shprehja e saktë e rregullorës në XML do të dukej kështu:
Name
John
City
LondonPor nëse njerëzit pranojnë një vendim të çuditshëm për të aplikuar XML si format të dhënash dhe më pas të rendisin rregulloren me të, ata duhet të kuptojnë se ajo që po bëjnë është e papërshtatshme dhe e pakëndshme. Shpesh, dizajnuesit zgjedhin gabimisht XML për të ndërtuar aplikacionet e tyre. Por edhe më shpesh, ata përkeqësojnë situatën duke aplikuar XML pa kuptim në njërën nga format e përmendura më sipër, duke injoruar faktin se XML thjesht nuk është i përshtatshëm për këtë.
Schemi më e keqe XML? Për më tepër, çmimi për schemën më të keqe XML që kam parë ndonjëherë, e merr formati i skedarit të konfigurimit për ndarjen automatike të burimeve për telefonat IP të telekomunikacionit Polycom. Këta skedarë kërkojnë ngarkimin e skedarëve XML të kërkesave përmes TFTP, të cilat... Pra, ja një fragment nga një skedar i tillë:
<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="..." />Kjo nuk është një shaka e dështuar e dikujt. Dhe nuk është imagjinata ime:
- Elementet përdoren thjesht si prefiks për të ngjitur atribute, të cilat vetë kanë emra hierarkikë.
- Nëse duhet të bashkëngjitni vlera për disa instanca të regjistrimeve të një lloji të caktuar, duhet të përdorni emrat e atributeve, në të cilat ka indekse.
- Përveç kësaj, atributet që fillojnë me
softkey., duhet tĂ« vendosen nĂ« elementĂ«t<softkey/>, atributet qĂ« fillojnĂ« mefeature., duhet tĂ« vendosen nĂ« elementĂ«t<feature/>etj., megjithĂ«se kjo duket krejtĂ«sisht e tepĂ«rt dhe nĂ« pamje tĂ« parĂ« pa kuptim. - Dhe, pĂ«rfundimisht, nĂ«se shpresonit qĂ« komponenti i parĂ« i emrit tĂ« atributit pĂ«rfaqĂ«son gjithmonĂ« emrin e elementit â asgjĂ« e tillĂ«! PĂ«r shembull, atributet
up.duhet të bashkëngjiten në<userpreferences/>. Renditja e bashkëngjitjes së emrave të atributeve në elementë është arbitrare, madje praktikisht plotësisht.
Dokumentet ose tĂ« dhĂ«nat.Koha pas kohe, ndokush bĂ«n gjĂ«ra krejtĂ«sisht tĂ« çuditshme, duke u pĂ«rpjekur tĂ« krahasojĂ« XML dhe JSON, â dhe duke treguar kĂ«shtu se nuk kupton asnjĂ«rin, as tjetrin. XML Ă«shtĂ« njĂ« gjuhĂ« markup dokumentesh. NdĂ«rsa JSON Ă«shtĂ« njĂ« format pĂ«r tĂ« dhĂ«na tĂ« strukturuara, kĂ«shtu qĂ« krahasimi i tyre me njĂ«ri-tjetrin Ă«shtĂ« si tĂ« provosh tĂ« krahasosh tĂ« ngrohta me tĂ« buta.
Të kuptosh këtë do të ndihmojë koncepti i ndryshimit midis dokumenteve dhe të dhënave.Si analogji për XML mund të marrësh një dokument të lexueshëm nga makina. Edhe pse është ndërtuar për t'u lexuar nga makina, metaforikisht përfaqëson dokumentet, dhe nga ky këndvështrim është praktikisht i krahasueshëm me dokumentet PDF, të cilat shpesh herë nuk janë lexueshmërisht nga makina.
Për shembull, në XML ka rëndësi rendi i elementeve. Ndërsa në JSON rendi i çiftave "çelës-vlerë" brenda objekteve nuk ka kuptim dhe nuk është e përcaktuar. Nëse dëshiron të marrësh një fjalor të pa renditur nga çiftet "çelës-vlerë", rendi real me të cilin ndodhen elementet në këtë skedar nuk ka rëndësi. Por mund të formosh nga këto të dhëna shumë dokumente të ndryshme, dokumentesh,për shkak se në një dokument ka një renditje të caktuar. Metaforikisht, kjo është një analogji me një dokument në letër, megjithëse nuk ka dimensions fizike, në kundërshtim me një printim ose skedarin PDF.
Në shembullin tim të paraqitjes së duhur të fjalorit në gjuhën XML, tregohet rendi i elementeve në fjalor, në dallim nga paraqitja në gjuhën JSON. Nuk mund ta injoroj këtë rend: kjo linearitet është fillimisht e natyrshme për modelin e dokumenteve dhe formatin XML. Disa mund të vendosin ta injorojnë këtë rend gjatë interpretimit të këtij dokumenti XML, por është e paarsyeshme të diskutohet për këtë, pasi ky çështje del jashtë diskutimit mbi vërtetë formatin. Për më tepër, nëse e bëni dokumentin të shikueshëm në shfletues, duke i lidhur atij një tabelë stilesh, do të mund të shihni se elementet e fjalorit ndjekin një rend të caktuar, dhe as në ndonjë tjetër.
Me fjalĂ« tĂ« tjera, fjalori (njĂ« fragment i tĂ« dhĂ«nave tĂ« strukturuara) mund tĂ« konvertohet nĂ« n dokumente tĂ« ndryshme tĂ« mundshme (nĂ« formatin XML, PDF, nĂ« letĂ«r etj.), ku n â numri i kombinimeve tĂ« mundshme tĂ« elementeve nĂ« fjalor, dhe kjo akoma nuk i kemi marrĂ« parasysh variablat e tjera tĂ« mundshme.
NjĂ«kohĂ«sisht, nga kjo ndjek gjithashtu se nĂ«se dĂ«shironi tĂ« transferoni vetĂ«m tĂ« dhĂ«na, pĂ«rdorimi i njĂ« dokumenti tĂ« lexueshĂ«m nga makina do tĂ« ishte joefektiv. Ai pĂ«rdor njĂ« model qĂ« nĂ« kĂ«tĂ« rast Ă«shtĂ« i panevojshĂ«m, ai do tĂ« pengonte vetĂ«m. PĂ«r mĂ« tepĂ«r, pĂ«r tĂ« nxjerrĂ« tĂ« dhĂ«nat origjinale, do tĂ« duhet tĂ« shkruani njĂ« program. ĂshtĂ« vĂ«shtirĂ« tĂ« ketĂ« kuptim tĂ« pĂ«rdorni XML pĂ«r diçka qĂ« nĂ« njĂ« fazĂ« tĂ« caktuar nuk do tĂ« formohet si njĂ« dokument (p.sh., me CSS ose XSLT, ose tĂ« dyja), pasi kjo Ă«shtĂ« arsyeja kryesore (nĂ«se jo e vetme) pĂ«r tĂ« mbajtur modelin e dokumentit.
Për më tepër, pasi në XML nuk ka një nocion të numrave (ose shprehjeve logjike, ose gjithçkaje tjetër), të gjitha numrat e paraqitur në këtë format trajtohen vetëm si tekst të shtuar. Për të nxjerrë të dhënat, duhet të dihet skema dhe lidhja e saj me të dhënat përkatëse që shprehen. Gjithashtu, duhet të dihet se kur, në përputhje me kontekstin, një element i caktuar i tekstit përbën një numër dhe duhet të konvertohet në numër, etj.
Prarr se, procesi i nxjerrjes së të dhënave nga dokumentet XML nuk është shumë ndryshe nga procesi i njohjes së dokumenteve të skanuara që përmbajnë, për shembull, tabela që formojnë shumë faqe të dhënash numerike. Po, në parim është e mundur, por nuk është rruga më e optimizuar, përveçse në raste ekstreme kur nuk ka alternativa të tjera. Një zgjidhje e arsyeshme do të ishte thjesht të gjejmë një kopje digjitale të të dhënave origjinale, që nuk janë të inkorporuara në modelin e dokumentit, në të cilin të dhënat janë të bashkuara me përfaqësimin e tyre specifik tekstual.
Prandaj, nuk mĂ« befason aspak qĂ« XML Ă«shtĂ« popullor nĂ« biznes. Arsyeja pĂ«r kĂ«tĂ« Ă«shtĂ« se formati i dokumenteve (nĂ« letĂ«r) Ă«shtĂ« i kuptueshĂ«m dhe i njohur pĂ«r biznesin, dhe ata duan tĂ« vazhdojnĂ« tĂ« pĂ«rdorin njĂ« model qĂ« janĂ« mĂ«suar. PĂ«r tĂ« njĂ«jtĂ«n arsye, nĂ« biznes shpesh pĂ«rdoren dokumentet nĂ« PDF nĂ« vend tĂ« formateve mĂ« tĂ« pĂ«rshtatshme pĂ«r pĂ«rpunim automatike â sepse ata janĂ« akoma tĂ« lidhur me konceptin e faqeve tĂ« printuara me njĂ« madhĂ«si fizike tĂ« caktuar. Kjo ndodh edhe me dokumentet qĂ« nuk do tĂ« printohen ndonjĂ«herĂ« (pĂ«r shembull, njĂ« skedar PDF tĂ« dokumentacionit tĂ« regjistrit me 8000 faqe). Nga ky kĂ«ndvĂ«shtrim, pĂ«rdorimi i XML nĂ« biznes Ă«shtĂ« nĂ« thelb njĂ« manifestim i skevomorfizmit. NjĂ« ide metaforike e faqes sĂ« printuar me njĂ« madhĂ«si tĂ« kufizuar Ă«shtĂ« e kuptueshme pĂ«r njerĂ«zit, dhe ata e kuptojnĂ« si tĂ« krijojnĂ« procese biznesi mbi bazĂ«n e dokumenteve tĂ« printuara. NĂ«se kjo Ă«shtĂ« referenca juaj, dokumentet pa njĂ« madhĂ«si fizike tĂ« kufizuar, tĂ« cilat janĂ« tĂ« lexueshme nga makina â dokumentet XML â pĂ«rfaqĂ«sojnĂ« njĂ« inovacion, duke qĂ«nĂ« njĂ«kohĂ«sisht njĂ« ekuivalent tĂ« njohur dhe tĂ« rehatshĂ«m tĂ« dokumentit. Kjo nuk ndalon qĂ« ato tĂ« mbeten njĂ« mĂ«nyrĂ« e pavĂ«rtetĂ« dhe tepĂ«r skevomorfike pĂ«r tĂ« paraqitur tĂ« dhĂ«na.
Sot, skemat e vetme XML që unë vërtet mund t'i quaj përdorim të saktë të këtij formati janë XHTML dhe DocBook.
Burimi: habr.com
