XML fẹrẹ jẹ ilokulo nigbagbogbo

XML fẹrẹ jẹ ilokulo nigbagbogbo
1996 ni a ṣẹda ede XML. Ko pẹ diẹ ti o han ju awọn iṣeeṣe ti ohun elo rẹ ti bẹrẹ lati ni oye, ati fun awọn idi ti wọn n gbiyanju lati mu u, kii ṣe yiyan ti o dara julọ.

Kii ṣe asọtẹlẹ lati sọ pe opo julọ ti awọn eto XML ti Mo ti rii jẹ aibojumu tabi awọn lilo ti ko tọ ti XML. Pẹlupẹlu, lilo XML yii ṣe afihan aiyede ipilẹ ti kini XML jẹ gbogbo nipa.

XML jẹ ede isamisi. Eyi kii ṣe ọna kika data. Pupọ julọ awọn ero XML ti foju fojufoda ni gbangba adayanri yii, daru XML pẹlu ọna kika data, eyiti o jẹ abajade ni aṣiṣe ni yiyan XML nitori pe o jẹ ọna kika data ti o nilo.

Laisi lilọ sinu alaye ti o pọ ju, XML dara julọ fun asọye awọn bulọọki ti ọrọ pẹlu eto ati metadata. Ti ibi-afẹde akọkọ rẹ kii ṣe lati ṣiṣẹ pẹlu bulọọki ọrọ, yiyan XML ko ṣeeṣe lati ni idalare.

Lati oju-ọna yii, ọna ti o rọrun wa lati ṣayẹwo bi o ṣe ṣe apẹrẹ XML daradara. Jẹ ki a mu bi apẹẹrẹ iwe-ipamọ kan ninu ero ti a pinnu ati yọ gbogbo awọn afi ati awọn abuda kuro ninu rẹ. Ti ohun ti o kù ko ba ni oye (tabi ti ila òfo ba wa), lẹhinna boya ero rẹ ko ni itumọ ti o tọ tabi o yẹ ki o ko ti lo XML nikan.

Ni isalẹ Emi yoo fun diẹ ninu awọn apẹẹrẹ ti o wọpọ julọ ti awọn iyika ti ko tọ.

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

Nibi a rii apẹẹrẹ ti ko ni ipilẹ ati ajeji (botilẹjẹpe o wọpọ pupọ) igbiyanju lati ṣafihan iwe-itumọ iye-bọtini ti o rọrun ni XML. Ti o ba yọ gbogbo awọn afi ati awọn abuda kuro, iwọ yoo fi silẹ pẹlu laini ofo. Ni pataki, iwe-ipamọ yii jẹ, laibikita bi o ṣe le dun to, asọye itumọ ti laini ofo.

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

Lati jẹ ki ọrọ buru si, a ko kan ni asọye atunmọ ti okun ṣofo nibi bi ọna abayọ kan ti sisọ iwe-itumọ kan - ni akoko yii “itumọ-itumọ” ti ni koodu taara bi awọn abuda ti ipilẹ ipilẹ. Eyi jẹ ki eto ti a fun ni awọn orukọ ikalara lori eroja aisọye ati agbara. Pẹlupẹlu, o fihan pe gbogbo onkọwe fẹ gaan lati ṣalaye jẹ sintasi iye-bọtini ti o rọrun, ṣugbọn dipo o ṣe ipinnu iyalẹnu lati lo XML, fi agbara mu lilo ohun elo kan ti o ṣofo nirọrun bi ìpele lati lo sintasi abuda. Ati pe Mo pade iru awọn eto yii nigbagbogbo.

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

Eyi jẹ nkan ti o dara julọ, ṣugbọn nisisiyi fun idi kan awọn bọtini jẹ metadata ati awọn iye kii ṣe. Wiwo ajeji pupọ si awọn iwe-itumọ. Ti o ba yọ gbogbo awọn afi ati awọn abuda kuro, idaji alaye naa yoo sọnu.

Ọrọ itumọ ti o pe ni XML yoo dabi nkan bayi:

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

Ṣugbọn ti awọn eniyan ba ti ṣe ipinnu ajeji lati lo XML gẹgẹbi ọna kika data ati lẹhinna lo lati ṣeto awọn ọrọ-ọrọ, lẹhinna wọn yẹ ki o loye pe ohun ti wọn n ṣe ko ṣe deede ati pe ko rọrun. O tun jẹ wọpọ fun awọn apẹẹrẹ lati ṣe aṣiṣe yan XML lati ṣẹda awọn ohun elo wọn. Ṣugbọn paapaa nigbagbogbo, wọn jẹ ki ọrọ buru si nipa lilo XML lainidi ni ọkan ninu awọn fọọmu ti a ṣalaye loke, aibikita ni otitọ pe XML kii ṣe deede fun eyi.

Eto XML ti o buru julọ bi? Nipa ona, awọn joju fun Eto XML ti o buru julọ ti Mo ti rii tẹlẹ, Ngba ọna kika faili iṣeto ipese ipese laifọwọyi fun awọn foonu tẹlifoonu Polycom IP. Iru awọn faili nilo igbasilẹ awọn faili ibeere XML nipasẹ TFTP, eyiti... Ni gbogbogbo, eyi ni yiyan lati iru faili kan:

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

Eyi kii ṣe awada buburu ẹnikan. Ati pe eyi kii ṣe ẹda mi:

  • Awọn eroja ni a lo nirọrun bi ìpele lati so awọn abuda pọ, eyiti funraawọn ni awọn orukọ akosoagbasomode.
  • Ti o ba fẹ fi awọn iye si awọn iṣẹlẹ pupọ ti iru igbasilẹ kan pato, o gbọdọ lo awọn orukọ abuda lati ṣe eyi. ti o ni awọn atọka.
  • Ni afikun, awọn eroja ti o bẹrẹ pẹlu softkey., gbọdọ wa ni gbe lori eroja <softkey/>, eroja ti o bere pẹlu feature., gbọdọ wa ni gbe lori eroja <feature/> ati be be lo, Bíótilẹ o daju wipe o wulẹ patapata kobojumu ati ni akọkọ kokan meaningless.
  • Ati nikẹhin, ti o ba nireti pe paati akọkọ ti orukọ abuda kan yoo jẹ kanna nigbagbogbo bi orukọ ano - ko si iru bẹ! Fun apẹẹrẹ, awọn eroja up. gbọdọ wa ni so si <userpreferences/>. Ilana ti so awọn orukọ ikalara si awọn eroja jẹ lainidii, o fẹrẹ jẹ patapata.

Awọn iwe aṣẹ tabi data. Ni gbogbo igba ni igba diẹ, ẹnikan ṣe nkan ti o jẹ ajeji patapata nipa igbiyanju lati ṣe afiwe XML ati JSON-ati bayi nfihan pe wọn ko loye boya. XML jẹ ede isamisi iwe. JSON jẹ ọna kika data ti a ṣeto, nitorinaa ifiwera wọn si ara wọn dabi igbiyanju lati ṣe afiwe gbona pẹlu asọ.

Awọn Erongba ti awọn iyato laarin awọn iwe aṣẹ ati data. Gẹgẹbi afọwọṣe ti XML, a le gba iwe-ipamọ ẹrọ kan ni majemu. Botilẹjẹpe o pinnu lati jẹ kika ẹrọ, o tọka si ni afiwe si awọn iwe aṣẹ, ati lati aaye yii jẹ afiwera gangan si awọn iwe aṣẹ PDF, eyiti kii ṣe kika ẹrọ nigbagbogbo.

Fun apẹẹrẹ, ni XML aṣẹ ti awọn eroja ṣe pataki. Ṣugbọn ni JSON, aṣẹ ti awọn orisii iye bọtini laarin awọn nkan jẹ asan ati aisọye. Ti o ba fẹ gba iwe-itumọ ti a ko paṣẹ ti awọn orisii iye bọtini, ilana gangan ninu eyiti awọn eroja ti han ninu faili yẹn ko ṣe pataki. Ṣugbọn o le ṣe ọpọlọpọ awọn oriṣiriṣi oriṣiriṣi data lati inu data yii. ti awọn iwe aṣẹ, nitori aṣẹ kan wa ninu iwe-ipamọ naa. Metaphorically, o jẹ afiwera si iwe-ipamọ lori iwe, botilẹjẹpe ko ni awọn iwọn ti ara, ko dabi titẹ sita tabi faili PDF.

Apeere mi ti aṣoju iwe-itumọ XML to tọ fihan ilana ti awọn eroja inu iwe-itumọ, ni idakeji si aṣoju JSON. Nko le foju pase yi: laini ila yi je atorunwa ninu awoṣe iwe ati kika XML. Diẹ ninu awọn le yan lati foju pa aṣẹ naa nigbati wọn ba tumọ iwe XML yii, ṣugbọn ko si aaye ni jiyàn nipa eyi nitori ọran naa ti kọja ipari ti ijiroro ti ọna kika funrararẹ. Pẹlupẹlu, ti o ba jẹ ki iwe wiwo han ninu ẹrọ aṣawakiri nipasẹ sisopọ iwe ara cascading kan, iwọ yoo rii pe awọn eroja iwe-itumọ han ni aṣẹ kan ati pe ko si miiran.

Ni awọn ọrọ miiran, iwe-itumọ kan (nkan ti data eleto) le ṣe iyipada sinu n orisirisi awọn iwe aṣẹ ti o ṣeeṣe (ni XML, PDF, iwe, bbl), nibo n - awọn nọmba ti ṣee ṣe awọn akojọpọ ti eroja ni dictionary, ati awọn ti a ti ko sibẹsibẹ ya sinu iroyin miiran ṣee ṣe oniyipada.

Sibẹsibẹ, o tun tẹle pe ti o ba fẹ gbe data nikan, lẹhinna lilo iwe-ipamọ ẹrọ-ẹrọ fun eyi kii yoo munadoko. O nlo awoṣe kan, eyiti ninu ọran yii jẹ superfluous; yoo gba ni ọna nikan. Ni afikun, lati le jade data orisun, iwọ yoo nilo lati kọ eto kan. Ko si aaye eyikeyi ni lilo XML fun nkan ti kii yoo ṣe ọna kika bi iwe ni aaye kan (sọ, lilo CSS tabi XSLT, tabi mejeeji), nitori iyẹn ni akọkọ (ti kii ba ṣe nikan) idi fun ṣiṣe bẹ. si awoṣe iwe.

Pẹlupẹlu, niwon XML ko ni ero ti awọn nọmba (tabi awọn ọrọ Boolean, tabi awọn iru data miiran), gbogbo awọn nọmba ti o wa ni ipoduduro ni ọna kika yii ni a kà si ọrọ afikun nikan. Lati jade data jade, ero ati ibatan rẹ si data ti o baamu ti n ṣalaye gbọdọ jẹ mimọ. O tun nilo lati mọ nigbati, da lori ọrọ-ọrọ, ọrọ ọrọ kan pato duro fun nọmba kan ati pe o yẹ ki o yipada si nọmba kan, ati bẹbẹ lọ.

Bayi, ilana ti yiyo data lati awọn iwe XML ko yatọ si ilana ti idanimọ awọn iwe aṣẹ ti a ṣayẹwo ti o ni, fun apẹẹrẹ, awọn tabili ti o n ṣe ọpọlọpọ awọn oju-iwe ti data nọmba. Bẹẹni, o ṣee ṣe lati ṣe eyi ni ipilẹ, ṣugbọn eyi kii ṣe ọna ti o dara julọ, ayafi bi ohun asegbeyin ti, nigbati ko si awọn aṣayan miiran rara. Ojutu ti o ni oye ni lati wa ẹda oni-nọmba kan ti data atilẹba ti ko ṣe ifibọ sinu awoṣe iwe kan ti o ṣajọpọ data naa pẹlu aṣoju ọrọ kan pato.

Iyẹn ni, ko ṣe ohun iyanu fun mi rara pe XML jẹ olokiki ni iṣowo. Awọn idi fun eyi ni gbọgán wipe iwe kika (lori iwe) ni oye ati ki o faramọ si owo, ati awọn ti wọn fẹ lati tesiwaju a lilo faramọ ati ki o yeye awoṣe. Fun idi kanna, awọn iṣowo nigbagbogbo lo awọn iwe aṣẹ PDF dipo awọn ọna kika ẹrọ diẹ sii - nitori wọn tun so mọ ero oju-iwe ti a tẹjade pẹlu iwọn ti ara kan pato. Eyi paapaa kan awọn iwe aṣẹ ti ko ṣee ṣe lati tẹjade (fun apẹẹrẹ, PDF oju-iwe 8000 ti awọn iwe iforukọsilẹ). Lati oju-ọna yii, lilo XML ni iṣowo jẹ pataki ifarahan ti skeuomorphism. Awọn eniyan loye imọran apẹrẹ ti oju-iwe ti a tẹjade ti iwọn to lopin, ati pe wọn loye bi o ṣe le ṣẹda awọn ilana iṣowo ti o da lori awọn iwe aṣẹ ti a tẹjade. Ti iyẹn ba jẹ itọsọna rẹ, awọn iwe aṣẹ laisi awọn idiwọn iwọn ti ara ti o jẹ ẹrọ-ṣeeṣe — awọn iwe aṣẹ XML - ṣe aṣoju ĭdàsĭlẹ lakoko ti o jẹ ẹlẹgbẹ iwe-itumọ ti o faramọ ati itunu. Eyi ko ṣe idiwọ fun wọn lati jẹ aṣiṣe ati ọna skeuomorphic aṣeju ti iṣafihan data.

Titi di oni, awọn ero XML nikan ti Mo mọ pe MO le pe nitootọ lilo ọna kika to wulo jẹ XHTML ati DocBook.

orisun: www.habr.com

Fi ọrọìwòye kun