XML huwa kważi dejjem użat ħażin

XML huwa kważi dejjem użat ħażin
Il-lingwa XML ġiet ivvintata fl-1996. Hekk kif deher li l-possibbiltajiet tal-applikazzjoni tagħha kienu diġà bdew jinftiehmu ħażin, u għall-iskopijiet li kienu qed jippruvaw jadattawha għalihom, ma kinitx l-aħjar għażla.

Mhuwiex esaġerazzjoni li ngħid li l-maġġoranza l-kbira tal-iskemi XML li rajt huma użi mhux xierqa jew żbaljati tal-XML. Barra minn hekk, dan l-użu ta 'XML wera nuqqas ta' ftehim fundamentali ta 'dak li kien XML.

XML hija lingwa ta' markup. Dan mhuwiex format tad-dejta. Il-biċċa l-kbira ta' l-iskemi XML injoraw b'mod espliċitu din id-distinzjoni, u jħawdu XML ma' format ta' data, li fl-aħħar mill-aħħar jirriżulta fi żball fl-għażla ta' XML għaliex huwa l-format tad-data li fil-fatt huwa meħtieġ.

Mingħajr ma jidħol f'ħafna dettall, XML huwa l-aktar adattat għall-annotazzjoni ta' blokki ta' test bi struttura u metadejta. Jekk l-għan ewlieni tiegħek huwa li ma taħdimx bi blokk ta 'test, l-għażla ta' XML x'aktarx li ma tkunx iġġustifikata.

Minn dan il-lat, hemm mod sempliċi biex tivverifika kemm l-iskema XML hija magħmula tajjeb. Ejja nieħdu bħala eżempju dokument fl-iskema maħsuba u neħħi t-tikketti u l-attributi kollha minnu. Jekk dak li fadal ma jagħmilx sens (jew jekk fadal linja vojta), allura jew l-iskema tiegħek mhix mibnija b'mod korrett jew sempliċement ma kellekx tuża XML.

Hawn taħt se nagħti xi wħud mill-aktar eżempji komuni ta 'ċirkwiti mibnija ħażin.

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

Hawnhekk naraw eżempju ta' tentattiv infondat u stramb (għalkemm komuni ħafna) biex jesprimi dizzjunarju sempliċi ta' valur ewlieni f'XML. Jekk tneħħi t-tikketti u l-attributi kollha, titħalla ringiela vojta. Essenzjalment, dan id-dokument huwa, ma jimpurtax kemm jista' jkun assurd, annotazzjoni semantika ta' linja vojta.

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

Biex tgħaxxaq, m'għandniex biss annotazzjoni semantika ta' spag vojta hawnhekk bħala mod stravaganti ta' kif tesprimi dizzjunarju - din id-darba d-"dizzjunarju" huwa kkodifikat direttament bħala attributi tal-element għerq. Dan jagħmel is-sett mogħti ta' ismijiet ta' attributi fuq element mhux definit u dinamiku. Barra minn hekk, juri li dak kollu li l-awtur verament ried jesprimi kien sintassi sempliċi ta 'valur ewlieni, iżda minflok ħa d-deċiżjoni assolutament stramba li japplika XML, u ġiegħel l-użu ta' element vojt wieħed sempliċement bħala prefiss biex juża sintassi tal-attribut. U niltaqa’ ma’ skemi bħal dawn spiss ħafna.

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

Din hija xi ħaġa aħjar, iżda issa għal xi raġuni ċ-ċwievet huma metadejta u l-valuri mhumiex. Ħarsa stramba ħafna lejn dizzjunarji. Jekk tneħħi t-tikketti u l-attributi kollha, nofs l-informazzjoni tintilef.

Espressjoni ta' dizzjunarju korretta fl-XML tkun tidher xi ħaġa bħal din:

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

Imma jekk in-nies ħadu d-deċiżjoni stramba li jużaw XML bħala format tad-dejta u mbagħad jużawh biex jorganizzaw vokabularju, allura għandhom jifhmu li dak li qed jagħmlu mhuwiex xieraq u mhux konvenjenti. Huwa wkoll komuni li d-disinjaturi jagħżlu bi żball XML biex joħolqu l-applikazzjonijiet tagħhom. Iżda saħansitra aktar ta 'spiss, jagħmlu l-affarijiet agħar billi jużaw bla sens XML f'waħda mill-forom deskritti hawn fuq, u jinjoraw il-fatt li XML sempliċement mhux adattat għal dan.

L-Agħar Skema XML? Mill-mod, il-premju għall l-agħar skema XML li qatt rajt, Ikseb il-format tal-fajl tal-konfigurazzjoni tal-provvista awtomatika għat-telefowns tat-telefonija IP Polycom. Fajls bħal dawn jeħtieġu tniżżil ta' fajls ta' rikjesta XML permezz ta' TFTP, li... B'mod ġenerali, hawn silta minn fajl wieħed bħal dan:

<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="..." />

Din mhix ċajta ħażina ta’ xi ħadd. U din mhix l-invenzjoni tiegħi:

  • elementi huma sempliċiment użati bħala prefiss biex iwaħħlu attributi, li huma stess għandhom ismijiet ġerarkiċi.
  • Jekk trid tassenja valuri għal każijiet multipli ta 'tip partikolari ta' rekord, trid tuża ismijiet ta 'attributi biex tagħmel dan. li għandhom indiċi.
  • Barra minn hekk, attributi li jibdew bi softkey., għandhom jitqiegħdu fuq elementi <softkey/>, attributi li jibdew bi feature., għandhom jitqiegħdu fuq elementi <feature/> eċċ., minkejja l-fatt li jidher kompletament bla bżonn u mal-ewwel daqqa t'għajn bla sens.
  • U fl-aħħarnett, kieku kont qed tittama li l-ewwel komponent ta 'isem attribut ikun dejjem l-istess bħall-isem tal-element - xejn bħal dan! Per eżempju, attributi up. trid tkun imwaħħla ma’ <userpreferences/>. L-ordni tat-twaħħil tal-ismijiet tal-attributi mal-elementi hija arbitrarja, kważi kompletament.

Dokumenti jew data. Kultant, xi ħadd jagħmel xi ħaġa kompletament stramba billi jipprova jqabbel XML u JSON—u b'hekk juri li lanqas ma jifhem. L-XML huwa lingwa tal-markup tad-dokumenti. JSON huwa format ta 'dejta strutturat, għalhekk it-tqabbil tagħhom ma' xulxin huwa simili li tipprova tqabbel sħun ma 'artab.

Il-kunċett tad-differenza bejn dokumenti u data. Bħala analogu ta 'XML, nistgħu kondizzjonalment nieħdu dokument li jinqara mill-magna. Għalkemm huwa maħsub biex jinqara mill-magna, jirreferi metaforikament għal dokumenti, u minn dan il-lat huwa fil-fatt komparabbli mad-dokumenti PDF, li ħafna drabi ma jinqrawx mill-magna.

Pereżempju, fl-XML l-ordni tal-elementi hija importanti. Iżda f'JSON, l-ordni tal-pari ewlenin-valur fi ħdan l-oġġetti hija bla sens u mhux definita. Jekk trid tikseb dizzjunarju mhux ordnat ta 'pari ewlenin-valur, l-ordni attwali li fiha l-elementi jidhru f'dak il-fajl ma jimpurtax. Imma tista 'tifforma ħafna tipi differenti ta' dejta minn din id-dejta. ta 'dokumenti, għax hemm ċertu ordni fid-dokument. Metaforikament, huwa analogu għal dokument fuq il-karta, għalkemm m'għandux dimensjonijiet fiżiċi, b'differenza minn fajl stampat jew PDF.

L-eżempju tiegħi ta 'rappreżentazzjoni xierqa tad-dizzjunarju XML juri l-ordni tal-elementi fid-dizzjunarju, għall-kuntrarju tar-rappreżentazzjoni JSON. Ma nistax ninjora din l-ordni: din il-linearità hija inerenti fil-mudell tad-dokument u l-format XML. Xi wħud jistgħu jagħżlu li jinjoraw l-ordni meta jinterpretaw dan id-dokument XML, iżda m'hemmx għalfejn jargumentaw dwar dan peress li l-kwistjoni hija lil hinn mill-ambitu ta 'diskussjoni tal-format innifsu. Barra minn hekk, jekk tagħmel id-dokument viżibbli fil-browser billi tehmeż karta tal-istil cascading miegħu, tara li l-elementi tad-dizzjunarju jidhru f'ċerta ordni u f'ebda oħra.

Fi kliem ieħor, dizzjunarju (biċċa data strutturata) jista 'jiġi kkonvertit fi n diversi dokumenti possibbli (fl-XML, PDF, karta, eċċ.), fejn n - in-numru ta 'kombinazzjonijiet possibbli ta' elementi fid-dizzjunarju, u għadna ma qisniex varjabbli oħra possibbli.

Madankollu, jirriżulta wkoll li jekk trid tittrasferixxi data biss, allura l-użu ta 'dokument li jinqara mill-magni għal dan ma jkunx effettiv. Juża mudell, li f'dan il-każ huwa superfluwu; se jfixkel biss. Barra minn hekk, sabiex tiġi estratta d-dejta tas-sors, ser ikollok bżonn tikteb programm. Qatt m'hemm l-ebda punt li tuża XML għal xi ħaġa li mhux se tkun ifformattjata bħala dokument f'xi punt (jiġifieri, billi tuża CSS jew XSLT, jew it-tnejn), peress li dik hija r-raġuni ewlenija (jekk mhux l-unika) biex tagħmel dan. għall-mudell tad-dokument.

Barra minn hekk, peress li XML m'għandu l-ebda kunċett ta 'numri (jew espressjonijiet Boolean, jew tipi oħra ta' dejta), in-numri kollha rappreżentati f'dan il-format huma kkunsidrati biss test addizzjonali. Biex tiġi estratta d-dejta, l-iskema u r-relazzjoni tagħha mad-dejta korrispondenti li qed tiġi espressa għandhom ikunu magħrufa. Trid tkun taf ukoll meta, abbażi tal-kuntest, element partikolari tat-test jirrappreżenta numru u għandu jiġi kkonvertit għal numru, eċċ.

Għalhekk, il-proċess ta 'estrazzjoni ta' data minn dokumenti XML mhuwiex daqshekk differenti mill-proċess ta 'rikonoxximent ta' dokumenti skennjati li fihom, pereżempju, tabelli li jiffurmaw ħafna paġni ta 'data numerika. Iva, huwa possibbli li tagħmel dan fil-prinċipju, iżda dan mhuwiex l-aktar mod ottimali, ħlief bħala l-aħħar għażla, meta ma jkun hemm assolutament l-ebda għażla oħra. Soluzzjoni raġonevoli hija li sempliċement issib kopja diġitali tad-dejta oriġinali li mhix inkorporata f'mudell ta' dokument li jgħaqqad id-dejta mar-rappreżentazzjoni testwali speċifika tagħha.

Cela dit, ma jissorprendi xejn li XML huwa popolari fin-negozju. Ir-raġuni għal dan hija preċiżament li l-format tad-dokument (fuq il-karta) jinftiehem u familjari għan-negozju, u jridu jkomplu jużaw mudell familjari u li jinftiehem. Għall-istess raġuni, in-negozji ħafna drabi jużaw dokumenti PDF minflok formati aktar li jinqraw mill-magni - minħabba li għadhom marbuta mal-kunċett ta 'paġna stampata b'daqs fiżiku speċifiku. Dan anke japplika għal dokumenti li x'aktarx li qatt ma jiġu stampati (pereżempju, PDF ta' 8000 paġna ta' dokumentazzjoni tar-reġistru). Minn dan il-lat, l-użu ta 'XML fin-negozju huwa essenzjalment manifestazzjoni ta' skeuomorphism. In-nies jifhmu l-idea metaforika ta 'paġna stampata ta' daqs limitat, u jifhmu kif joħolqu proċessi ta 'negozju bbażati fuq dokumenti stampati. Jekk dik hija l-gwida tiegħek, dokumenti mingħajr limitazzjonijiet tad-daqs fiżiku li jistgħu jinqraw mill-magni—dokumenti XML—jirrappreżentaw innovazzjoni filwaqt li jkunu kontroparti tad-dokument familjari u komdu. Dan ma jipprevjenix milli jibqgħu mod żbaljat u skewomorfiku żżejjed ta 'preżentazzjoni tad-dejta.

Sal-lum, l-uniċi skemi XML li naf li nista' verament insejjaħ użu validu tal-format huma XHTML u DocBook.

Sors: www.habr.com

Żid kumment