Maelezo ya lebo za xml. "8. XML inapaswa kuwa rasmi na mafupi." Anza kuunda faili ya XML

Mnamo 1986, muda mrefu kabla ya wazo la kuunda Wavuti kutekelezwa, lugha sanifu ya sanifu ya SGML ( Sanifu ya Jumla Lugha ya Alama ) iliidhinishwa kama kiwango cha kimataifa(ISO 8879) fafanuzi za lugha za kutambulisha, ingawa SGML imekuwapo tangu mwishoni mwa miaka ya sitini. Ilitumika kuelezea lugha za alama huku ikiruhusu mwandishi kutoa ufafanuzi rasmi kwa kila kipengele na sifa ya lugha.

HTML awali ilikuwa moja tu ya programu za SGML. Alielezea sheria ambazo habari inapaswa kutayarishwa Ulimwenguni Pote Mtandao. Hivyo, Lugha ya HTML ni seti ya taarifa za SGML zilizoundwa kama ufafanuzi wa aina ya hati(DTD), ikieleza ni nini hasa vitambulisho na vipengele vinawakilisha. Schema ya HTML DTD imehifadhiwa kwenye kivinjari cha wavuti.

Ubaya wa lugha ya HTML ni pamoja na yafuatayo:

  • HTML ina seti zisizobadilika za vitambulisho. Huwezi kuunda lebo zako ambazo zinaeleweka kwa watumiaji wengine.
  • HTML ni ya kipekee teknolojia ya uwasilishaji wa data. HTML haibebi habari kuhusu maana ya maudhui yaliyomo kwenye lebo.
  • HTML - ulimi "gorofa".. Umuhimu wa vitambulisho haujafafanuliwa ndani yake, kwa hivyo haiwezi kutumika kuelezea safu ya data.
  • Vivinjari hutumiwa kama jukwaa la programu. HTML haina nguvu ya kutosha kuunda programu za wavuti katika kiwango ambacho wasanidi wa wavuti wanajitahidi kwa sasa. Kwa mfano, haiwezekani kuendeleza programu katika HTML kwa usindikaji wa kitaalamu na kutafuta hati.
  • Idadi kubwa ya trafiki ya mtandao. HTML iliyopo-hati zinazotumika kama programu kupakia mtandao kupita kiasi kiasi kikubwa trafiki katika mifumo ya seva ya mteja. Mfano utakuwa kutuma hati kubwa kwenye mtandao wakati kinachohitajika ni sehemu ndogo hati hii.

Kwa hivyo, kwa upande mmoja, lugha ya HTML ni njia rahisi sana ya kuashiria hati za matumizi kwenye Wavuti, na kwa upande mwingine, hati iliyowekwa alama katika HTML ina habari kidogo juu ya yaliyomo. Ikiwa hati fulani ina taarifa kamili ya kutosha kuhusu maudhui yake, inawezekana kufanya usindikaji wa jumla wa kiotomatiki na kutafuta katika faili inayohifadhi hati kwa urahisi. SGML hukuruhusu kuhifadhi taarifa kuhusu maudhui ya hati, lakini kutokana na uchangamano wake, haijawahi kutumika kwa upana kama HTML.

Kundi la wataalam wa SGML, wakiongozwa na Jon Bosak wa Sun Microsystems, walianza kazi ya kuunda kitengo kidogo cha SGML ambacho kinaweza kupitishwa na jumuiya ya Wavuti. Iliamuliwa kuondoa vipengele vingi visivyo muhimu vya SGML. Lugha iliyojengwa upya kwa njia hii iliitwa XML. Toleo lililorahisishwa lilionekana kufikiwa kwa kiasi kikubwa zaidi kuliko la awali, huku vipimo vyake vikiwa na kurasa 26 pekee, ikilinganishwa na zaidi ya kurasa 500 za vipimo vya SGML.

Hebu tuangalie kwa karibu muundo na vipengele vya lugha hii.

XML (Lugha ya Alama ya eXtensible)- W3C ilipendekeza lugha ya ghafi. XML- umbizo la maandishi, iliyoundwa kwa ajili ya kuhifadhi data iliyopangwa, kwa kubadilishana habari kati ya programu, na pia kwa ajili ya kuunda lugha maalum za markup kulingana na hilo. XML ni sehemu ndogo iliyorahisishwa ya lugha ya SGML.

Lugha ya XML ina yafuatayo heshima:

  • Huu ni umbizo la hati lenye mwelekeo wa kibinadamu, linaeleweka kwa wanadamu na kompyuta.
  • Inasaidia Unicode.
  • KATIKA Umbizo la XML Miundo ya msingi ya data kama vile rekodi, orodha na miti inaweza kuelezewa.
  • Ni umbizo la kujiandikisha linaloeleza muundo na majina ya sehemu pamoja na thamani za sehemu.
  • Imefafanua mahitaji ya sintaksia na uchanganuzi madhubuti, ambayo huiruhusu kubaki rahisi, bora na thabiti.
  • Inatumika sana kwa kuhifadhi na usindikaji wa hati;
  • Huu ni muundo unaozingatia viwango vya kimataifa;
  • Muundo wa kihierarkia wa XML unafaa kwa kuelezea karibu aina yoyote ya hati;
  • Ni maandishi rahisi, yasiyo na leseni na vikwazo vyovyote;
  • Jukwaa la kujitegemea;
  • Ni sehemu ndogo ya SGML, ambayo uzoefu wa kina umekusanywa na programu maalum zimeundwa;

Kwa maarufu mapungufu Lugha ni pamoja na zifuatazo:

  • Sintaksia ya XML haitumiki tena.
    • Saizi ya hati ya XML ni kubwa zaidi kuliko uwasilishaji wa data ya binary sawa (takriban mara 10).
    • Saizi ya hati ya XML ni kubwa zaidi kuliko hati iliyo katika miundo mbadala ya uhamishaji data ya maandishi (kwa mfano JSON, YAML) na haswa katika fomati za data zilizoboreshwa kwa kesi mahususi ya utumiaji.
    • Upungufu wa XML unaweza kuathiri utendakazi wa programu. Gharama ya kuhifadhi, usindikaji na kusambaza data inaongezeka.
    • Kwa kiasi kikubwa kazi hazihitaji nguvu kamili ya sintaksia ya XML, na suluhu rahisi zaidi na zenye utendaji zaidi zinaweza kutumika.
  • Nafasi za majina za XML ni ngumu kutumia na ni ngumu kutekeleza katika vichanganuzi vya XML.
  • XML haina usaidizi wa aina ya data uliojumuishwa katika lugha. Haina dhana ya "integers", "strings", "tarehe", " maadili ya boolean" na kadhalika.
  • Mfano wa kihierarkia data Ofa za XML ni chache ikilinganishwa na mfano wa uhusiano na grafu zenye mwelekeo wa kitu.

Kwa ujumla, XML inaweza kuzingatiwa kama zaidi ya tu lugha mpya markup, lakini pia kama msingi wa familia nzima ya teknolojia:

Jedwali 9.1. Muundo wa Familia wa XML
XML Ushauri wa kiufundi juu ya kutumia XML
DTD Ufafanuzi wa aina ya hati (schema)
XDR Umbizo la XML Imepunguzwa (Mchoro wa Microsoft )
XSD Kufafanua Schema ya XML (W3C Schema)
Nafasi ya majina Mbinu ya kufafanua vipengele na majina ya sifa
XPath Lugha ya Njia ya XML
XLink Lugha ya Kiungo cha XML
XPointer Lugha ya Kielekezi cha XML
DOM API ya mfano wa kitu hati
SAX API rahisi ya XML
XSL Inaweza kupanuka lugha ya karatasi ya mtindo
XSL-FO Vipengee vya Uumbizaji XSL
XSLT Lugha ya mabadiliko XSL
XNi pamoja na XML Jumuisha Sintaksia

XML (Lugha ya Kuweka Alama Inayoongezwa) ni lugha mpya ya kuweka alama kwenye hati inayotokana na SGML ambayo hukuruhusu kupanga taarifa za aina mbalimbali kwa kutumia seti ya maagizo ya kiholela. Watengenezaji wa programu za Intaneti wanaojaribu kutumia teknolojia mpya kimatendo wanaweza kupendezwa na maswali mahususi yanayohusiana na matatizo ya kuunda, kuchakata hati za XML, na kuzionyesha kwa upande wa mteja. Nakala hii inatoa wazo fupi la hati ya XML ni nini na kwa nini inahitajika, na inaonyesha kwa mifano ya vitendo rahisi, lakini hadi sasa, kwa bahati mbaya, mifumo iliyoelezewa kidogo ya kuichakata.

XML ni nini

Leo, XML inaweza kutumika katika programu yoyote inayohitaji maelezo yaliyopangwa - kutoka kwa geo changamano mifumo ya habari, yenye kiasi kikubwa cha taarifa zinazotumwa kwa programu za kawaida za "kompyuta moja" zinazotumia lugha hii kuelezea maelezo ya huduma. Kuangalia kwa karibu mazingira yetu ulimwengu wa habari Kuna kazi nyingi zinazohusiana na uundaji na usindikaji wa habari iliyopangwa ambayo XML inaweza kutumika kutatua:

  • Kwanza kabisa, teknolojia hii inaweza kuwa muhimu kwa watengenezaji wa mifumo changamano ya habari, na kiasi kikubwa maombi yanayounganishwa na mtiririko wa habari wa miundo mbalimbali. Katika hilo kesi XML- hati zina jukumu umbizo zima kubadilishana habari kati ya vipengele tofauti programu kubwa.
  • XML ndicho kiwango cha msingi cha lugha mpya ya maelezo ya rasilimali, RDF, ambayo hurahisisha matatizo mengi kwenye Wavuti yanayohusishwa na kutafuta taarifa sahihi, kutoa udhibiti wa maudhui ya rasilimali za mtandao, kuunda maktaba za kidijitali, n.k.
  • XML hukuruhusu kuelezea data aina ya kiholela na hutumika kuwakilisha taarifa maalum, kama vile kemikali, hisabati, fomula za kimwili, maagizo ya matibabu, nukuu za muziki, n.k. Hii ina maana kwamba XML inaweza kutumika kama kijalizo chenye nguvu cha HTML kwa kusambaza taarifa "zisizo za kawaida" kwenye Wavuti. Labda katika siku za usoni, XML itachukua nafasi ya HTML kabisa, angalau majaribio ya kwanza ya kujumuisha lugha hizi mbili tayari yanafanywa (maalum).
  • Hati za XML zinaweza kutumika kama umbizo la data la kati katika mifumo ya viwango vitatu. Kwa kawaida, muundo wa mwingiliano kati ya programu na seva za hifadhidata hutegemea DBMS mahususi na lahaja ya SQL inayotumiwa kufikia data. Ikiwa matokeo ya swali yanawasilishwa kwa ulimwengu umbizo la maandishi, kisha kiungo cha DBMS, kwa hivyo, kitakuwa "wazi" kwa programu. Kwa kuongezea, leo W3C imependekeza uainishaji wa lugha mpya ya swala ya hifadhidata, XQL, ambayo katika siku zijazo inaweza kuwa mbadala wa SQL.
  • Taarifa iliyo katika hati za XML inaweza kurekebishwa, kutumwa kwa mashine ya mteja, na kusasishwa kwa sehemu. Vipimo vya XLink na Xpointer vinavyotengenezwa vitawezesha kurejelea vipengele vya mtu binafsi vya hati, kwa kuzingatia thamani zao za kiota na sifa.
  • Kutumia laha za mitindo (XSL) hukuruhusu kutoa onyesho la hati za XML bila kifaa-towe.
  • XML inaweza kutumika katika maombi ya kawaida kwa kuhifadhi na kuchakata data iliyopangwa katika umbizo lililounganishwa.

Hati ya XML ni ya kawaida faili ya maandishi, ambayo, kwa kutumia alama maalum, vipengele vya data huundwa, mlolongo na kiota ambacho huamua muundo wa hati na maudhui yake. Faida kuu ya hati za XML ni kwamba kwa njia rahisi ya uundaji na usindikaji (maandishi wazi yanaweza kuhaririwa na kichakataji chochote cha majaribio na kusindika na vichanganuzi vya kawaida vya XML), hukuruhusu kuunda habari iliyoundwa ambayo "inaeleweka" vyema na kompyuta. .

Jinsi ya kuunda hati ya XML?

Kwa Uundaji wa XML Katika kesi rahisi zaidi, hutahitaji chochote isipokuwa mhariri wa maandishi ya kawaida (kulingana na wabunifu wengi wa Mtandao, chombo bora cha kuunda kurasa za Wavuti). Hapa kuna mfano wa hati ndogo ya XML inayotumika badala ya daftari la kawaida:

Mkutano wa biashara muhimu Tunahitaji kukutana na Ivan Ivanovich baada ya kumpigia simu 123-12-12 ... Piga simu nyumbani 124-13-13

Wakati wa kuunda lugha yako ya markup, unaweza kuja na majina yoyote ya vipengele (karibu yoyote, kwa kuwa orodha ya wahusika halali ni mdogo na imetolewa katika ), sambamba na mazingira ya matumizi yao. Mfano wetu unaonyesha moja tu ya njia nyingi za kuunda muundo wa diary. Huu ni kubadilika na upanuzi wa lugha zinazotokana na XML - zinaundwa na msanidi programu "kwenye kuruka", kulingana na maoni yake juu ya muundo wa hati, na kisha inaweza kutumika na watazamaji wa ulimwengu wote pamoja na XML nyingine yoyote. -lugha zinazotokana, kwa sababu habari zote muhimu kwa uchanganuzi zimo ndani ya hati.

Wakati wa kuunda muundo mpya, ni muhimu kuzingatia ukweli kwamba hakuna hati "zilizoandikwa katika XML" kimsingi - kwa hali yoyote, waandishi wa hati hiyo kwa markup yake hutumia lugha kulingana na kiwango cha XML ( lugha inayoitwa XML-derived), lakini sio XML yenyewe. Kwa hivyo, wakati wa kuhifadhi faili iliyoundwa, unaweza kuchagua ugani unaofaa kwa jina (kwa mfano, noteML).

XML inaweza kutumika na wewe kuunda hati za aina maalum na muundo unaohitajika kwa programu mahususi. Walakini, ikiwa wigo wa lugha unageuka kuwa pana wa kutosha na inaanza kupendeza idadi kubwa ya watengenezaji, basi maelezo yake yanaweza kuwasilishwa kwa kuzingatia W3C na, baada ya makubaliano na pande zote zinazohusika, kupitishwa. na muungano kama pendekezo rasmi.

Ikumbukwe kwamba mchakato wa kuibuka specifikationer mpya ndefu sana na ngumu. Hati yoyote iliyopendekezwa na W3C inapitia hatua kadhaa kabla ya kuwa kiwango. Kwanza, matakwa na mapendekezo yanayotoka kwa makampuni mbalimbali yanayoshiriki katika maendeleo yake yanafanywa rasmi kwa namna ya maelezo yaliyozingatiwa, aina ya itifaki ya nia. Taarifa zilizomo katika hati kama hizi zinakusudiwa kujadiliwa na wanachama wa muungano pekee na hakuna hakikisho linalotolewa kwamba maoni haya yatakuwa mapendekezo.

Hatua inayofuata ya uendelezaji wa hati ni toleo la kazi la vipimo, ambalo linakusanywa na kurekebishwa na kikundi maalum cha kufanya kazi (Kikundi cha Kazi), ambacho kinajumuisha wawakilishi wa makampuni yanayopenda wazo hilo. Mabadiliko yote yaliyofanywa kwa hati hii lazima yamechapishwa kwenye seva ya muungano www.w3.org na hadi toleo la kufanya kazi liwe pendekezo, linaweza kutumika kama "nyota inayoongoza" kwa watengenezaji, ambayo kampuni inaweza kuangalia mipango yake, lakini. haipaswi kutumiwa katika ukuzaji wa programu.

Katika tukio ambalo vyama vimekubaliana juu ya masuala yote kuu na mabadiliko muhimu zaidi yanafanywa kwa hati, toleo la kazi linakuwa Pendekezo Lililopendekezwa na baada ya kupiga kura na wanachama. kikundi cha kazi inaweza kuwa tayari kuwa Pendekezo Rasmi la W3C, ambalo kwa hali inalingana na kiwango katika WWW.

Jenereta za XML

Hati za XML zinaweza kutumika kama muundo wa kati wa kuhamisha habari kutoka kwa programu moja hadi nyingine (kwa mfano, kama matokeo ya hoja ya hifadhidata), kwa hivyo yaliyomo wakati mwingine hutolewa na kuchakatwa kiotomatiki na programu. Si lazima kila wakati kuunda hati ya XML kwa mikono.

Hebu, kwa mfano, kazi yetu ni kuunda muundo wa kuhifadhi data ya usajili wa matukio fulani yanayotokea kwenye mfumo (faili ya logi). Katika kesi rahisi, tunaweza kujizuia kurekodi mafanikio na maombi yenye makosa kwa rasilimali zetu - hati kama hiyo lazima iwe na habari kuhusu wakati wa tukio, matokeo yake (mafanikio/kosa), anwani ya IP ya chanzo cha ombi, URI ya rasilimali na msimbo wa matokeo.

Hati yetu ya XML inaweza kuonekana kama hii:

195.151.62.18 PATA /misc/ 200 195.209.248.12 PATA /laini.htm 200

Muundo wa hati ni rahisi sana - kipengele cha mizizi katika kesi hii ni kipengele cha logi, kila tukio linalotokea limeandikwa katika kipengele cha tukio na linaelezwa kwa kutumia sifa zake (tarehe - wakati na matokeo - aina ya tukio) na vipengele vya ndani ( njia - njia ya kufikia, ip-kutoka - chanzo cha anwani, url-to - rasilimali iliyoombwa, majibu - msimbo wa majibu). Hati hii inaweza kuzalishwa, kwa mfano, na moduli ya uthibitishaji wa ombi la mfumo, na kutumiwa na programu ya usindikaji wa data ya usajili (mtazamaji wa logi).

DTD ni nini?

Kwa hivyo, tuliunda hati ya XML na tukahakikisha kuwa seti ya lebo zilizotumiwa huturuhusu kufanya upotoshaji wowote na maelezo yetu. Katika kesi hii, ili kuanzisha sheria za lugha yetu mpya, i.e. orodha ya vipengele halali, yaliyomo na sifa zinazowezekana, lazima tutengeneze ufafanuzi wa DTD (wakati wa kuandika, vipimo vya nyaraka za XML bado hazijaidhinishwa na hadi sasa DTDs ndiyo njia pekee ya kawaida ya kuelezea sarufi).

Mfano mdogo wa hati yetu ya XML:

Hifadhi faili hii kama log.dtd na ujumuishe laini mpya katika hati ya XML:

Sasa, wakati wa kuchakata hati, kichanganuzi cha XML kinachothibitisha kitaangalia mpangilio wa vipengele na sifa zao kwa jinsi ilivyoainishwa katika nukuu zetu za DTD na, ikiwa ni ukiukaji wa muundo wa ndani (ambao huamua "semantiki" ya hati), toa ujumbe wa makosa.

Nafasi za Majina ni nini?

Kama ilivyoelezwa hapo awali, uzuri wa kutumia XML upo katika uwezo wa kuja na vitambulisho vyako mwenyewe, ambavyo majina yao yanahusiana kikamilifu na madhumuni yao. Lakini fikira za watu na msamiati hazina kikomo, kwa hivyo hakuna hakikisho kabisa kwamba majina ya vitu unavyotoa hayatatumiwa na mtu mwingine. Maadamu programu yako inachakata hati asili za XML pekee, hakutakuwa na matatizo yoyote. Lakini inawezekana kabisa kwamba hati hiyo hiyo itakuwa na taarifa kwa wasindikaji kadhaa kwa wakati mmoja. Katika kesi hii, majina ya baadhi ya vipengele au sifa zao zinaweza kuwa sawa, na kusababisha ama hitilafu katika kichanganuzi cha XML au uwasilishaji usio sahihi wa hati. Kwa mfano, kwa upande wetu, kipengele cha tukio kinaweza kutumika kwa urahisi kurekodi matukio mengine na kuchakatwa na programu nyingine.

Ili kurekebisha hali hii, lazima tufafanue majina ya kipekee ya vipengee na sifa zake kwa "kuongeza" kiambishi awali kisichorudiwa kwa majina yao ya kawaida. Utaratibu wa Nafasi za Majina unatumika kwa hili (Nafasi za majina ziliidhinishwa rasmi na W3C mnamo Januari 1999 na sasa ni sehemu ya kiwango cha XML). Kulingana na maelezo haya, kufafanua "wigo" wa tepe (kwa kweli, neno hili, linalotumiwa sana katika lugha za kawaida za programu, halitumiki katika XML, kwa sababu hakuna seti kama hiyo ambayo "wigo" unaweza kujengwa. ndani ya hati ya muundo wa XML ) ni muhimu kufafanua sifa ya kipekee ambayo inaelezea jina la kipengele, ambacho kichanganuzi cha hati kinaweza kuamua ni kikundi gani cha majina (Vitambulisho vya nafasi ya majina vinaweza kutumika kuelezea majina ya kipekee ya vitu vyote viwili. na sifa zao). Katika mfano wetu wa mwisho inaweza kufanywa kama hii:

195.151.62.18

PATA

/misc/

200

195.209.248.12

PATA

/laini.htm

200

Upekee wa sifa ya jina unahakikishwa na matumizi ya baadhi ya vitambulishi vya rasilimali (kwa mfano, URI au ISBN) kama thamani yake.

Taarifa kamili juu ya matumizi ya Namespace unaweza kupata katika kiwango hiki. Katika siku zijazo, ili kurahisisha mifano, tutaruka Nafasi ya Majina - maelezo.

Zana

Inachakata Hati za XML

Jambo kuu la kuzuia katika kukuza teknolojia ya XML kwenye Wavuti leo ni ukosefu wa msaada kamili wa muundo huu na watengenezaji wote wa kivinjari - programu zinazotumiwa mara nyingi kwa upande wa mteja. Njia ya nje ya hali hii inaweza kuwa chaguo ambalo upande wa seva hushughulikia usindikaji wa nyaraka za XML Kwa kutumia analyzer yoyote iliyopo ya XML, unaweza kuzalisha taarifa muhimu kwenye seva na kutuma hati ya kawaida ya HTML kwa mteja. Walakini, njia hii, kwa kweli, ni rahisi kubadilika na hukuruhusu kutumia teknolojia ya XML tu kwa kuhifadhi habari iliyopangwa, lakini sio kwa kuibadilisha kwa nguvu kwa upande wa mteja.

Mnamo Agosti 1997, RFC 2376 iliidhinishwa Aina za MIME kwa rasilimali za XML: maandishi/xml na application/xml. Kwa hivyo, hati za XML zinaweza kupitishwa kupitia HTTP na kuonyeshwa na mtazamaji kwa njia sawa na kurasa za kawaida za HTML. Ili kufanya hivyo, unahitaji kubadilisha kidogo usanidi wa seva ya Wavuti (katika Apache - ongeza mstari "text/xml xml ddt" kwenye faili ya mime.types), na kwa upande wa mteja uwe na kivinjari kinachounga mkono karatasi za mtindo au JavaScript. Leo vivinjari vile ni Mtandao wa Microsoft Explorer 5, kivinjari cha kwanza kuauni vipimo vya XML 1.0 na laha za mitindo za XSL; Kivinjari cha Amaya, kinachotolewa na muungano mahususi kwa madhumuni ya majaribio () na kinaauni takriban viwango vyote vilivyotengenezwa vya W3C. Usaidizi wa XML pia umepangwa kwa matoleo yajayo ya Netscape Navigator.

Document Object Model DOM

Mojawapo ya miingiliano yenye nguvu zaidi ya kufikia yaliyomo kwenye hati za XML ni DOM.

Kitu Mfano wa XML hati ni uwakilishi wa muundo wake wa ndani kwa namna ya mkusanyiko wa vitu fulani. Kwa urahisi, vitu hivi vimepangwa katika aina fulani ya muundo wa data kama mti - kila kipengele cha hati kinaweza kupewa tawi tofauti, na yaliyomo ndani yake, kwa namna ya seti ya vipengele vilivyowekwa, maoni, sehemu za CDATA, na kadhalika. inawakilishwa katika muundo huu na miti ndogo. Kwa sababu Kwa kuwa hati yoyote ya XML iliyoundwa vizuri lazima iwe na kipengele kikuu kilichofafanuliwa, maudhui yote yanaweza kuchukuliwa kama miti ndogo ya kipengele hiki kikuu, kisha huitwa mzizi wa mti wa hati. Kwa kipande kifuatacho cha hati ya XML:

maandishi maandishi

Uwakilishi wa kitu wa muundo wa hati si kitu kipya kwa wasanidi programu. Ili kufikia Maudhui ya HTML kurasa katika hati kwa muda mrefu zimetumia mbinu inayolengwa na kitu - inayoweza kufikiwa na Hati ya Java au vipengele vya VBScript Hati ya HTML inaweza kuundwa, kurekebishwa na kutazamwa kwa kutumia vitu vinavyofaa. Lakini orodha yao na seti ya njia zinabadilika kila wakati na inategemea aina ya kivinjari na toleo la lugha. Ili kutoa kiolesura cha kufikia yaliyomo katika hati iliyopangwa, bila kujali lugha maalum ya programu na aina ya hati, maelezo ya kielelezo cha kitu cha DOM Level 1 yalitengenezwa na kuidhinishwa rasmi ndani ya muungano wa W3.

DOM ni maelezo ya ufikiaji wa jukwaa- na programu-huru kwa yaliyomo kwenye hati na ni aina ya API kwa vidhibiti vyao. DOM ni njia ya kawaida ya kuunda mfano wa kitu wa hati yoyote ya HTML au XML, kwa msaada ambao unaweza kutafuta vipande muhimu, kuunda, kufuta na kurekebisha vipengele vyake.

Ili kuelezea violesura vya kufikia maudhui ya hati za XML, vipimo vya DOM hutumia IDL ya lugha inayojitegemea na ili kuzitumia ni lazima "zitafsiriwe" katika lugha mahususi ya programu. Walakini, hii inafanywa na waundaji wa wachambuzi wenyewe, labda hatujui chochote juu ya jinsi miingiliano inatekelezwa - kutoka kwa mtazamo wa watengenezaji wa programu, DOM inaonekana kama seti ya vitu na njia na mali fulani. Katika sehemu inayofuata, tutaangalia kwa haraka mfano wa kitu cha Microsoft Internet Explorer 5, inapatikana kutoka kwa Hati ya Java na hati za VBScript.

XML ni ya matumizi makubwa, herufi hazizuiliwi kwa seti ya vibambo 7-bit ASCII. Herufi zinazoruhusiwa katika XML ni pamoja na herufi tatu za udhibiti za ASCII, herufi zote za kawaida za ASCII, na karibu zingine zote. Wahusika wa Unicode

Majina.

Katika XML, majina yote lazima yaanze na herufi, mstari chini (_), au koloni (:), na lazima yaendelee tu na vibambo vya majina halali, kumaanisha kwamba yanaweza kuwa na herufi ambazo ni sehemu ya sehemu ya herufi. Usimbaji wa Unicode, nambari za Kiarabu, viambatisho, mistari, vipindi na koloni. Walakini, majina hayawezi kuanza mistari ya xml katika rejista yoyote. Majina yanayoanza na herufi hizi yamehifadhiwa kwa matumizi na W3C. Ni lazima ikumbukwe kwamba tangu barua si mdogo peke Wahusika wa ASCII, basi katika majina unaweza kutumia maneno kutoka lugha ya asili.

Muundo wa hati ya XML.

Hati yoyote ya XML ina sehemu zifuatazo:

  • Dibaji ya hiari.
  • Mwili wa hati.
  • Epilogue ya hiari inayofuata mti wa kipengele.

Wacha tuangalie kila sehemu kwa undani zaidi.

Utangulizi wa hati ya XML.

Hati ya XML huanza na utangulizi. Dibaji ina maagizo kadhaa ya kichanganuzi cha XML na matumizi.

Utangulizi una sehemu kadhaa:

  1. Azimio la hiari la XML ambalo limeambatanishwa kati ya vibambo. Tangazo hilo lina:
    • alama ya xml na nambari ya toleo la vipimo vya XML;
    • dalili ya usimbaji wa herufi (encoding) ambayo hati imeandikwa (kwa default encoding="UTF-8");
    • kigezo cha pekee ambacho kinaweza kuchukua maadili "ndiyo" au "hapana" (kwa chaguo-msingi ili kusimama="yes" ). Thamani ya "ndiyo" inaonyesha kwamba hati ina matamko yote ya vipengele vinavyohitajika, na "hapana" inaonyesha kuwa DTD za nje zinahitajika.

    Yote hii pamoja inaweza kuonekana kama hii:

    .

    Ni muhimu kutambua kwamba katika tamko la XML, sifa ya toleo pekee inahitajika, sifa nyingine zote zinaweza kuachwa na kwa hiyo kuchukua maadili ya msingi. Pia unahitaji kukumbuka kuwa sifa hizi zote zinapaswa kutajwa tu kwa utaratibu uliotolewa hapo juu.

  2. maoni.
  3. usindikaji amri.
  4. alama za nafasi tupu.
  5. hiari tamko la aina ya hati, DTD (Tamko la Aina ya Hati) ambayo imefungwa kati ya wahusikana inaweza kupitisha mistari mingi. Sehemu hii inatangaza vitambulisho vilivyotumiwa katika hati, au hutoa kiungo kwa faili ambayo matamko kama hayo yanarekodiwa.

Baada ya tamko la aina ya hati maoni, amri za usindikaji, na herufi za nafasi nyeupe zinaweza pia kufuata.

Kwa kuwa sehemu hizi zote ni za hiari, utangulizi unaweza kuachwa.

Mwili wa hati ya XML.

Mwili wa hati una moja au vipengele zaidi. Katika hati ya XML iliyoumbizwa ipasavyo, vipengele huunda mti rahisi wa kihierarkia, ambao lazima una kipengele cha mizizi( root element ) ambamo vipengele vingine vyote vya hati vinawekwa. XML inaweka kizuizi muhimu sana kwa vipengee: lazima viwekwe kwa usahihi. Hii inafanya kuwa rahisi kabisa kupachika hati moja ya XML hadi nyingine bila kukiuka muundo wa hati, wakati kipengele cha mizizi ya hati iliyoorodheshwa itakuwa tu moja ya vipengele vya hati ambayo imewekwa. Katika suala hili, tunakabiliwa na upungufu mwingine, yaani, kwamba majina ya vipengele lazima iwe ya pekee ndani ya hati, kwa kuwa katika hati iliyojumuishwa majina sawa na katika hati iliyofungwa inaweza kuwa na maana tofauti kabisa. Ili kutatua tatizo la majina sanjari, dhana ya nafasi ya majina ilianzishwa.

Jina la kipengele cha mizizi linachukuliwa kuwa jina la hati nzima na linaonyeshwa katika sehemu ya pili ya utangulizi baada ya neno Doctype. Ikiwa ufafanuzi wa DTD uko ndani ya hati ya XML, basi huwekwa kwenye mabano ya mraba baada ya jina la kipengele cha mizizi:

Lakini kawaida DTD inafafanuliwa kwa hati kadhaa za XML mara moja. Katika kesi hii, ni rahisi kuiandika kando na hati na kisha badala ya mabano ya mraba moja ya maneno Mfumo au Umma imeandikwa na kufuatiwa na anwani katika mfumo wa URI (Kitambulisho cha Rasilimali Sawa) ya faili na. ufafanuzi wa DTD. Kwa madhumuni yote ya vitendo, URI inachukuliwa kuwa sawa na URL, ingawa kimsingi inaweza kuwa jina lolote la kipekee. Ufafanuzi wa DTD, kwa mfano, unaweza kuonekana kama hii:

Nafasi za Majina za XML

Kwa kuwa hati tofauti za XML zinaweza kuwa na majina sawa ya vitambulisho na sifa zao, ambazo zina maana tofauti kabisa, ni muhimu kuweza kutofautisha kwa namna fulani. Kwa kufanya hivyo, majina ya vitambulisho na sifa hupewa kiambishi awali kifupi, ambacho kinatenganishwa na jina na koloni. Kiambishi awali cha jina kinahusishwa na kitambulisho kinachofafanua nafasi ya majina(nafasi ya jina). Majina yote ya lebo na sifa ambayo viambishi vyake vinahusishwa na kitambulisho sawa na fomu ya kwanza nafasi ya majina, ambayo majina lazima yawe ya kipekee. Kiambishi awali cha nafasi ya majina na kitambulisho kinafafanuliwa na sifa ya xmlns kama ifuatavyo:

Katika siku zijazo, majina ya vitambulisho na sifa ambazo tunataka kukabidhi kwa nafasi ya majina "http://URI_namespace" yamewekwa awali na ns, kwa mfano:

Novosibirsk.

Sifa ya xmlns inaweza kuonekana katika yoyote Kipengele cha XML, na sio tu kwenye mizizi. Kiambishi awali kinachofafanua kinaweza kutumika katika kipengele ambacho sifa ya xmlns imeandikwa na katika vipengele vyote vilivyowekwa ndani yake. Zaidi ya hayo, nafasi nyingi za majina zinaweza kufafanuliwa katika kipengele kimoja. Katika vipengele vilivyowekwa nafasi ya majina inaweza kubatilishwa kwa kuhusisha kiambishi awali na kitambulisho tofauti. Kuonekana kwa jina la lebo bila kiambishi awali katika hati inayotumia nafasi ya majina, inamaanisha kuwa jina ni la nafasi ya majina chaguomsingi. Viambishi awali vinavyoanza na herufi za xml kwa hali yoyote vimehifadhiwa kwa lugha ya XML yenyewe.

Jina pamoja na kiambishi awali huitwa jina lililopanuliwa au lililohitimu. Sehemu ya jina iliyoandikwa baada ya koloni inaitwa sehemu ya ndani ya jina.

Katika makala hii tutagusa juu ya mada Miundo ya hati ya XML. Wewe na mimi tayari tumezungumza juu ya hili, na leo tutaandika yetu ya kwanza Hati ya XML, na pia nitaelezea muundo wake kwa undani.

Ngoja nikupe rahisi mara moja mfano hati ya XML:




]>


IBM Lenovo V570
&n; DELL Inspiron N5010


Gothic 2
Nguvu na Uchawi 6

Kichwa kinakuja mwanzoni kabisa Hati ya XML. Kichwa katika mfano ni zima, jambo pekee ni kwamba encoding wakati mwingine ni tofauti. Ninaweka ile ya kawaida zaidi - UTF-8.

Inayofuata inakuja sehemu DOCTYPE, ambayo inaelezea vyombo mbalimbali. Tulielezea mbili: ". n"kwa maana" Laptop"Na" g"kwa maana" mchezo"Kiini ni, kwa maana fulani, kitu kisichobadilika ambacho tunaweza kutumia katika mwili Hati ya XML ili kufupisha rekodi na kurahisisha kutunza katika siku zijazo.

Baada ya sehemu DOCTYPE kuja Mwili wa hati ya XML. Kila kitu hapa ni sawa na syntax ya lugha HTML, yaani, kuna vitambulisho (pia ni vipengele), vina sifa, pamoja na vitambulisho vya ndani. Lakini tofauti HTML, hapa unakuja na majina ya vipengele mwenyewe, pia ndani XML syntax kali sana, yaani, kusiwe na vitambulisho vyovyote visivyofunga au nukuu zinazokosekana katika maadili ya sifa za lebo.

Zingatia jinsi zile tulizoelezea katika sehemu zinatumiwa CDATA kiini. Ikiwa unahitaji kuonyesha tabia maalum, kwa mfano, & au < , basi lazima utumie huluki zinazofaa zilizohifadhiwa.

Kuhusu uhusiano kati ya vipengele mbalimbali. Kula 5 aina za viunganisho:

  • Mzazi. Mzazi kwa aliyepewa ndio kipengee ambacho kiko juu yake 1 madaftari"mzazi ni" Duka".
  • Kipengele cha mtoto. Kinyume cha mzazi. Kipengele cha mtoto ni kile ambacho kimewashwa kabisa 1 ngazi ya chini na iko ndani ya kipengele kilichotolewa. Kwa mfano, vipengele vya watoto " Duka"ni" madaftari"Na" michezo". Tafadhali kumbuka kuwa daima kuna mzazi mmoja, wakati kunaweza kuwa na vipengele vingi vya mtoto.
  • Babu. Babu ni kile kipengele cha mtu fulani ambacho ni zaidi ya 1 ngazi ya juu. Kwa mfano, kwa kipengele " prod"babu ni" Duka".
  • Mjukuu. Vivyo hivyo kipengele cha mtoto, lakini vipengele pekee vinapaswa kuwa chini 1 kiwango cha kuota katika kipengele fulani. Kwa mfano, kwa " Duka"mzao ni" prod".
  • Ndugu. Kipengele kinasemekana kuwa ndugu wa kipengele kingine ikiwa ni katika kiwango sawa na kingine. Bila shaka, pamoja na ngazi moja, uwepo wa mzazi wa kawaida pia unahitajika. Kwa mfano, vipengele " madaftari"Na" michezo"ni ndugu.

Hayo tu ndiyo ningependa kukuambia Muundo wa hati ya XML. Na ili kuimarisha hili, ninapendekeza ufanye kazi rahisi: kuifanya ndani ya kipengele prod vipengele viwili zaidi, moja ambayo itakuwa na jina la bidhaa, na nyingine - bei yake. Ili kuangalia usahihi Hati ya XML, ifungue kwenye kivinjari chako. Ikiwa hakuna makosa yanayotokea, inamaanisha kuwa kila kitu kimeandikwa kwa usahihi.

Leo tutaanza kuzingatia maarufu sana na rahisi Lugha ya alama ya XML. Kwa sababu umbizo hili Uwakilishi wa data ni rahisi sana na ni wa ulimwengu wote, na inaweza kutumika karibu popote, ikimaanisha kuhusiana na kitu fulani. Kwa hivyo, programu ya novice italazimika kushughulika na lugha hii mapema au baadaye, na haijalishi unafanya nini haswa, iwe ni programu ya wavuti au usimamizi wa hifadhidata, kwa sababu kila mtu hutumia XML, na pia utaitumia kutekeleza majukumu. unahitaji.

Tutaanza, kama kawaida, na nadharia, tuangalie ni aina gani ya lugha, kwa nini ni nzuri, jinsi ya kuitumia na inatumika wapi.

Ufafanuzi wa Lugha ya XML

XML (Lugha ya Alama ya eExtensible) ni lugha ya jumla na inayoweza kupanuka ya data ambayo haitegemei mfumo wa uendeshaji na mazingira ya usindikaji. Xml hutumiwa kuwasilisha data fulani katika muundo wa muundo, na unaweza kutengeneza muundo huu mwenyewe au kuubinafsisha kwa programu fulani au huduma fulani. Ndiyo maana lugha iliyotolewa Wanaiita kuwa inaweza kupanuliwa, na hii ndiyo faida yake kuu, ambayo inathaminiwa sana.

Kama unavyojua, kuna lugha nyingi za alama, kwa mfano, lugha ya HTML, lakini zote, kwa njia moja au nyingine, hutegemea processor, kwa mfano, html sawa, nambari ambayo kivinjari huchanganua, imesawazishwa na haiwezi kupanuliwa, kuna vitambulisho vilivyo wazi hapo, sintaksia ambayo haiwezi kukiukwa, na katika xml unaweza kuunda lebo zako mwenyewe, i.e. alama yako. Kuu HTML heshima na XML ni kwamba html inaelezea tu ghafi ya kuonyesha data, na xml ni muundo wa data dhahania ambao unaweza kuchakatwa na kuonyeshwa upendavyo na popote, na kwa hivyo hakuna haja ya kulinganisha lugha hizi, zina madhumuni tofauti kabisa.

Kama ilivyoonyeshwa hapo juu, xml ni ya kawaida sana na lugha ya ulimwengu wote, ambayo karibu programu zote, wavuti na kwa kompyuta tu, huitumia kama ubadilishanaji wa habari, kwani kwa msaada wake unaweza kubadilishana data kwa urahisi kati ya programu au huduma ambazo hata zimeandikwa ndani. lugha mbalimbali. Katika uhusiano huu, kila mpangaji programu ambaye anahusika katika upangaji wowote anapaswa kuwa na uelewa wa XML. Ikiwa unataka kuwa bwana wavuti, basi lazima ujue XML, na tayari tumejadili jinsi ya kuwa Mwalimu wa WEB na unachohitaji kujua kwa hili.

Kwa mfano, mara moja nilikuwa na kazi ya kuandika huduma fulani ambayo, kwa ombi, inapaswa kurudisha data fomu ya xml, i.e. aina ya kuendeleza sehemu ya seva maombi, na sikujua mteja ambaye angechakata data hii iliandikwa ndani, na kwamba niliandika huduma ambayo ilirudisha data katika fomu ya xml na ndivyo hivyo, programu ilifanya kazi kikamilifu. Na huu ni mfano tu ambao nililazimika kushughulika nao, lakini sasa fikiria ni mashirika ngapi tofauti yanashirikiana na kukuza kwa uangalifu. programu na kubadilishana data, na sitashangaa kuwa data hii itakuwa katika umbo la xml.

Kwa mfano, mara moja nilikuwa na kazi ya kuandika huduma fulani ambayo inapaswa kurudisha data katika fomu ya xml juu ya ombi, i.e. aina ya ukuzaji wa sehemu ya seva ya programu, na sikujua ni mteja gani ambaye angeshughulikia data hii imeandikwa, na kwamba niliandika huduma ambayo ilirudisha data hiyo katika fomu ya xml na ndivyo hivyo, programu ilifanya kazi kikamilifu. . Na huu ni mfano tu ambao nililazimika kushughulika nao, lakini sasa fikiria ni mashirika ngapi tofauti yanashirikiana na kuunda programu na kubadilishana data kwa uangalifu, na sitashangaa kuwa data hii itakuwa katika fomu ya xml.

Pia nililazimika kuhifadhi mara moja data ya xml katika hifadhidata ya MS SQL 2008, ili kuwakilisha vyema data hii na kuibadilisha kati ya seva na upande wa mteja maombi, tuliangalia hili katika makala - Transact-sql - kufanya kazi na xml.

Lugha ya XML yenyewe ni rahisi sana, na haiwezekani kuchanganyikiwa ndani yake; kila kitu kinachozunguka xml, ambapo unaweza kuchanganyikiwa kwa urahisi.

Leo tunazungumza tu Misingi ya XML, na hatutazingatia teknolojia za usindikaji na kuingiliana na lugha hii, kwa kuwa hii ni kweli, nyenzo nyingi sana, lakini nadhani katika siku zijazo tutaendelea kufahamiana na teknolojia zinazohusiana.

Tuendelee na mazoezi. Nami nitaandika mifano yote ambayo tutazingatia katika Notepad ++ tu kwa sababu ni rahisi sana, lakini hatutazungumza juu ya hili sasa, kwa kuwa tayari tumejadili hili katika makala - Kwa nini Notepad ++ ni nzuri kwa msanidi wa novice.

Lebo za XML

Lugha ya XML hutumia vitambulisho ( vitambulisho ni nyeti kwa kesi), lakini sio vitambulisho sawa na katika html, lakini zile ambazo unakuja nazo mwenyewe, lakini hati ya xml pia ina muundo wazi, i.e. kuna lebo ya ufunguzi na lebo ya kufunga, kuna vitambulisho vilivyowekwa na, kwa kweli, kuna maadili ambayo yapo kwenye vitambulisho hivi. Kwa maneno mengine, kila kitu unachohitaji maarifa ya msingi xml ni kufuata sheria hizi. Kwa pamoja, ufunguzi, tagi ya kufunga na thamani huitwa kipengele, na hati nzima ya xml inajumuisha vipengele ambavyo kwa pamoja huunda muundo wa data. Hati ya xml inaweza kuwa na kipengele kimoja tu cha mzizi, kumbuka hili, kwa sababu ukiandika vipengele viwili vya mizizi, itakuwa kosa.

Na ni wakati wa kuleta mfano xml markup, na mfano wa kwanza hadi sasa kwa syntax:

<Начало элемента> <Начало вложенного элемента>Thamani ya kipengele kilichoorodheshwa

Kama unaweza kuona, kila kitu ni rahisi sana, na kunaweza kuwa na vitu vingi kama hivyo vilivyowekwa ndani ya kila mmoja.

Sasa hebu tutoe mfano wa hati halisi ya xml:

Kama unavyoona, nimetoa mfano wa aina ya orodha ya vitabu hapa, lakini sikutangaza hati hii, i.e. Sikuandika tamko la XML ambalo linaambia programu ambayo itashughulikia data hii kwamba data ya XML iko hapa na katika usimbaji gani inawasilishwa. Unaweza pia kuandika maoni na sifa, kwa hivyo wacha tutoe mfano wa hati kama hiyo:

Kitabu cha 1 Ivan Kitabu 1 tu Kitabu cha 2 Sergey Kitabu 2 tu Kitabu cha 3 Riwaya Kitabu 3 tu

Ambapo mstari wa kwanza ni tamko la tamko kwamba ni Hati ya XML na lazima isomwe katika usimbaji wa UTF-8.

Bila usindikaji, data hii itaonekana, kwa mfano, kwenye kivinjari ( Firefox ya Mozilla) kwa njia ifuatayo:

Natumai unaelewa kuwa katalogi hapa ndio sehemu ya mizizi, ambayo ina vitu vya kitabu, ambavyo vinajumuisha jina, mwandishi na vitu vya maoni, na kwa mfano, pia niliweka sifa kadhaa za kipengee cha orodha na kipengele cha kitabu. .

Kwa misingi, nadhani hiyo inatosha, kwa sababu ikiwa tunapiga mbizi zaidi na zaidi katika XML, na katika teknolojia zote zinazohusishwa na lugha hii, basi makala hii haitaisha. Kwa hivyo ni hayo tu kwa leo. Kwaheri!