XML hema hema her gav xelet tê bikar anîn

XML hema hema her gav xelet tê bikar anîn
Zimanê XML di sala 1996 de hate îcadkirin. Ji zû de xuya nedikir ku îmkanên serîlêdana wê jixwe dest bi xelet famkirinê kiribûn, û ji bo mebestên ku wan hewl dida ku wê adapte bike, ew ne bijareya çêtirîn bû.

Ne mubalexe ye ku mirov bibêje ku pirraniya şemayên XML-ê yên ku min dîtiye karanîna XML-ê neguncayî an nerast bûn. Wekî din, ev karanîna XML-ê têgihîştina bingehîn a ku XML li ser çi bû destnîşan kir.

XML zimanek nîşankirinê ye. Ev ne formatek daneyê ye. Piraniya şemayên XML bi eşkereyî vê cihêrengiyê paşguh kirine, XML bi formatek daneyê re tevlihev dikin, ku di dawiyê de di hilbijartina XML de xeletiyek çêdibe ji ber ku ew formata daneyê ye ku bi rastî hewce ye.

Bêyî ku meriv pir hûrgulî bike, XML ji bo şîrovekirina blokên nivîsê yên bi avahî û metadata çêtirîn e. Ger armanca weya sereke ne ew e ku hûn bi bloka nivîsê re bixebitin, hilbijartina XML ne gengaz e ku rastdar be.

Ji vî alî ve, rêgezek hêsan heye ku meriv kontrol bike ka şemaya XML çiqas baş hatî çêkirin. Werin em wekî mînakek belgeyek di şemaya armanckirî de bigirin û hemî nîşan û taybetmendiyên jê derxin. Ger tiştê ku maye ne watedar be (an ger xêzek vala bimîne), wê hingê an şemaya we rast nehatiye çêkirin an jî we bi hêsanî XML bikar neaniye.

Li jêr ez ê hin mînakên herî gelemperî yên çerxên ku bi xeletî hatine çêkirin bidim.

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

Li vir em mînakek hewildanek bêbingeh û xerîb (her çend pir gelemperî) dibînin ku ferhengek nirx-kilît a hêsan di XML de îfade dike. Ger hûn hemî etîket û taybetmendiyan rakin, hûn ê bi rêzek vala bimînin. Di eslê xwe de, ev belge, çiqas bêaqil be jî, annotasyonek semantîk a rêzek vala ye.

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

Ji bo ku rewş xirabtir bibe, em li vir tenê şîroveyek semantîkî ya rêzek vala nînin wekî rêyek zêde ya derbirîna ferhengê - vê carê "ferheng" rasterast wekî taybetmendiyên hêmana bingehîn tê kod kirin. Ev komek navên taybetmendiyê yên li ser hêmanek nenas û dînamîkî dike. Wekî din, ew destnîşan dike ku hemî nivîskarê ku bi rastî dixwest îfade bike hevoksaziyek kilît-nirxa hêsan bû, lê li şûna wî biryarek bêkêmasî ya ecêb da ku XML bicîh bîne, zorê dide ku hêmanek vala tenê tenê wekî pêşgirek bikar bîne da ku hevoksaziya taybetmendiyê bikar bîne. Û ez pir caran rastî planên weha tê.

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

Ev tiştek çêtir e, lê naha ji ber hin sedeman kilît metadata ne û nirx ne. Nêrînek pir ecêb li ferhengan. Ger hûn hemî tag û taybetmendiyan rakin, nîvê agahdarî dê winda bibe.

Gotinek ferhengek rast a di XML de dê mîna vî xuya bike:

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

Lê heke mirovan biryara xerîb da ku XML wekî formatek daneyê bikar bînin û dûv re wê bikar bînin da ku peyvek organîze bikin, wê hingê divê ew fêm bikin ku ya ku ew dikin negunca ye û ne rehet e. Her weha gelemperî ye ku sêwiraner bi xeletî XML hilbijêrin da ku serîlêdanên xwe biafirînin. Lê hê pir caran, ew bi karanîna bêwate ya XML-ê di yek ji wan formên ku li jor hatine destnîşan kirin de, rewşê xirabtir dikin, ji ber çavê xwe nadin ku XML bi tenê ji bo vê yekê ne maqûl e.

Schema XML ya herî xirab? Bi awayê, xelata ji bo şemaya XML ya herî xirab a ku min dîtiye, Ji bo têlefonên têlefoniya IP-ya Polycom forma pelê veavakirina dabînkirina otomatîkî werdigire. Pelên weha hewce dike ku pelên daxwaza XML bi riya TFTP dakêşin, ku ... Bi gelemperî, li vir veqetandek ji pelek weha heye:

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

Ev ne heneka xerab a kesekî ye. Û ev ne dahênana min e:

  • hêman bi tenê wekî pêşgirek têne bikar anîn da ku taybetmendiyên ku bi xwe navên hiyerarşîk hene ve girêbidin.
  • Heke hûn dixwazin nirxan li gelek mînakên celebek tomarek taybetî bidin, divê hûn navên taybetmendiyê bikar bînin ku vê bikin. ku index hene.
  • Wekî din, taybetmendiyên ku bi dest pê dikin softkey., divê li ser hêmanan were danîn <softkey/>, taybetmendiyên ku bi dest pê dikin feature., divê li ser hêmanan were danîn <feature/> hwd., tevî wê yekê ku ew bi tevahî nepêwist û di nihêrîna pêşîn de bêwate xuya dike.
  • Û di dawiyê de, heke we hêvî dikir ku beşa yekem a navek taybetmendiyê dê her gav wekî navê elementê be - tiştek wusa tune! Mînakî, taybetmendî up. divê were girêdan <userpreferences/>. Rêza girêdana navên taybetmendiyê bi hêmanan re kêfî ye, hema hema bi tevahî.

Belge an dane. Her carê, kesek tiştek bi tevahî xerîb dike û hewl dide ku XML û JSON berhev bike - û bi vî rengî nîşan dide ku ew jî fam nakin. XML zimanek nîşankirina belgeyê ye. JSON formatek daneya birêkûpêk e, ji ber vê yekê berhevdana wan bi hev re mîna hewldana berhevkirina germ û nerm e.

Têgeha cudahiya di navbera belge û dane. Wekî analogek XML-ê, em dikarin bi şertê belgeyek ku ji hêla makîneyê ve tê xwendin bistînin. Her çend tê mebest kirin ku ew bi makîneyê were xwendin jî, ew bi mecazî ji belgeyan re vedibêje, û ji vî alî ve bi rastî bi belgeyên PDF-ê re, yên ku pir caran bi makîneyê nayên xwendin, têne berhev kirin.

Mînakî, di XML de rêza hêmanan girîng e. Lê di JSON de, rêza cotên key-nirxê di hundurê tiştan de bêwate û ne diyar e. Heke hûn dixwazin ferhengek ne rêzkirî ya cotên key-nirxê bistînin, rêza rastîn a ku hêmanên di wê pelê de xuya dibin ne girîng e. Lê hûn dikarin ji van daneyan gelek celeb daneyên cûda ava bikin. belgeyên, ji ber ku di belgeyê de rêzikek diyar heye. Ji hêla metaforîkî ve, ew bi belgeyek li ser kaxezê re analog e, her çend ew xwedan pîvanên laşî ne, berevajî çapek an pelek PDF-ê.

Nimûneya min a nûneriya ferhengek XML ya rast rêza hêmanên di ferhengê de, li hember nûnertiya JSON nîşan dide. Ez nikarim vê rêzê paşguh bikim: ev rêzik di modela belgeyê û formata XML de xwerû ye. Dibe ku hin kes dema şîrovekirina vê belgeya XML-ê ji rêzê paşguh bikin, lê ti wateya nîqaşê li ser vê yekê tune ji ber ku mijar ji çarçoweya nîqaşa formatê bixwe ye. Wekî din, heke hûn belgeyê di gerokê de bi pêvekirina şêwazek kaskadadî bi wê ve girêbidin, hûn ê bibînin ku hêmanên ferhengê bi rêzek diyar têne xuyang kirin û bi rengek din xuya nakin.

Bi gotineke din, ferhengek (parçeyek daneyên sazkirî) dikare were veguheztin n belgeyên cûda yên gengaz (di XML, PDF, kaxez, hwd.), li ku derê n - Di ferhengê de hejmara berhevokên gengaz ên hêmanan, û me hêj guhêrbarên din ên gengaz li ber çavan negirtiye.

Lêbelê, ev jî wiha ye ku heke hûn dixwazin tenê daneyan veguhezînin, wê hingê karanîna belgeyek makîne-xwendina ji bo vê yekê dê ne bandor be. Ew modelek bikar tîne, ku di vê rewşê de zêde ye, ew ê tenê rê li ber bigire. Wekî din, ji bo derxistina daneyên çavkaniyê, hûn ê hewce ne ku bernameyek binivîsin. Ji bo tiştek ku dê di hin xalan de wekî belgeyek neyê format kirin (bibêjin, CSS an XSLT, an jî herduyan) bi kar tîne, ji ber ku ew sedema bingehîn (heke ne tenê) ye ku meriv wiya bikar bîne ji bo modela belgeyê.

Wekî din, ji ber ku XML têgehek jimareyan (an îfadeyên Boolean, an celebên din ên daneyê) tune ye, hemî hejmarên ku di vê formatê de têne temsîl kirin tenê nivîsek zêde têne hesibandin. Ji bo derxistina daneyan, divê şema û têkiliya wê ya bi daneyên têkildar ên ku têne diyar kirin re were zanîn. Her weha hûn hewce ne ku hûn zanibin kengê, li ser bingehê, hêmanek nivîsê ya taybetî hejmarek temsîl dike û divê were veguheztin hejmarek, hwd.

Ji ber vê yekê, pêvajoya derxistina daneyan ji belgeyên XML ne ew qas cûda ye ji pêvajoya naskirina belgeyên pîvazkirî yên ku, mînakî, tabloyên ku gelek rûpelên daneyên hejmarî pêk tînin hene. Erê, ev di prensîbê de gengaz e, lê ev ne awayê herî çêtirîn e, ji bilî wekî çareya paşîn, dema ku bê guman vebijarkên din tune. Çareseriyek maqûl ev e ku meriv bi hêsanî kopiyek dîjîtal a daneya orîjînal a ku di modelek belgeyê de ku daneyan bi nûnertiya xweya nivîsê ya taybetî re hevûdu dike ve negirtî, bibîne.

Wisa got, ez qet şaş nakim ku XML di karsaziyê de populer e. Sedema vê yekê bi rastî ev e ku forma belgeyê (li ser kaxezê) ji karsaziyê re tê fêm kirin û nas e, û ew dixwazin berdewam bikin ku modelek naskirî û têgihîştî bikar bînin. Ji ber heman sedemê, karsazî pir caran belgeyên PDF-ê li şûna bêtir formên ku ji hêla makîneyê ve têne xwendin bikar tînin - ji ber ku ew hîn jî bi têgeha rûpelek çapkirî ya bi pîvanek laşî ya taybetî ve girêdayî ne. Ev tewra ji bo belgeyên ku ne mimkûn e ku qet werin çap kirin jî derbas dibe (mînak, PDFek 8000-rûpelî ya belgeya qeydê). Ji vî alî ve, karanîna XML-ê di karsaziyê de bi bingehîn diyardeyek skeuomorphîzmê ye. Mirov ramana mecazî ya rûpelek çapkirî ya bi qebareya tixûbdar fam dike, û ew fam dikin ka meriv çawa li ser bingeha belgeyên çapkirî pêvajoyên karsaziyê diafirîne. Ger ew rêberê we be, belgeyên bêyî tixûbên mezinahiya laşî yên ku ji hêla makîneyê ve têne xwendin-belgeyên XML- nûbûniyê temsîl dikin dema ku hevalbendek belgeyek naskirî û rehet in. Ev rê li ber wan nagire ku rêyek nerast û zêde şikbar a pêşkêşkirina daneyan bimînin.

Heya nuha, tenê nexşeyên XML-ê yên ku ez pê dizanim ku ez bi rastî bikarim bi karanîna rastdar a formatê bi nav bikim XHTML û DocBook in.

Source: www.habr.com

Add a comment