Maelezo ya data kwa kutumia XML. XML - Syntax

Tunaendelea tena na masomo yetu ya XML na katika nakala hii tutafahamiana na muundo wa XML kama maagizo ya usindikaji, maoni, sifa na zingine. Vipengele vya XML. Vipengele hivi ni vya msingi na hukuruhusu kubadilika, kwa kufuata madhubuti na kiwango, kuashiria hati za ugumu wowote.

Tayari tumejadili baadhi ya vipengele, kama vile vitambulisho vya XML, katika makala iliyotangulia "". Sasa tutagusa mada hii tena na kuichunguza kwa undani zaidi. Hii inafanywa mahsusi ili iwe rahisi kwako kupata picha kamili ya miundo ya XML.

Vipengele vya XML. Vipengee tupu na visivyo tupu vya XML

Kama ilivyotajwa katika kifungu kilichotangulia, vitambulisho katika XML havionyeshi maandishi tu, kama ilivyo katika HTML, lakini onyesha. vipengele vya mtu binafsi(vitu). Kwa upande wake, vipengele hupanga habari katika hati, ambayo kwa upande wake iliwafanya kuwa vitengo kuu vya kimuundo vya lugha ya XML.

Katika XML, vipengele vinaweza kuwa vya aina mbili - tupu na zisizo tupu. Vipengele tupu havina data yoyote, kama vile maandishi au miundo mingine. Tofauti na vipengele tupu, vipengele visivyo tupu vinaweza kuwa na data yoyote, kama vile maandishi au vipengele vingine vya XML na miundo. Ili kuelewa hoja ya hapo juu, hebu tuangalie mifano ya vipengele vya XML tupu na visivyo tupu.

Kipengee tupu cha XML

Kipengele cha XML kisicho tupu

Maudhui ya kipengele...

Kama tunavyoweza kuona kutoka kwa mfano hapo juu, tofauti kuu kati ya vitu tupu na visivyo tupu ni kwamba vinajumuisha lebo moja tu. Kwa kuongeza, ni muhimu pia kuzingatia kwamba katika XML majina yote ni nyeti kwa kesi. Hii ina maana kwamba majina myElement, MyElement, MYELEMENT, nk. tofauti kutoka kwa kila mmoja, kwa hiyo wakati huu Inastahili kukumbuka mara moja ili kuepuka makosa katika siku zijazo.
Kwa hivyo, tuligundua vipengele. Sasa hebu tuendelee kwenye hatua inayofuata kama vile shirika la kimantiki Hati za XML.

Upangaji wa kimantiki wa hati za XML. Muundo wa mti wa data ya XML

Kama unavyokumbuka, muundo kuu wa lugha ya XML ni vitu, ambavyo vinaweza kuwa na muundo mwingine wa kiota na kwa hivyo kuunda. muundo wa kihierarkia mtazamo wa mti. Kwa kesi hii kipengele cha mzazi itakuwa mzizi, na watoto wengine wote watakuwa matawi na majani ya mti wa XML.

Ili iwe rahisi kuelewa hapo juu, hebu tuangalie picha ifuatayo na mfano.

Kama tunavyoona, kupanga hati ya XML kama mti ni muundo rahisi sana kusindika. Wakati huo huo, utata wa kuelezea wa mti yenyewe ni mkubwa sana. Ni uwakilishi wa mti ambao ndio zaidi kwa njia bora zaidi maelezo ya vitu katika XML.

Sifa za XML. Sheria za kuandika sifa katika XML

Katika XML, vipengee vinaweza pia kuwa na sifa zilizo na maadili zilizopewa, ambazo zimewekwa katika moja au nukuu mara mbili. Sifa ya kipengele imewekwa kama ifuatavyo:

KATIKA kwa kesi hii sifa yenye jina "sifa" na thamani "thamani" ilitumika. Ni vyema kutambua mara moja kwamba sifa ya XML lazima iwe na thamani fulani na haiwezi kuwa tupu. Vinginevyo, msimbo hautakuwa sahihi kutoka kwa mtazamo wa XML.

Inafaa pia kuzingatia utumiaji wa alama za nukuu. Thamani za sifa zinaweza kuambatanishwa katika nukuu moja au mbili. Kwa kuongeza, inawezekana pia kutumia baadhi ya quotes ndani ya wengine. Ili kuonyesha, fikiria mifano ifuatayo.

Kabla ya kuangalia miundo mingine ya XML, inafaa pia kuzingatia kwamba wakati wa kuunda sifa, herufi maalum kama vile ampersand "&" au mabano ya pembe " haziwezi kutumika kama maadili.<>" Vibambo hivi vimehifadhiwa kama vibambo vya kudhibiti ("&" ni huluki, na "<» и «>"fungua na funga lebo ya kipengele) na haiwezi kutumika katika " fomu safi" Ili kuzitumia, unahitaji kuamua kuchukua nafasi ya wahusika maalum.

Maagizo ya usindikaji wa XML (maelekezo ya usindikaji). tamko la XML

XML ina uwezo wa kujumuisha maagizo katika hati ambayo hubeba habari maalum kwa programu ambazo zitachakata hati fulani. Maagizo ya usindikaji katika XML yanaundwa kama ifuatavyo.

Kama inavyoonekana kutoka kwa mfano hapo juu, in Maagizo ya XML usindikaji ni kama ifuatavyo: nukuu za kona na alama ya kuuliza. Hii ni kidogo kama ile ya kawaida ambayo tuliangalia katika masomo ya kwanza ya PHP. Sehemu ya kwanza ya maagizo ya usindikaji inabainisha matumizi au mfumo ambao sehemu ya pili ya maagizo haya au yaliyomo ndani yake yanalenga. Hata hivyo, maagizo ya usindikaji ni halali tu kwa maombi hayo ambayo yanashughulikiwa. Mfano wa maagizo ya usindikaji inaweza kuwa maagizo yafuatayo.

Inafaa kumbuka kuwa XML ina muundo maalum ambao ni sawa na maagizo ya usindikaji, lakini yenyewe sio moja. Ni kuhusu kuhusu tamko la XML ambalo huwasilisha kwa programu ya kuchakata taarifa fulani kuhusu sifa za hati ya XML, kama vile usimbaji, toleo la lugha ambayo imeandikwa. hati hii na kadhalika.

Kama unavyoona kutoka kwa mfano hapo juu, tamko la XML lina sifa zinazoitwa pseudo, ambazo zinafanana sana na sifa za kawaida ambazo tulizungumza hapo juu. Ukweli ni kwamba, kwa ufafanuzi, tamko la XML na maagizo ya usindikaji hayawezi kuwa na sifa, kwa hiyo matamko haya yanaitwa pseudo-sifa. Hii inafaa kukumbuka kwa siku zijazo ili kuepuka makosa mbalimbali.

Kwa kuwa tumeshughulikia sifa-ghushi, hebu tuangalie zinamaanisha nini.

  • Usimbaji - ni wajibu wa kusimba hati ya XML. Kwa kawaida usimbaji wa UTF8 hutumiwa.
  • Toleo - toleo la lugha ya XML ambayo hati hii imeandikwa. Kawaida hii Matoleo ya XML 1.0.

Kweli, sasa wacha tuendelee hadi sehemu ya kumalizia ya kifungu na tuzingatie muundo wa XML kama maoni na sehemu za CDATA.

Ulijua, Je, ni uwongo gani wa dhana ya "utupu wa kimwili"?

Utupu wa kimwili - dhana ya relativistic quantum fizikia, ambayo wanamaanisha ya chini (ya msingi) hali ya nishati uwanja wa quantized kuwa na kasi ya sifuri, kasi ya angular na nambari zingine za quantum. Wananadharia wa uhusiano huita ombwe la kimwili kuwa nafasi isiyo na jambo kabisa, iliyojaa uwanja usio na kipimo, na kwa hiyo tu wa kufikiria. Hali kama hiyo, kwa mujibu wa wana uhusiano, sio utupu kabisa, lakini nafasi iliyojaa chembe za phantom (halisi). Relativist nadharia ya quantum fields inasema kwamba, kwa mujibu wa kanuni ya kutokuwa na uhakika ya Heisenberg, virtual, yaani, dhahiri (inaonekana kwa nani?), Chembe huzaliwa mara kwa mara na kutoweka katika utupu wa kimwili: kinachojulikana kama oscillations ya shamba la sifuri hutokea. Chembe za kweli za utupu wa mwili, na kwa hivyo yenyewe, kwa ufafanuzi, hazina mfumo wa marejeleo, kwani vinginevyo kanuni ya Einstein ya uhusiano, ambayo nadharia ya uhusiano inategemea, ingekiukwa (ambayo ni, mfumo kamili wa kipimo kwa kumbukumbu. kwa chembe za utupu wa kimwili ingewezekana, ambayo kwa upande wake ingepinga waziwazi kanuni ya uhusiano ambayo SRT inategemea). Kwa hivyo, utupu wa kimwili na chembe zake sio vipengele vya ulimwengu wa kimwili, lakini vipengele tu vya nadharia ya uhusiano ambayo haipo. ulimwengu halisi, lakini tu katika kanuni za uhusiano, na hivyo kukiuka kanuni ya causality (zinatokea na kutoweka bila sababu), kanuni ya usawa (chembe za kawaida zinaweza kuzingatiwa, kulingana na tamaa ya nadharia, iliyopo au haipo), kanuni ya upimaji wa ukweli (haionekani, hawana ISO yao wenyewe).

Wakati mwanafizikia mmoja au mwingine anapotumia dhana ya "utupu wa kimwili," yeye haelewi upuuzi wa neno hili, au hana akili, kuwa mfuasi aliyefichwa au wazi wa itikadi ya uhusiano.

Njia rahisi ya kuelewa upuuzi wa dhana hii ni kurejea asili ya kutokea kwake. Ilizaliwa na Paul Dirac katika miaka ya 1930, ilipodhihirika kuwa kukataa etha katika hali yake safi, kama ilivyofanywa na mwanahisabati mkuu lakini mwanafizikia wa wastani, haikuwezekana tena. Kuna ukweli mwingi sana unaopinga hii.

Ili kutetea ulinganifu, Paul Dirac alianzisha dhana ya kifizikia na isiyo na mantiki ya nishati hasi, na kisha kuwepo kwa "bahari" ya nishati mbili kufidia kila mmoja katika utupu - chanya na hasi, na pia "bahari" ya chembe zinazolipa kila moja. nyingine - virtual (yaani, dhahiri) elektroni na positroni katika utupu.

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 (Inaweza kupanuliwa Lugha ya Alama ) 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 iliandikwa ndani, 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; ugumu wote hutokea kwa usahihi katika usindikaji na mwingiliano wa XML na matumizi mengine, teknolojia, i.e. kila kitu kinachozunguka xml, ambapo unaweza kuchanganyikiwa kwa urahisi.

Leo tunazungumza tu juu ya misingi ya XML, na hatutazingatia teknolojia za usindikaji na kuingiliana na lugha hii, kwani hii ni kweli, nyenzo zenye nguvu 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 kwamba hii ni hati ya XML na lazima isomwe katika usimbaji wa UTF-8.

Data hii bila usindikaji itaonekana, kwa mfano, katika kivinjari (Mozilla Firefox) kama ifuatavyo:

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!

20. Lugha za kuelezea miundo ya XML

Mipango ya DTD. Hasara za miradi ya DTD. Mizunguko ya XDR. Vipengele na sifa za skimu za XDR.

Wazo la kuunda vitambulisho vyako ambavyo vina maana maalum na kusaidia kuelezea yaliyomo kwenye hati ni nzuri yenyewe. Lakini ikiwa kila mtumiaji anaweza kuunda maelezo yao wenyewe, wanawezaje kutambuliwa? Kwa hili, vipimo vya XML hutumia schemas kuelezea vitambulisho kama "vya nyumbani". Wanahitajika ili:

    eleza markup ni nini hasa;

    kueleza hasa maana ya markup.

Lugha za maelezo ya schema zinazojulikana zaidi ni zifuatazo:

    DTD (Ufafanuzi wa Aina ya Hati) ni lugha ya ufafanuzi wa aina ya hati ambayo awali ilitumiwa kama lugha ya kuelezea muundo wa hati ya SGML.

    XDR (Data ya XML Imepunguzwa) ni lahaja ya mpangilio wa XML iliyotengenezwa na Microsoft ambayo ilitumika katika matoleo ya 4 na 5 ya Internet Explorer.

    XML Schema au kwa urahisi XSD (XML Schema Definition Language) ni pendekezo la W3C tangu 2001.

Hebu tuchunguze kwa undani zaidi mbili za kwanza kati yao. Lugha ya maelezo ya mzunguko wa tatu inashughulikiwa katika Maabara ya 11.

Mpango wa DTD

Ratiba ya DTD hutoa kiolezo cha kuwekea hati kinachobainisha kuwepo, mpangilio, na mpangilio wa vipengele na sifa zake katika hati ya XML.

Kwa upande wa DTD, modeli ya maudhui ya hati ya XML inaweza kuelezewa kama ifuatavyo:

Kila kipengele cha hati kinaweza kuwa na mojawapo ya aina zifuatazo:

Sintaksia

Maoni

Ina data ya maandishi pekee

Vipengele vingine

Ina vipengele vya watoto pekee

Imechanganywa

Ina mchanganyiko wa data ya maandishi na vipengele vya watoto

Haina chochote

Sifa zinazopatikana ndani ya lebo za hati zinaelezewa tofauti kwa kutumia syntax:

kipengele_jina sifa_jina1 (aina) thamani_chaguo-msingi

…………………………………………………………………………………...

element_name attribute_nameN (aina) default_value >

Katika kesi hii, sifa katika DTD inaweza kuwa na moja ya aina tatu:

  • Sifa iliyo na lebo

    Sifa na hesabu

Kwa kuongeza aina ya sifa, unaweza pia kuweka muundo wake:

Fikiria, kama mfano, maelezo ya sifa za aina ya kamba kwa kipengele kinachoelezea ujumbe:

namba CDATA #INAHITAJI

tarehe CDATA #INAHITAJI

kutoka kwa CDATA #FIXED

hadhi ya CDATA #IMPLIED>

Ikiwa kipengele hiki kina sifa zilizoorodheshwa, basi maelezo yao yanaweza kuonekana, kwa mfano, kama hii:

namba ID #INAHITAJI

kutoka kwa CDATA #INAHITAJI

tahadhari (chini | kawaida | dharura) "kawaida">

Vipengele vilivyo na lebo vinaweza kuwa vya aina nne:

Hatimaye, viashiria vifuatavyo vya kutokea kwa mfuatano vinaweza kutumika katika DTD:

Alama

Mfano

Maelezo

Matumizi mfululizo ya vipengele vya orodha

Mmoja wa washiriki wa orodha hutumiwa

Kipengele kimoja na kimoja tu hutumiwa

Matumizi ya hiari (0 au mara 1)

Imetumika mara moja au zaidi

Imetumika mara sifuri au zaidi

Kwa mfano, hapa kuna mchoro wa DTD unaoelezea muundo wa sanduku la barua la elektroniki:

Hati ya chanzo ya XML ambayo inakidhi schema hii inaweza kuonekana, kwa mfano, kama hii:

[barua pepe imelindwa]

[barua pepe imelindwa]

Re:

[barua pepe imelindwa]

[barua pepe imelindwa]

Kumbusha

[barua pepe imelindwa]

Nikumbushe kuhusu mkutano.

Makini na mstari wa 2 wa hati, ambayo inaonyesha kiungo cha nje kwa faili iliyo na schema ya DTD.

Kimsingi, DTD inaruhusu njia mbili za kutumiwa katika hati ya XML.

Tamko la utaratibu wa ndani:

Kutangaza schema ya nje:

Kwa kumalizia, tunaangazia hasara zifuatazo za skimu za DTD:

    Sio mifano ya XML. Inahitaji kujifunza lugha tofauti kabisa.

    Hazitoi udhibiti wa aina za data isipokuwa kwa data rahisi sana ya maandishi.

    Si matukio ya XML, kwa hivyo hayawezi kupanuliwa au kubadilishwa kwa lugha nyinginezo kama vile HTML au DHTML.

    Haitoi usaidizi kwa nafasi za majina za XML.

Mzunguko wa XDR

XML-Data ni jina kamili la lugha ya schema ya Microsoft, na XML-DataReduced ni "sehemu" ya pendekezo kamili. Schema ya XDR ni mfano wa XML, i.e. Inakubaliana na sheria zote za sintaksia na viwango vya XML.

Kwa kutekeleza ukaguzi wa data wa kiwango cha hati kwa kutumia taratibu, programu zinazozalisha na kukubali miamala zinaweza kuboreshwa kwa utendaji wa juu zaidi. Ulinganishaji wa uga na uhalali wa rekodi huangaliwa katika kiwango cha mfano cha XML.

Kipengele cha mizizi katika schema ya XDR daima ni kipengele cha Schema:

name="schema_name" xmlns="urn:schemas-microsoft-com:xml-data"

xmlns:dt="urn:schemas-microsoft-com:datatypes">

<-- Объявления других элементов -->

Kipengele cha ElementType kina syntax:

content="(tupu | texOnly | eltOnly | mchanganyiko)">

dt: aina "datatype"

model="(fungua | imefungwa)"

order="(moja | seq | nyingi)"

Kipengele cha ElementType kinaweza kuwa na sifa zifuatazo:

Jina la sifa

Maelezo

Jina la kipengele

Aina ya data ya kipengee

Inaweza kuchukua maadili:

Fungua - inaruhusiwa kutumia vipengele ambavyo havijafafanuliwa kwenye schema

Imefungwa - ni marufuku kutumia vipengele ambavyo havijafafanuliwa kwenye schema

Mpangilio wa vipengele vya watoto katika mfano wa XML. Thamani halali:

moja - hati moja inadhaniwa kuwepo

nyingi - idadi yoyote ya vipengele kwa utaratibu wowote

seq - vipengele vimeainishwa kwa mpangilio maalum.

Ifuatayo inaweza kutumika kama vipengele vya mtoto kwa ElementType:

Jina la kipengele

Maelezo

Inatangaza kipengele cha mtoto

Hutoa maelezo ya ElementType

Hutoa aina ya data ya kipengele cha ElementType

Inafafanua mpangilio wa vipengele

Inafafanua sifa

Inafafanua maelezo kuhusu AttributeType ya kipengele cha mtoto

Sintaksia inayotumika kutangaza sifa ni:

chaguo-msingi="thamani-msingi"

dt:aina="primitive-aina"

dt:values="enumerated-values"

required="(ndiyo|hapana)"

Kwa upande wake, kipengele cha AttributeType kinaweza kuwa na sifa zifuatazo:

Maana

Maelezo

Thamani chaguomsingi

Moja ya aina zifuatazo:

huluki, huluki, hesabu, kitambulisho, idref, nmtoken, nmtokeni, nukuu, mfuatano

Thamani halali

Jina la sifa

Inaonyesha kuwa sifa lazima iwepo katika maelezo

Syntax ya kuelezea kipengele cha sifa ni kama ifuatavyo:

chaguo-msingi="thamani-msingi"

type="aina ya sifa"

na maadili yake yanayowezekana yanaweza kuwa:

Maana

Kiwango kinafafanua viwango viwili vya usahihi kwa hati ya XML:

  • Imejengwa vizuri(Imeundwa vizuri). Hati iliyoundwa vyema hufuata sheria zote za jumla za sintaksia ya XML zinazotumika kwa hati yoyote ya XML. Na ikiwa, kwa mfano, tepe ya kuanza haina lebo ya mwisho inayolingana, basi hii kujengwa kimakosa Hati ya XML. Hati ambayo haijaundwa vizuri haiwezi kuchukuliwa kuwa hati ya XML; Kichakataji cha XML (kichanganuzi) haipaswi kuichakata kwa kawaida na inapaswa kuainisha hali kama hitilafu mbaya.
  • Halali(Halali). Hati halali pia inaambatana na sheria fulani za kisemantiki. Huu ni ukaguzi mkali zaidi wa usahihi wa hati kwa kufuata sheria zilizowekwa tayari, lakini tayari za nje, ili kupunguza idadi ya makosa, kwa mfano, muundo na muundo wa hati fulani, maalum au familia ya hati. Sheria hizi zinaweza kuendelezwa na mtumiaji mwenyewe au na watengenezaji wa tatu, kwa mfano, watengenezaji wa kamusi au viwango vya kubadilishana data. Kwa kawaida, sheria hizo zimehifadhiwa katika faili maalum - michoro, ambapo muundo wa hati, majina yote halali ya vipengele, sifa, na mengi zaidi yanaelezwa kwa undani. Na ikiwa hati, kwa mfano, ina jina la kipengee ambalo halijafafanuliwa hapo awali kwenye schema, basi hati ya XML inazingatiwa. utupu; Wakati wa kuangalia kwa kufuata sheria na schema, kichakataji cha XML kinachokagua (kithibitishaji) kinalazimika (kwa chaguo la mtumiaji) kuripoti hitilafu.

Dhana hizi mbili hazina tafsiri sanifu iliyoidhinishwa vizuri kwa Kirusi, haswa dhana halali, ambayo pia inaweza kutafsiriwa kama halali, halali, kuaminika, inafaa, au hata kupimwa kwa kufuata sheria, viwango, sheria. Watengenezaji wengine wa programu hutumia karatasi ya kufuata katika maisha ya kila siku " Halali».

Sintaksia ya XML

Sehemu hii inajadili tu ujenzi sahihi Hati za XML, ambayo ni, syntax yao.

XML ni muundo wa daraja iliyoundwa kuhifadhi data yoyote; kwa kuibua muundo unaweza kuwakilishwa kama mti. Sharti muhimu zaidi la lazima la kisintaksia ni kwamba hati ina moja tu kipengele cha mizizi(kipengele cha mizizi) (kibadala kinachoitwa kipengele cha hati) Hii ina maana kwamba maandishi au data nyingine ya hati nzima lazima iko kati wa pekee lebo ya mizizi ya mwanzo na lebo yake ya mwisho inayolingana.

Mfano rahisi zaidi ufuatao ni hati ya XML iliyoundwa vizuri: Hiki ni kitabu: "Kitabu Kidogo" Mstari wa kwanza wa hati ya XML inaitwa tamko la XML(Tamko la XML) ni mfuatano wa hiari unaoonyesha toleo la kiwango cha XML (kawaida 1.0), na unaweza pia kujumuisha usimbaji wa herufi na vitegemezi vya nje. Vipimo vinahitaji vichakataji vya XML ili kutumia usimbaji wa Unicode UTF-8 na UTF-16 (UTF-32 ni ya hiari). Usimbaji mwingine kulingana na kiwango cha ISO/IEC 8859 unatambuliwa kuwa unakubalika, unaoungwa mkono na unaotumika sana (lakini hauhitajiki); usimbaji mwingine pia unakubalika, kwa mfano, Windows-1251 ya Kirusi, KOI-8.

Maoni inaweza kuwekwa mahali popote kwenye mti. Maoni ya XML yamewekwa ndani ya jozi ya lebo . Vistawishi viwili (--) haviwezi kutumika popote ndani ya maoni.

Chini ni mfano wa rahisi mapishi ya upishi, iliyotiwa alama na kutumia XML:

Mkate rahisi Unga Chachu Maji ya joto Chumvi

Muundo

Hati hii ya XML iliyosalia ina nested vipengele, baadhi yao wana sifa Na maudhui. Kipengele kawaida huwa na vitambulisho vya kufungua na kufunga ambavyo huambatanisha maandishi na vipengele vingine. Lebo ya kufungua lina jina la kitu kwenye mabano ya pembe, kwa mfano, " »; alama ya kufunga lina jina moja katika mabano ya pembe, lakini kufyeka mbele huongezwa kabla ya jina, kwa mfano, " ». Maudhui ya kipengele(yaliyomo) ni kila kitu ambacho kiko kati ya vitambulisho vya kufungua na kufunga, pamoja na maandishi na vitu vingine (vilivyowekwa). Ufuatao ni mfano wa kipengee cha XML ambacho kina lebo ya ufunguzi, lebo ya mwisho, na maudhui ya kipengele:

Koroa tena, weka kwenye karatasi ya kuoka na uweke kwenye oveni.

Unga

Katika mfano hapo juu, kipengele cha kiungo kina sifa mbili: kiasi, ambacho kina thamani ya 3, na kitengo, ambacho kina kioo cha thamani. Kwa mtazamo wa alama za XML, sifa zilizo hapo juu hazina maana yoyote, lakini ni seti ya wahusika.

Mbali na maandishi, kipengele kinaweza kuwa na vipengele vingine:

Changanya viungo vyote na ukanda vizuri. Funika kwa kitambaa na uondoke kwa saa moja kwenye chumba cha joto. Koroa tena, weka kwenye karatasi ya kuoka na uweke kwenye oveni.

Katika kesi hii, kipengele cha Maagizo kina vipengele vitatu vya hatua. XML hairuhusu vipengele vinavyopishana. Kwa mfano, kijisehemu kifuatacho si sahihi kwa sababu vipengele vya "em" na "nguvu" vinapishana.

Kawaida lafudhi iliyoangaziwa na kusisitizwa kujitolea

Kila hati ya XML lazima iwe na moja haswa kipengele cha mizizi(kipengele cha mizizi au kipengele cha hati), kwa hivyo kipande kifuatacho hakiwezi kuchukuliwa kuwa hati halali ya XML.

Huluki #1 Chombo #2

Ili kuashiria kipengele kisicho na maudhui, kinachoitwa kipengele tupu , muhimu kuomba fomu maalum ingizo linalojumuisha tepe moja ambamo kufyeka huwekwa baada ya jina la kipengele. Ikiwa kipengele hakijatangazwa kuwa tupu katika DTD, lakini hakina maudhui kwenye hati, kwa hiyo ruhusiwa tumia njia hii ya kurekodi. Kwa mfano:

XML inafafanua mbinu mbili za kurekodi wahusika maalum: rejeleo la huluki na rejeleo la nambari ya alama. Asili(chombo) katika XML inarejelea data iliyopewa jina, kawaida maandishi, haswa herufi maalum. Rejeleo la huluki(marejeleo ya huluki) imebainishwa mahali ambapo huluki inapaswa kuwa na inajumuisha ampersand (“&”), jina la huluki na nusu koloni (“;”). Kuna vyombo kadhaa vilivyoainishwa katika XML, kama vile "lt" (unaweza kurejelea kwa kuandika "< ») для левой угловой скобки и « amp » (ссылка - « & ») для амперсанда, возможно также определять собственные сущности. Помимо записи с помощью сущностей wahusika binafsi, zinaweza kutumika kurekodi vizuizi vya maandishi vinavyotokea mara kwa mara. Ifuatayo ni mfano wa kutumia huluki iliyoainishwa mapema ili kuzuia kutumia ampersand kwa jina:

AT&T

Orodha kamili ya huluki zilizoainishwa awali ina & ("&"),< («<»), >(">"), " (""), na " ("") - mbili za mwisho ni muhimu kwa kuandika vikomo ndani ya maadili ya sifa. Unaweza kufafanua huluki zako katika hati ya DTD.

Wakati mwingine ni muhimu kuamua nafasi isiyo ya kuvunja, ambayo hutumiwa mara nyingi sana katika HTML na inaashiria kama katika XML hakuna huluki kama hiyo iliyofafanuliwa awali, imeandikwa, na matumizi yake husababisha makosa. Kutokuwepo kwa huluki hii ya kawaida mara nyingi huja kama mshangao kwa watengenezaji programu wengi, na hii huleta matatizo fulani wakati wa kuhamisha maendeleo yao ya HTML hadi XML.

Unganisha kwa nambari ya ishara(rejeleo la herufi nambari) inaonekana kama rejeleo la huluki, lakini badala ya jina la huluki, herufi # na nambari (katika nukuu ya desimali au hexadecimal) imebainishwa, ambayo ni nambari ya herufi katika jedwali la kanuni Unicode. Hizi kwa kawaida ni herufi ambazo haziwezi kusimba moja kwa moja, kama vile herufi ya Kiarabu katika hati iliyosimbwa ya ASCII. Ampersand inaweza kuwakilishwa kama ifuatavyo:

AT&T

Kuna sheria nyingi zaidi kuhusu kuunda hati halali ya XML, lakini madhumuni ya hii muhtasari mfupi Ilikuwa tu kuonyesha misingi muhimu ili kuelewa muundo wa hati ya XML.

Hadithi

Mwaka wa kuzaliwa kwa XML unaweza kuzingatiwa 1996, mwishoni mwa ambayo toleo la rasimu ya vipimo vya lugha lilionekana, au wakati vipimo hivi viliidhinishwa. Yote ilianza na kuonekana kwa lugha ya SGML mnamo 1986.

SGML (Lugha ya Alama ya Kawaida ya Jumla - kawaida lugha ya jumla markup) imejitangaza kuwa lugha ya meta inayoweza kunyumbulika, pana na pana ya kuunda lugha za alama. Licha ya ukweli kwamba dhana ya hypertext ilionekana mwaka wa 1965 (na kanuni za msingi ziliundwa mwaka wa 1945), SGML haina mfano wa hypertext. Uundaji wa SGML unaweza kuitwa kwa ujasiri jaribio la kukumbatia ukubwa, kwani unachanganya uwezo ambao hutumiwa mara chache sana pamoja. Hii ndio shida yake kuu - ugumu na, kwa sababu hiyo, gharama kubwa ya lugha hii inazuia matumizi yake tu. makampuni makubwa ambao wanaweza kumudu kununua programu inayofaa na kuajiri wataalamu wanaolipwa sana. Kwa kuongeza, saa makampuni madogo Ni nadra kutokea kwa matatizo ambayo ni changamano kiasi kwamba SGML inahitajika kuyatatua.

SGML inatumiwa sana kuunda lugha zingine za alama; ilikuwa kwa msaada wake kwamba lugha ya alama iliundwa hati za hypertext- HTML, maelezo ambayo yalipitishwa mnamo 1992. Muonekano wake ulihusishwa na hitaji la kuandaa safu inayoongezeka ya haraka ya hati kwenye mtandao. Kukua kwa kasi kwa idadi ya miunganisho kwenye Mtandao na, ipasavyo, seva za Wavuti kumesababisha hitaji kama hilo la kuweka misimbo. hati za elektroniki, ambayo SGML haikuweza kustahimili kwa sababu ya mkondo wake wa juu wa kujifunza. ujio wa HTML ni sana lugha rahisi markup - haraka kutatuliwa tatizo hili: urahisi wa kujifunza na utajiri wa zana za maandalizi ya hati ilifanya hivyo zaidi lugha maarufu kwa watumiaji wa mtandao. Lakini kadiri idadi na ubora wa hati kwenye Wavuti zilivyokua, ndivyo mahitaji yaliyowekwa juu yao, na unyenyekevu wa HTML ukawa shida yake kuu. Idadi ndogo ya lebo na kutojali kabisa kwa muundo wa hati iliwasukuma wasanidi programu wanaowakilishwa na muungano wa W3C kuunda lugha ya lebo ambayo haitakuwa tata kama SGML na si ya awali kama HTML. Kwa hivyo, kuchanganya unyenyekevu wa HTML na mantiki ya markup ya SGML na kukidhi mahitaji ya mtandao, XML ilizaliwa.

Faida na hasara

Faida

Mapungufu

  • Kuiga utata.
  • XML haina usaidizi wa aina ya data uliojumuishwa katika lugha. Haina uchapaji madhubuti, ambayo ni, dhana za "nambari", "kamba", "tarehe", " maadili ya boolean" na kadhalika.
  • Muundo wa kidaraja wa data unaotolewa na XML ni mdogo ikilinganishwa na muundo wa uhusiano na grafu zenye mwelekeo wa kitu na mfano wa mtandao data.

Inaonyesha XML kwenye Wavuti Ulimwenguni Pote

Njia tatu za kawaida za kubadilisha hati ya XML kuwa fomu inayoweza kuonyeshwa na mtumiaji ni:

  1. Kutumia mitindo ya CSS;
  2. Kutumia mabadiliko ya XSLT;
  3. Kuandika kidhibiti cha hati cha XML katika lugha yoyote ya programu.

Bila kwa kutumia CSS au XSL Hati ya XML huonyeshwa kama maandishi wazi katika vivinjari vingi vya Wavuti. Baadhi ya vivinjari kama vile Internet Explorer, Mozilla na Mozilla Firefox huonyesha muundo wa hati katika mwonekano wa mti, huku kuruhusu kukunja na kupanua nodi kwa kubofya kipanya.

Kutumia Mitindo ya CSS

Mchakato huo ni sawa na kutumia CSS kwa hati ya HTML ili kuonyeshwa.

Kwa kutumia CSS Inapoonyeshwa kwenye kivinjari, hati ya XML lazima iwe na kiungo maalum kwenye karatasi ya mtindo. Kwa mfano:

Hii ni tofauti na mbinu ya HTML, ambayo hutumia kipengele .

Inatumia mabadiliko ya XSLT

XSL ni teknolojia inayoeleza jinsi ya kufomati au kubadilisha data ya hati ya XML. Hati inabadilishwa kuwa umbizo linalofaa kuonyeshwa kwenye kivinjari. Kivinjari ndicho matumizi ya kawaida ya XSL, lakini usisahau kuwa ukiwa na XSL unaweza kubadilisha XML kuwa umbizo lolote, k.m.