
Gjuha XML u shpik në vitin 1996. Pasi sapo doli në përdorim, mundësitë e tij u keqkuptuan dhe për qëllimet për të cilat u përpoq të adaptohej, nuk ishte zgjidhja më e mirë.
Nuk do të ishte e tepruar të thoshim se shumica dërrmuese e skemave XML që kam parë ishin një përdorim i pamjaftueshëm ose i gabuar i XML. Për më tepër, kjo përdorim i XML tregonte një keqkuptim themelor se çfarë është kryesisht XML.
XML është një gjuhë shënjimi. Kjo nuk është një format të dhënash.Në shumicën e skemave XML, ky ndarje nuk u mor parasysh, duke e ngatërruar XML me formatin e të dhënave, që në fund do të thoshte një gabim në zgjedhjen e XML, pasi në të vërtetë nevojitej pikërisht një format të dhënash.
Nëse nuk shkojmë në detaje, XML është më së miri i përshtatshëm për të annotuar blloqe teksti me strukturë dhe metadata. Nëse objekti juaj kryesor nuk është puna me një bllok teksti, zgjedhja e XML nuk do të jetë e justifikueshme.
Nga kjo pikëpamje, ka një mënyrë të thjeshtë për të verifikuar sa mirë është ndërtuar një skemë XML. Le të marrim si shembull një dokument në skemën e supozuar dhe ta heqim të gjithë etiketat dhe atributet nga ai. Nëse në atë që mbetet nuk ka kuptim (ose nëse mbetet një varg bosh), atëherë ose skema juaj është ndërtuar gabim, ose nuk keni pasur nevojë të aplikoni XML.
Më poshtë do të jap disa nga shembujt më të zakonshëm të skemave të ndërtuara gabim.
Këtu ne shohim një shembull të një përpjekjeje të paarsyeshme dhe të çuditshme (edhe pse mjaft të zakonshme) për të shprehur një fjalor të thjeshtë "çelës-vlerë" në gjuhën XML. Nëse heqim të gjitha etiketat dhe atributet, do të mbetet një varg bosh. Në thelb, ky dokument përfaqëson, sa absurde që mund të duket, një anotim semantik të një vargu bosh.
<root name="John" city="London" />Çfarë është akoma më keq, këtu nuk kemi vetëm një anotim semantik të një vargu bosh si një mënyrë ekzentrike për të shprehur një fjalor - këtë herë "fjalori" është koduar drejtpërdrejt si atributet e elementit rrënjor. Për shkak të kësaj, grupi i emrave të përcaktuar të atributit në element bëhet i paqartë dhe dinamik. Më tepër, këtu tregohet që gjithçka që autori donte të tha, ishte vetëm 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 e detyruar përdorimin e një elementi të vetëm bosh vetëm si një prefiks për të përdorur sintaksën e atributëve. Dhe këto skema më ndodhin shumë shpesh.
John
LondonKjo tashmë është diçka më e mirë, por tani çelësat janë për një arsye të caktuar metadata, ndërsa vlerat nuk janë. Një pamje e çuditshme mbi fjalorët. Nëse heqim të gjitha etiketat dhe atributet, do të humbasim gjysmën e informacionit.
Shprehja e duhur e një fjalori në XML do të dukej përafërsisht kështu:
Name
John
City
LondonPor nëse njerëzit kanë marrë një vendim të çuditshëm për të aplikuar XML si një format të dhënash dhe pastaj të rendisin fjalorin me të, ata duhet të kuptojnë se ajo që po bëjnë është e papërshtatshme dhe e papërshtatshme. Ndonjëherë, projektuesit gabimisht zgjedhin XML për të ndërtuar aplikacionet e tyre. Por edhe më shpesh, ata e komplikojnë situatën me një përdorim të paarsyeshëm të XML në njërën nga formatet e mësipërme, duke injoruar faktin se XML për këtë thjesht nuk është e përshtatshme.
Skema më e keqe XML? Me rastin e kësaj, çmimi për skemën më të keqe XML që kam parë, shkon për formatin e skedarit të konfigurimit të automatik të ndarjes së burimeve për telefonat IP të Polycom. Këto skedarë kërkojnë ngarkimin e skedarëve XML me kërkesa përmes TFTP, të cilat... Në thelb, ja një copë nga njëri nga këto skedarë:
<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ë një shpikje e imja:
- elementet thjesht përdoren si një prefiks për të lidhur atributet, të cilat vetë kanë emra hierarkikë.
- Nëse duhet të ngjiten vlerat për disa instanca të regjistrimit të një lloji të caktuar, atëherë duhet të përdoren emra atributi, ku ka indekse..
- Përveç kësaj, atributet që fillojnë me
softkey.duhet të vendosen në elementet<softkey/>ndërsa atributet që fillojnë mefeature.duhet të vendosen në elementet<feature/>etj., megjithëse kjo duket krejt e tepruar dhe në shikim të parë pa kuptim. - Dhe, përfundimisht, nëse shpresonit që komponenti i parë i emrit të atributit të përputhet gjithmonë me emrin e elementit — asgjë e tillë! Për shembull, atributet
up.duhen lidhur me<userpreferences/>. Renditja e bashkimit të emrave të atributeve me elementët është arbitrare, për faktin se është praktikisht krejtësisht e lirë.
Dokumentet ose të dhënat. Herë pas here dikush bën gjëra krejt të çuditshme, duke u përpjekur të krahasojë XML-në me JSON-in, – dhe kështu duke treguar se nuk kupton as njërën dhe as tjetrën. XML është një gjuhë markup për dokumente. JSON përfaqëson një format për të dhëna të strukturuara, kështu që krahasimi i tyre me njëri-tjetrin është si të përpiqesh të krahasosh ngrohtë me butësinë.
Të kuptuarit e këtij koncepti do të ndihmojë në përkufizimin e diferencës mes dokumenteve dhe të dhënave. Si një analogji, XML mund të merret si një dokument i lexueshëm nga makina. Megjithëse është i destinuar për t'u lexuar nga makina, metaforikisht ai i referohet dokumenteve, dhe nga kjo pikëpamje është faktikisht i krahasueshëm me dokumentet PDF, të cilat shpesh nuk janë të lexueshme nga makina.
Për shembull, në XML renditja e elementeve ka rëndësi. Ndërsa në JSON renditja e çifteve "çelës-vlerë" brenda objekteve nuk ka kuptim dhe nuk është e përcaktuar. Nëse dëshironi të merrni një fjalor të pastrukturuar nga çifte "çelës-vlerë", rendi real ku elementet ndodhen në këtë skedar nuk ka rëndësi. Por mund të formoni shumë dokumente të ndryshme , pasi në një dokument ka një rend të caktuar. Metaforikisht, kjo është e ngjashme me një dokument në letër, megjithëse ai nuk ka përmasa fizike ndryshe nga një printim ose një skedar PDF.Në shembullin tim të paraqitjes së saktë të një fjalori në gjuhën XML tregohet rendi i elementeve në fjalor, ndryshe nga paraqitja në gjuhën JSON. Nuk mund ta injoroj këtë rend; kjo linearitet është parësore 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 nuk ka kuptim të debatojmë mbi këtë, pasi çështja del jashtë diskutimit të formatit vetë. Për më tepër, nëse e bëni dokumentin të shfaqet në shfletues, duke i bashkëngjitur atij një tabelë stilesh, mund të shihni se elementet e fjalorit ndjekin një rend të caktuar, dhe asnjë tjetër.
Me fjalë të tjera, një fjalor (fragment i të dhënave të strukturuara) mund të transformohet në
dokumente të ndryshme të mundshme (në format XML, PDF, në letër etj.), ku n — numri i kombinimeve të mundshme të elementeve në fjalor, dhe kjo është ende pa marrë parasysh variablat e tjera të mundshme. n Njëkohësisht, kjo tregon gjithashtu se nëse dëshironi të transmetoni vetëm të dhëna, atëherë përdorimi i një dokumenti të lexueshëm nga makina do të ishte joefektiv. Ai përdor një model, i cili në këtë rast është i tepruar, do të vetëm pengonte. Për më tepër, për të ekstraktuar të dhënat origjinale, do të nevojitej të shkruhet një program. Ndoshta nuk ka kuptim të përdorni XML për diçka të tillë, që në një fazë të caktuar nuk do të formatizohet në formën e një dokumenti (p.sh., me CSS ose XSLT, ose të dyja), pasi kjo është arsyeja kryesore (nëse jo e vetmja) për t'u mbajtur pas modelit të dokumentit.
Për më tepër, për shkak se në XML nuk ka një koncept të numrave (apo shprehjeve logjike, ose llojeve të tjera të të dhënave), të gjitha numrat e paraqitur në këtë format konsiderohen vetëm si tekst shtesë. Për të nxjerrë të dhënat duhet të dihet skema dhe lidhja e saj me të dhënat përkatëse. Gjithashtu, duhet të dihet se kur në varësi të kontekstit një element i caktuar i tekstit përfaqëson një numër dhe duhet të konvertohet në numër, etj.
Kështu, procesi i nxjerrjes së të dhënave nga dokumentet XML nuk ndryshon shumë nga procesi i njohjes së dokumenteve të skanuara, që përmbajnë, për shembull, tabela që përbëjnë shumë faqe të dhënash numerike. Po, është e mundur në parim, por nuk është rruga më optimale, – përveç se në rastin ekstreme, kur nuk ka opsione të tjera. Një zgjidhje më e arsyeshme do të ishte të gjendet një kopje digjitale e të dhënave origjinale, të cilat nuk janë të ngulitura në modelin e dokumentit, në të cilin të dhënat janë të bashkuara me përfaqësimin e tyre të caktuar tekstual.
Pra ashtu, procesi i nxjerrjes së të dhënave nga dokumentet XML nuk ndryshon shumë nga procesi i njohjes së dokumenteve të skanuara, që përfshijnë, për shembull, tabela që formojnë shumë faqe të dhënash numerike. Po, është në përgjithësi e mundur ta bësh këtë, por nuk është rruga më optimale, përveçse në rastin ekstrem kur nuk ka mundësi të tjera. Një zgjidhje e arsyeshme do të ishte thjesht të gjeje një kopje digjitale të të dhënave origjinale, të cilat nuk janë të integruara në modelin e dokumentit, ku të dhënat janë të bashkuara me përfaqësimin e tyre specifik tekstual.
Më nuk më befason fare që XML është i popullarizuar në biznes. Arsyetimi për këtë është se formati i dokumenteve (në letër) është i kuptueshëm dhe i njohur për biznesin, dhe ata dëshirojnë të vazhdojnë të përdorin një model të njohur dhe të kuptueshëm. Për të njëjtën arsye, dokumentet në PDF përdoren shumë shpesh në biznes në vend të formateve më të përshtatshme për përpunim nga makinat — sepse ata janë akoma të lidhur me konceptin e faqes së printuar me një madhësi fizike të caktuar. Kjo vlen edhe për ato dokumente që nuk do të printohen kurrë (p.sh. një PDF i dokumentacionit të regjistrit me 8000 faqe). Nga ky këndvështrim, përdorimi i XML në biznes është esencialisht një shprehje e skevomorfizmit. Ideja metaforike e faqes së printuar me një madhësi të kufizuar është e kuptueshme për njerëzit, dhe ata e kuptojnë se si të krijojnë procese biznesi të bazuara në dokumentet e printuara. Nëse ky është orientimi juaj, dokumentet që nuk kanë një madhësi fizike të kufizuar, që janë të lexueshme nga makinat — dokumentet XML — përbëjnë një inovacion, duke qenë njëkohësisht një alternativë të njohur dhe të rehatshme për dokumentin. Kjo nuk e pengon atë që të mbetet një mënyrë e pasaktë dhe përshtatje e tepruar e përfaqësimit të të dhënave.
Aktualisht, skemat e vetme XML që mund të quaj të përdorura saktë janë XHTML dhe DocBook.
Burimi: habr.com
