Ufafanuzi wa aina ya hati ya dtd inamaanisha nini? Lugha ya XML - Ufafanuzi wa Aina ya Nyaraka (DTD). Kutangaza sifa yenye thamani

Maelezo ya schema ya hati

DTD inaelezea mpangilio wa hati kwa lugha fulani ya alama kupitia seti ya matamko (vitu vya kigezo, vipengee na sifa) vinavyoelezea aina yake (au aina) kulingana na vizuizi vya kisintaksia vya hati hiyo. DTD pia inaweza kutangaza miundo ambayo ni muhimu kila wakati kufafanua muundo wa hati, lakini inaweza, hata hivyo, kuathiri tafsiri ya hati fulani.

Kutangaza vipengee vya kigezo

Tamko la kitu cha kigezo hufafanua jumla ya aina fulani ambayo inaweza kurejelewa na kupanuliwa mahali fulani katika DTD. Macro hizi zinaweza zisionekane kwenye hati yenyewe, lakini tu kwenye DTD. Ikiwa kipengee cha kigezo kinarejelewa kwa jina la DTD yake, hupanuliwa hadi kuwa mfuatano unaobainisha yaliyomo kwenye kitu hicho.

Kipengee cha kigezo cha mtindo wa fonti kina kikundi cha lebo TT | Mimi | B | KUBWA | NDOGO.

"#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">

Kipengee cha kigezo cha ndani kina data ya maandishi na vipengee vinne zaidi mtindo wa fonti , vifungu vya maneno , maalum na formctrl .

Tamko la vipengele

Matangazo ya vipengele hutoa orodha ya majina ya vipengele vinavyoruhusiwa katika hati, na pia kubainisha taarifa kuhusu lebo (kama zinahitajika) na muundo wa maudhui kwa kila kipengele.

Mbalimbali maneno muhimu na wahusika hufafanua yaliyomo kwenye kipengele:

  • TUPU - maudhui tupu
  • YOYOTE - maudhui yoyote
  • , - inaonyesha utaratibu
  • | - mgawanyiko wa njia mbadala
  • () - kikundi
  • * - idadi yoyote ya vipengele (sifuri au zaidi)
  • + - kwa angalau kipengele kimoja (moja au zaidi)
  • ? - uwepo wa hiari wa kitu (sifuri au moja)
  • Ikiwa sivyo *, + au ? - lazima kuwe na kipengele kimoja tu

(DT|DD) +>

Kipengele cha DL lazima kiwe na kipengele kimoja au zaidi cha DT au DD kwa mpangilio wowote.

(%block;|SCRIPT) + -(FOMU) >

Kipengele cha FORM lazima kiwe na kipengele kimoja au zaidi kilicho na kipengee cha kigezo cha kuzuia au vipengele vya SCRIPT kwa mpangilio wowote, lakini haiwezekani kuwa na kipengele kingine cha FORM.

Kufafanua Sifa

Kila kipengele katika hati ya DTD kinaweza kuwa na orodha ya sifa zinazohusiana nayo. Ili kufanya hivyo, tumia maelekezo ya!ATTLIST, ambayo hubainisha jina la kipengele ambacho orodha ya sifa inaweza kuchorwa na vigezo vya kila sifa: jina lake, aina na sifa chaguomsingi.

Kwa mfano:

jina CDATA #INAHITAJIKA>

Mfano huu unafafanua sifa ya jina kwa kipengele cha MAP. Ni lazima.

Kuna aina hizi za sifa:

  • CDATA (Seti ya Tabia ya data) - thamani ya sifa inaweza kuwa data yoyote ya tabia
  • Kitambulisho - thamani ya sifa lazima iwe kitambulisho cha kipekee cha kipengele
  • IDREF - thamani ya kipengele ni rejeleo la kipengele kwa kitambulisho chake
  • IDREFS - sawa na IDREF, lakini kwa uwezo wa kuunganisha si kwa kitambulisho kimoja, lakini kwa kadhaa
  • NMTOKEN - thamani ya sifa inaweza kuwa mlolongo wa wahusika, sawa na jina (kwa hivyo jina - ishara ya jina). Huu ni mfuatano ambao una mchanganyiko wowote wa herufi zinazoruhusiwa kwa majina ya XML.
  • NMTOKENS - thamani ya sifa ni orodha ya maadili
  • ENTITY - thamani inatumika kurejelea huluki ya nje.
  • ENTITIES - inakuwezesha kutaja orodha ya vyombo vya nje, vinavyotenganishwa na nafasi.
  • NOTE - thamani ya sifa inaweza kuwa mojawapo ya vidokezo vilivyofafanuliwa hapo awali
  • MAELEZO - hukuruhusu kutaja orodha ya nukuu.
  • Uorodheshaji na uorodheshaji wa NOTATION
  • ENUMERATION - hubainisha orodha ya njia mbadala za thamani zinazowezekana.

Kuna sifa zifuatazo chaguo-msingi:

  1. IMPLIED - thamani ya sifa haihitajiki kubainishwa;
  2. INAHITAJIKA - thamani ya sifa lazima ibainishwe;
  3. ILIYOFANIKIWA - thamani ya sifa hii imeelezwa kuwa mara kwa mara katika DTD na haiwezi kubadilishwa katika hati;
  4. baadhi ya thamani maalum ambayo hutumiwa na chaguo-msingi.

Kuunganishwa kwa hati na DTD maalum

Ili kuhusisha hati na DTD maalum, lazima ueleze kipengele cha Tangazo la Aina ya Hati mwanzoni mwa maandishi ya hati.

Kulingana na eneo la DTD, Tamko la Aina ya Hati inaweza kuwa ya aina mbili:

  • Kitengo cha ndani cha DTD

Seti ya matamko ya DTD iko ndani ya mwili wa hati yenyewe. Kwa mfano:

]> ]>

  • Sehemu ndogo ya DTD ya nje

Seti ya matamko ya DTD iko katika sehemu tofauti faili ya maandishi na kiendelezi .dtd Katika kesi hii, kiunga cha faili kinaweza kufanywa kupitia kitambulisho cha umma na (au) kupitia kitambulisho cha mfumo. Kwa mfano:

"http://www.w3.org/TR/html4/strict.dtd">

Mfano

Mfano ni sana XML rahisi DTD inayoelezea orodha ya watu:

(mtu*) > (jina, tarehe ya kuzaliwa?, jinsia?, nambari ya usalama wa kijamii?) > (#PCDATA) > (#PCDATA) > (#PCDATA) >

Kuanzia mstari wa kwanza:

  1. Kipengele Ina idadi yoyote ya vipengele Ishara<*>inamaanisha kuwa vitu 0, 1 au zaidi vinawezekana Ndani ya kipengele .
  2. Kipengele Ina vipengele , , Na . Isharainamaanisha kipengele ni cha hiari. Kipengele haina, ambayo ina maana kwamba kipengele lazima vyenye kipengele .
  3. Kipengele ina data.
  4. Kipengele ina data.
  5. Kipengele ina data.
  6. Kipengele ina data.

Mfano wa hati ya XML kwa kutumia DTD hii:

> > > Fred Blogs > > 27/11/2008> > Mwanaume > > 1234567890> > >

Angalia pia


Wikimedia Foundation. 2010.

Tazama "DTD" ni nini katika kamusi zingine:

    DTD- , kufa katika einer ASCII Datei (ASCII) abgelegte Beschreibung der Struktur von Dokumenten, welche alle vom selben Typ sind. Eine DTD inatokana na Regeln katika uhasibu wa kimataifa… … Universal-Lexikon

    DTD- inaweza kusimama kwa: Yaliyomo 1 Media 2 Muziki 3 Michezo 4 Teknolojia 4.1 Kompyuta ... Wikipedia

    DTD- steht für: Inhaltsverzeichnis 1 Medien 2 Muziki 3 Teknologi 3.1 Kompyuta 3.1.1 Spiele … Deutsch Wikipedia

    Dtd- steht für: Darwin Digital Television, eine australische Fernsehstation Delta Tau Delta, eine US amerikanische Studentenorganization Document Type Ufafanuzi, siehe Dokumenttypdefinition … Deutsch Wikipedia

    DTD- (dē dē dēʹ) n. Seti ya sheria za kuashiria hati katika SGML. * * * …Universalium

    DTD- (ufafanuzi wa aina ya hati) vipimo vilivyoandikwa katika Alama ya Kawaida ya Jumla Lugha na iliyo na habari juu ya muundo wa hati fulani (Kompyuta) ... Kamusi ya kisasa ya Kiingereza

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 kumbukumbu ya 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 jina kamili Lugha ya maelezo 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 habari kuhusu kipengele cha mtoto Aina ya Sifa

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

Ufafanuzi: Sehemu hii inaelezea kanuni za jumla za uandishi Kuamua aina ya hati. Hasara kuu na vipengele vya DTD pia vinajadiliwa.

Kwa nini unahitaji DTD?

Wakati wa kuunda hati ya XML, msanidi mwenyewe anaamua: nini cha kutaja vitambulisho, kwa utaratibu gani wataonekana, ni data gani itaandikwa katika kipengele fulani, ikiwa kipengele kitakuwa na sifa au la, na mengi zaidi. Bila maelezo rasmi ya muundo wa hati, msanidi wake pekee ndiye anayeweza kutumia hati hii. Ikiwa hati iliyotengenezwa ya XML imekusudiwa kupitishwa kwa ulimwengu wa nje, kwa mfano, kwa washirika wa biashara, na ikiwa unapanga pia kupokea hati zilizoandikwa kwa muundo sawa kwa kujibu, huwezi kufanya bila ufafanuzi wa aina ya hati (DTD). Hii ni kutokana na ukweli kwamba ili pande zote mbili zielewe habari zilizopokelewa, vipengele na sifa katika nyaraka zinapaswa kutumiwa na pande zote kwa njia sawa. Ufafanuzi wa aina ya hati huleta ukali na usahihi kwa sheria za kuandika nyaraka zilizoundwa vizuri. Hati za XML. Imehifadhiwa mwanzoni mwa faili ya XML au nje kama faili ya *.DTD, ufafanuzi wa aina ya hati huelezea muundo wa habari wa hati. DTD huorodhesha majina ya vipengee vinavyowezekana, inafafanua sifa zinazopatikana kwa kila aina ya kipengele, na inaelezea uwekaji wa vipengele.

XML hutumiwa kama njia ya kuelezea sarufi ya lugha zingine. Na kwa hivyo, kukuza lugha ya kuandika hati za XML katika eneo fulani, tutalazimika kuunda kamusi ya eneo hili la shughuli. DTD kwa ufafanuzi zina taarifa zote zinazoweza kuonekana katika hati ya XML. Kila kitu kinachoingia kwenye mradi lazima kijumuishwe katika DTD. Kwa hivyo, maelezo ya DTD kimsingi ni kamusi kama hiyo. Ulimwengu wa kisasa unabadilika sana, kwa hivyo haijulikani mapema ni habari gani inaweza kuhitajika katika siku zijazo, na ili kuzuia kubadilika mara kwa mara muundo wa hati, kamusi iliyotengenezwa kwa kawaida inajumuisha kila kitu ambacho kinaweza kuhitajika kwa mahususi. aina za biashara au tasnia. Hii inaruhusu ufafanuzi wa DTD kutumika kama zana ya uchanganuzi na muundo. Programu za XML huwasiliana kulingana na msamiati wanazoelewa, kwa hivyo kufafanua DTD husaidia kuelewa ni nini programu inaweza kuelezea.

Matumizi mengine ya DTD ni kuangalia usahihi wa hati iliyoandikwa ya XML. Nyaraka zilizoundwa vizuri, zilizoandikwa kulingana na sheria zote zilizoelezwa katika vipimo vya XML, haziwezi kuchunguzwa kwa makosa. Makosa yaliyokosa yanaweza kusababisha uharibifu kwa programu inayoshughulikia hati hizi, au kuingia kwa data isiyo sahihi kwenye mfumo. Lakini ikiwa hati inarejelea ufafanuzi wa DTD, basi kwa kutumia kichanganuzi cha uthibitishaji tunaweza kuangalia ikiwa kuna makosa katika hati yetu. Mchanganuzi ataomba DTD na ahakikishe kuwa hati inafuata kanuni za kisarufi zilizoelezwa ndani yake. Analyzer hutambua makosa ya kimuundo na maudhui, ambayo hupunguza sana kiasi cha hundi zinazofanywa na mantiki ya maombi.

Kuandika ufafanuzi wa DTD: kanuni za jumla.

Kuhusisha DTD na Hati ya XML

XML 1.0 hutoa tamko maalum la DOCTYPE kuhusisha tamko la DTD na mfano wa hati. Ni lazima ifuate tamko la XML na itangulie vipengele vyovyote vya hati. Hata hivyo, kunaweza kuwa na maoni na amri za kuchakata kati ya XML na tamko la DOCTYPE.

Tamko la DOCTYPE lina neno kuu la DOCTYPE, likifuatiwa na jina la kipengele cha msingi cha hati, na kisha uundaji wa tamko la maudhui. Kabla ya kueleza kauli hii, fikiria mfano wa eneo la tamko la DOCTYPE katika mfano wa hati. Ifuatayo ni mistari mitatu ya kwanza ya hati ya XML:

..

Inawezekana kuandika sehemu ndogo ya nje ya matamko ndani faili tofauti DTD, inajumuisha kitengo kidogo cha ndani katika mwili wa tamko la DOCTYPE, au fanya zote mbili. Katika kesi ya mwisho (kuchanganya DTD za ndani na za nje), maazimio mapya yanaweza kubainishwa katika DTD za ndani au zile zilizomo kwenye zile za nje zinaweza kuandikwa upya (kwa ufafanuzi wa vipimo vya XML, vichanganuzi husoma sehemu ndogo ya ndani kwanza, na kwa hivyo maazimio. yaliyomo humo yatangulie).

Matangazo ya XML yanaweza kuwa na sifa ya pekee, ambayo inakubali tu thamani "ndiyo" na "hapana". Ikiwa thamani ya sifa ni ndiyo, basi matamko ya nje ya mfano wa hati hayaathiri taarifa inayowasilishwa na hati kwa programu inayoitumia. Nambari ya nambari inaonyesha kuwa kuna matamko ya nje yenye thamani zinazohitajika ili kuelezea vizuri yaliyomo kwenye hati - kwa mfano, maadili maalum ya chaguo-msingi. Kwa mazoezi, sifa ya hiari ya kujitegemea haitumiki sana. Kuweka sifa hii kuwa ndiyo hakuhakikishi kutokuwepo kwa vitegemezi vya nje vya aina yoyote. Ni tu kwamba utegemezi wa nje katika kesi hii hautasababisha kosa katika hati ikiwa haijajumuishwa katika usindikaji. Kwa hivyo kimsingi sifa hii ni ishara kwa vichanganuzi na programu zingine zinazoonyesha kama zinahitaji kutumia maudhui yoyote ya nje.

Sehemu ya ndani ya tamko la lebo ya DOCTYPE ina mabano ya mraba ya kushoto, orodha ya matamko, na mabano ya mraba ya kulia:

DTD za ndani ni muhimu sana; kila mara zimo kwenye hati inayozitumia na kwa hivyo zinaweza kupatikana kwa urahisi na mchanganuzi. Hata hivyo, DTD za ndani huongeza kwa kiasi kikubwa ukubwa wa hati. Katika mazoezi, DTD za ndani hutumiwa mara nyingi wakati huo huo na za nje ili kuongeza matamko mapya. Ikiwa kitu chochote kimetangazwa hapo ambacho pia kimetangazwa katika DTD ya nje, kile cha ndani kinatanguliwa. Hii hukuruhusu kurekebisha matamko ili kuendana na mahitaji ya hati mahususi.

DTD za nje zinaweza kunyumbulika zaidi katika baadhi ya mambo. KATIKA kwa kesi hii tamko la DOCTYPE lina neno kuu la kawaida na jina la kipengele cha msingi, likifuatiwa na neno kuu la SYSTEM au PUBLIC lingine linaloonyesha chanzo cha ufafanuzi wa nje wa DTD, ikifuatiwa na ujanibishaji wa ufafanuzi huo. Ikiwa neno kuu ni SYSTEM , DTD lazima ikae moja kwa moja na kwa uwazi kwenye URL iliyobainishwa.

Ikiwa DTD za nje zimeandikwa mara nyingi sana, huanza kupoteza maana yao, ambayo ni ishara ya muundo mbaya wa awali.

Neno kuu la UMMA limekusudiwa kwa kamusi zinazojulikana sana. Programu inayochanganua hati kutoka kwa kamusi hii lazima itumie mbinu fulani kupata DTD inayofaa.

Kiwango cha XML 1.0 kinaruhusu tamko la UMMA kuwa na URI ya umma na kitambulisho cha mfumo. Ikiwa programu au kichanganuzi kinachoendesha hati hakiwezi kupata DTD kutoka kwa URI yenye neno kuu la UMMA, lazima kitumie kitambulisho cha mfumo.

Matangazo ya msingi ya alama

Maudhui yanayoruhusiwa katika hati ya XML yanabainishwa na aina nne za tamko la ghafi katika DTD. Jedwali lifuatalo linaonyesha maneno muhimu yanayohusiana na matamko haya na maana zake:

Aina mbili za kwanza zinahusiana na maelezo tunayotarajia kupata katika hati ya XML - vipengele na sifa.

Aina mbili za mwisho hutumiwa kwa usaidizi. Vyombo vya XML hurahisisha maisha hasa kwa msanidi wa kamusi. Kwa kawaida, huwa na maudhui ambayo hutumiwa mara kwa mara katika DTD au hati ambayo inahalalisha kuundwa kwa tamko maalum. Matumizi ya tamko hili yanakumbusha taarifa ya pamoja katika lugha za C/C++, ambapo jina linatumiwa badala ya maudhui.

Vidokezo vinaelezea maudhui ambayo hayajaandikwa katika XML. Zinatumika kutangaza darasa maalum la data na kulihusisha na programu ya nje. Mpango huu wa nje unakuwa kidhibiti cha darasa la data lililotangazwa. Kwa mfano, baada ya kuhusisha picha ya JPEG na hati, msanidi anataka programu ikubali na kutoa data ya jozi katika umbizo hilo. Bila shaka, katika kesi hii, hati inategemea aina gani ya kushughulikia inapatikana kwenye mfumo wa kupokea hati. Kwa maslahi ya kubebeka, baadhi ya waandishi hawatoi viungo kwa vidhibiti. Katika kesi hii, nukuu inakuwa tu utaratibu wa kuandika.

Katika hati za XML, DTD inafafanua seti ya vipengele halali, inabainisha vipengele vinavyoweza kuwa ndani ya vipengele vingine, na kufafanua sifa halali kwa kila moja yao. Sintaksia ya DTDs ni ya kipekee sana na inahitaji juhudi za ziada kutoka kwa msanidi programu wakati wa kuunda hati kama hizo (ugumu wa DTDs ni moja ya sababu kwamba utumiaji wa SGML, ambao unahitaji kufafanua DTD kwa hati yoyote, haujaenea kama hii. kama, kwa mfano, HTML). Kama ilivyobainishwa, si lazima kutumia DTD katika XML - hati zilizoundwa bila sheria hizi zitachakatwa kwa usahihi na mchanganuzi ikiwa zinakidhi mahitaji ya msingi ya syntax ya XML. Hata hivyo, udhibiti wa aina za vipengele na usahihi wa mahusiano kati yao katika kesi hii itasimama kabisa na mwandishi wa hati. Hadi sarufi ya lugha yetu mpya itakapoelezewa, ni sisi tu tutaweza kuitumia, na kwa hili tutalazimika kutumia programu maalum iliyotengenezwa, na sio programu za ulimwengu wote.

DTD ya XML hutumia aina zifuatazo za sheria: sheria za vipengele na sifa zao, maelezo ya makundi (ufafanuzi wa jumla), maelezo ya fomati za data ya binary. Zote zinaelezea muundo wa kimsingi wa lugha - vipengee, sifa, viunga vya ishara, faili za data za binary za nje.

Ili kutumia DTD katika hati yetu, tunaweza kuielezea katika faili ya nje na, wakati wa kuelezea DTD, tupe kiunga cha faili hii, au moja kwa moja ndani ya hati yenyewe, chagua eneo ambalo utafafanua muhimu. kanuni. Katika kesi ya kwanza, hati inabainisha jina la faili iliyo na maelezo ya DTD:

...

Ndani ya hati, maazimio ya DTD yanajumuishwa kama ifuatavyo:

... ... ]> ...

Katika tukio ambalo maelezo ya ndani na ya nje yanatumiwa wakati huo huo, programu ya analyzer itazingatia kwanza ya ndani, i.e. kipaumbele chao ni cha juu zaidi. Wakati wa kuhalalisha hati, kichakataji cha XML kwanza hutafuta DTD ndani ya hati. Ikiwa sheria ndani ya hati haijafafanuliwa na sifa haijawekwa pekee="ndio", basi programu itapakia faili maalum ya nje na sheria zilizomo ndani yake zitasomwa kutoka hapo. Ikiwa sifa kujitegemea ina maana "ndio", basi matumizi ya maelezo ya nje ya DTD yatapigwa marufuku.

Ufafanuzi wa Kipengele

Kipengele katika DTD kinafafanuliwa kwa mpini! KIPINDI, ambayo inabainisha jina la kipengele na muundo wa yaliyomo.

Kwa mfano, kwa kipengele kanuni ifuatayo inaweza kufafanuliwa:

Neno kuu la ELEMENT linaonyesha kuwa taarifa hii itaelezea kipengele cha XML. Ndani ya maagizo haya, jina la kipengele (maua) na aina ya maudhui yake imeelezwa.

Katika ufafanuzi wa kipengele, sisi kwanza tunataja jina la kipengele (maua), na kisha mfano wake wa maudhui - tunaamua ni vipengele gani vingine au aina za data zinaweza kutokea ndani yake. Katika kesi hii, yaliyomo ya kipengele cha maua yatatambuliwa kwa kutumia alama maalum ya PCDATA (ambayo ina maana data ya tabia inayoweza kugawanyika - taarifa yoyote ambayo programu ya analyzer inaweza kufanya kazi nayo). Kuna kauli mbili zaidi zinazofafanua aina ya maudhui: TUPU, YOYOTE. Ya kwanza inaonyesha kuwa kipengee kinapaswa kuwa tupu (kwa mfano, ), pili ni kwamba yaliyomo katika kipengele hayajaelezewa mahususi.

Msururu wa vitu vya watoto kwa kipengele cha sasa umebainishwa kama orodha iliyotenganishwa kwa koma ya majina ya vipengele. Katika kesi hii, ili kuonyesha idadi ya marudio ya inclusions ya vipengele hivi, alama +, *, ? :

Mfano huu unabainisha kuwa ndani ya kipengele kichwa, mwandishi na vipengele vya jedwali la yaliyomo lazima vifafanuliwe, na kipengele cha kichwa kiwe kipengele cha lazima na inaweza kutokea mara moja tu, kipengele cha mwandishi kinaweza kutokea mara nyingi, na kipengele cha meza-ya-yaliyomo ni chaguo, i.e. inaweza kukosa. Ikiwa kuna chaguo kadhaa zinazowezekana kwa maudhui ya kipengele kilichofafanuliwa, zinapaswa kutengwa kwa kutumia ishara "|". :

* katika mfano huu inaonyesha kuwa mlolongo wa vipengele vya ndani vinavyofafanuliwa unaweza kurudiwa mara kadhaa au kutotumika kabisa.

Ikiwa ufafanuzi wa kipengele unabainisha maudhui "mchanganyiko", i.e. data ya maandishi au seti ya vipengele, lazima kwanza ubainishe PCDATA na kisha utenganishwe na "|" orodha ya vipengele.

Mfano wa hati halali ya XML:

]> ...

Alama za njia
12-12-12 46-23-62 [barua pepe imelindwa]

Kufafanua Sifa

Orodha za sifa za kipengele hufafanuliwa kwa kutumia neno kuu! ATTLIST. Ndani yake, majina ya sifa, aina za maadili yao na vigezo vya ziada vimeainishwa. Kwa mfano, kwa kipengele

Sifa zifuatazo zinaweza kufafanuliwa:

KATIKA katika mfano huu kwa kipengele makala sifa tatu zinafafanuliwa: id, kuhusu Na aina, ambazo zina aina za kitambulisho (kitambulisho), CDATA na orodha ya thamani zinazowezekana, mtawalia. Kuna jumla ya aina sita za thamani za sifa zinazowezekana:

  • CDATA - yaliyomo kwenye hati yanaweza kuwa data yoyote ya wahusika
  • Kitambulisho - hufafanua kitambulisho cha kipekee cha kipengele kwenye hati
  • IDREF(IDREFS) - inaonyesha kwamba thamani ya sifa inapaswa kuwa jina (au majina kadhaa kama hayo, yaliyotenganishwa na nafasi katika kesi ya pili) ya kitambulisho cha kipekee cha kipengele kilichoelezwa katika hati hii.
  • ENTITY(ENTITIES) - thamani ya sifa lazima iwe jina (au orodha ya majina ikiwa ENTITIES inatumika) ya sehemu (ufafanuzi mkuu) iliyofafanuliwa katika hati.
  • NMTOKEN (NMTOKENS) - maudhui ya kipengele yanaweza kuwa neno moja pekee (yaani parameta hii ni lahaja ndogo ya CDATA)
  • Orodha ya thamani halali - inafafanua orodha ya maadili ambayo sifa hii inaweza kuwa nayo.

Unaweza pia kutumia vigezo vifuatavyo katika ufafanuzi wa sifa:

  • #INAHITAJIWA - inafafanua sifa inayohitajika ambayo lazima iwekwe kwenye vipengele vyote wa aina hii
  • #IMEHUSIKA - sifa ni ya hiari
  • #ILIYOFANIKIWA "thamani" - inaonyesha kuwa sifa inapaswa kuwa nayo tu thamani iliyobainishwa, hata hivyo, ufafanuzi wa sifa yenyewe sio lazima, lakini wakati wa mchakato wa kuchanganua thamani yake kwa hali yoyote itapitishwa kwa programu ya analyzer.
  • Thamani - huweka thamani ya chaguo-msingi ya sifa

Vipengele vya Kufafanua (Ufafanuzi wa Jumla)

Huluki inawakilisha ufafanuzi ambao maudhui yake yanaweza kutumika tena katika hati. Katika lugha nyingine za programu, vipengele sawa huitwa macrodefinitions. Vipengele vya DTD huundwa kwa kutumia!Taarifa ya ENTITY:

Programu ya uchanganuzi, ikiangalia kwanza kabisa yaliyomo katika eneo la ufafanuzi wa DTD, itashughulikia maagizo haya na, wakati wa kuchanganua zaidi hati, itatumia yaliyomo kwenye sehemu ya DTD mahali ambapo jina lake linaonekana. Wale. Sasa katika hati tunaweza kutumia usemi, ambao utabadilishwa na mstari "Tunafurahi kukusalimia"

Kwa ujumla, aina tatu za ufafanuzi wa jumla zinaweza kufafanuliwa ndani ya DTD:

Ufafanuzi wa jumla wa ndani- zimeundwa ili kufafanua kamba mara kwa mara; kwa msaada wao, unaweza kupanga viungo vya habari iliyobadilishwa mara kwa mara, na kufanya hati isomeke zaidi. Vipengele vya ndani vimejumuishwa kwenye hati kwa kutumia ampersand &

Kuna vibambo vitano vilivyofafanuliwa awali katika XML:

  • < - символ "<"
  • > - ishara ">"
  • & - ishara "&"
  • "- ishara ya apostrofi""
  • "- tabia ya kunukuu mara mbili"""

Ufafanuzi wa jumla wa nje- onyesha yaliyomo kwenye faili ya nje, na maudhui haya yanaweza kuwa maandishi au data ya binary. Katika kesi ya kwanza, ambapo macro hutumiwa itaingizwa mistari ya maandishi, katika pili - data ya binary ambayo haijazingatiwa na analyzer na hutumiwa na programu za nje

Ufafanuzi wa Utawala wa Macro- ufafanuzi wa jumla wa parameta unaweza kutumika tu ndani ya eneo la DTD na unaonyeshwa na alama maalum ya % iliyoingizwa kabla ya jina la jumla. Katika kesi hii, maudhui ya sehemu yatawekwa moja kwa moja katika maandishi ya utawala wa DTD

Kwa mfano, kwa kipande cha hati kifuatacho:

Unaweza kutumia fomu fupi:

Macros mara nyingi hutumiwa kuelezea vigezo katika sheria za sifa. Katika kesi hii, inawezekana kutumia ufafanuzi wa sifa sawa kwa vipengele tofauti:

Kuandika data

Mara nyingi, wakati wa kuunda kipengee cha XML, msanidi anahitaji kuamua ni aina gani ya data inaweza kutumika kama yaliyomo. Wale. ikiwa tutafafanua kipengele 10.10.98, basi tunataka kuwa na uhakika kwamba katika hati mahali hapa kutakuwa na mfuatano unaowakilisha tarehe, na si nambari au mfuatano wa kiholela wa wahusika. Kutumia kuandika data, unaweza kuunda vipengele ambavyo maadili yanaweza kutumika, kwa mfano, kama vigezo katika maswali ya SQL. Katika kesi hii, programu ya mteja lazima ijue ni aina gani ya data ambayo thamani ya kipengele cha sasa ni ya na, ikiwa inalingana, itazalisha swali la SQL.

Ikiwa kichakataji cha XML cha uthibitishaji kinatumika kama programu ya upande wa mteja, basi taarifa kuhusu aina hiyo inaweza kusambazwa kwa kutumia kipengele kilichoundwa mahususi kwa sifa hii ambacho kina ufafanuzi ufaao wa DTD. Wakati wa mchakato wa kuchanganua, kichanganuzi kitapitisha thamani ya sifa hii kwa programu-tumizi ya mteja, ambayo inaweza kutumia taarifa hii inavyotarajiwa. Kwa mfano, ili kubainisha kuwa maudhui ya kipengele lazima yawe nambari kamili ndefu, unaweza kutumia ufafanuzi ufuatao wa DTD:

Kwa kuweka sifa kwa thamani yake chaguo-msingi ya LONG na kuifafanua kama ILIYOFANIKIWA, tuliruhusu programu ya mteja kupata taarifa muhimu kuhusu aina ya maudhui. ya kipengele hiki, na sasa inaweza kuamua ikiwa aina ya maudhui inalingana na iliyobainishwa katika ufafanuzi wa DTD.

Hapa kuna mfano wa hati ya XML ambayo inafafanua na kutumia vipengee kadhaa vilivyo na aina tofauti za data:

... 5 2 32.5 kweli 18346 34 kusugua. 28 k. ...

Kama inavyoonekana kutoka kwa mfano, utaratibu wa kuunda vitu vya hati haujabadilika hata kidogo. Taarifa zote zinazohitajika ili kuangalia aina za data zimejumuishwa katika ufafanuzi wa vipengele ndani ya kizuizi cha DTD.

Kwa kumalizia, ningependa kutambua kwamba DTD hutupatia utaratibu unaofaa sana wa kudhibiti maudhui ya hati. Leo, karibu programu zote za kutazama hati za mtandao hutumia sheria za DTD. Hata hivyo, hii ni mbali na njia pekee ya kuangalia usahihi wa hati. KATIKA kwa sasa katika muungano wa W3 inazingatiwa kiwango kipya Lugha ya kuelezea muundo wa hati, inayoitwa schemas za data. Sehemu inayofuata imejitolea kufanya kazi nao.

DTD ni seti ya sheria za sintaksia ambazo muundo wa hati ya XML huthibitishwa. DTD inafafanua kwa uwazi muundo wa hati ya XML, inabainisha vipengele na sifa zake, na hutoa maelezo mengine ambayo yanatumika kwa hati zote za XML zinazozalishwa kutoka kwa DTD.

Tafadhali kumbuka kuwa uwepo wa DTD sio lazima. Ikiwa DTD ipo, mfumo wa XML huitumia kutafsiri hati ya XML. Ikiwa hakuna DTD, mfumo wa XML unatarajiwa kutafsiri hati kulingana na sheria zake. Hata hivyo, bado inashauriwa kuunda DTD kwa nyaraka za XML, kwa kuwa hii inawafanya iwe rahisi kutafsiri na kuangalia muundo.

DTD inaweza kujumuishwa moja kwa moja kwenye hati ya XML, iliyorejelewa na URL, au mchanganyiko wa hizo mbili. Unapojumuisha DTD moja kwa moja kwenye hati ya XML, ufafanuzi wa DTD huonekana mara baada ya utangulizi:

Sifa_ya_kipengele_cha mizizi inalingana na jina la kipengee kikuu katika lebo zilizo na hati nzima ya XML. Sehemu ya "matangazo mengine" ina ufafanuzi wa vipengele, sifa, nk.

Unaweza kupendelea kuweka DTD katika faili tofauti ili kudumisha muundo wa programu wa kawaida. Hebu tuone jinsi kiungo cha DTD ya nje kinavyoonekana katika hati ya XML. Shida inaweza kutatuliwa kwa amri moja rahisi:

Kama ilivyo kwa tamko la ndani la DTD, root_element_name lazima lilingane na jina la kipengele cha mizizi katika lebo zilizo na hati nzima ya XML. Sifa ya SYSTEM inaonyesha kuwa some_dtd.dtd iko kwenye seva ya ndani. Hata hivyo, faili ya some_dtd.dtd pia inaweza kurejelewa na URL yake kamili. Hatimaye, URL ya DTD ya nje, iliyo kwenye seva ya ndani au ya mbali, imetajwa katika quotes.

Kwa hivyo unawezaje kuunda DTD ya Kuorodhesha 14.1? Kwanza, tutaunda marejeleo kwa DTD ya nje katika hati ya XML. Kama ilivyotajwa katika sehemu iliyopita, rejeleo la DTD linaonekana kama hii:

Tukirudi kwenye Orodha 14.1, tunaona kwamba kitabu cha kupikia ni jina la kipengele cha msingi, na cookbook.dtd ni jina la faili ya DTD. Yaliyomo kwenye DTD yameonyeshwa katika Orodha 14.2, na hapa chini ni maelezo ya kina mistari yote.

Orodha 14.2. DTD kwa kuorodhesha 14.1(cookbook.dtd)

] >

Hati hii ya ajabu inamaanisha nini? Licha ya utata wa nje, kwa kweli ni rahisi sana. Wacha tupitie yaliyomo kwenye Orodha 14.2:

Mbele yetu ni utangulizi wa XML, ambao tayari umetajwa hapo juu.

Mstari wa tatu unaelezea kipengele cha XML, katika kesi hii kipengele cha mizizi ya kitabu cha kupikia. Inafuatiwa na kichocheo cha neno, kilichofungwa kwenye mabano. Hii ina maana kwamba vitambulisho vya kijitabu cha kupikia vina lebo ndogo inayoitwa mapishi. Alama ya + inaonyesha kuwa lebo za kijitabu cha wazazi zinajumuisha jozi moja au zaidi ya lebo za mapishi.

Mstari wa nne unaelezea lebo ya mapishi. Inasema kuwa lebo ya mapishi ina vitambulisho vinne: kichwa, maelezo, viungo, na mchakato. Kwa kuwa majina ya lebo hayafuatiwi na viashirio vya marudio (tazama sehemu inayofuata), lebo za mapishi lazima ziwe na jozi moja ya kila moja ya lebo zilizoorodheshwa.

Huu hapa ni ufafanuzi wa kwanza wa lebo ambayo haina lebo zilizowekwa. Kwa ufafanuzi, ina #PCDATA, ambayo ni data kiholela ya wahusika ambayo haizingatiwi kama sehemu ya lebo.

Kwa ufafanuzi, kipengele cha viungo kina lebo moja au zaidi inayoitwa kiungo. Rejelea Orodha 14.1 na utaelewa.

Kwa kuwa kipengele cha kiungo kinalingana na kiungo kimoja, ni mantiki kwamba kipengele kina data rahisi ya tabia.

Kipengele cha mchakato kina mfano mmoja au zaidi wa kipengele cha hatua.

Kipengele cha hatua, kama kipengele cha kiungo, kinalingana na kipengee mahususi katika orodha ya zaidi ngazi ya juu. Kwa hiyo, lazima iwe na data ya tabia.

Ona kwamba kipengele cha mapishi katika Orodha 14.1 kina sifa. Sifa hii, kitengo, inabainisha jamii ya jumla ambayo kichocheo ni cha - katika mfano uliotolewa, kikundi "Kiitaliano" (Kiitaliano). Ufafanuzi wa ATTLIST unabainisha jina la kipengele na jina la sifa. Kwa kuongezea, kugawa kila kichocheo kwa kategoria mahususi hurahisisha uainishaji, kwa hivyo sifa inatangazwa kuwa inahitajika (#INAHITAJI).

Mstari wa mwisho unakamilisha ufafanuzi wa DTD. Ufafanuzi lazima ukamilike kwa usahihi, vinginevyo kosa litatokea.

Kuhitimisha sehemu hii, nitatoa muhtasari wa sehemu kuu za faili ya kawaida ya DTD:

  • matamko ya aina ya kipengele;
  • matamko ya sifa;
  • ID, IDREF na IDREFS;
  • matamko ya chombo.

Tayari tumeona baadhi ya vipengele hivi katika Orodha 14.2. Kila sehemu itaelezewa kwa undani zaidi hapa chini.

Matangazo ya kipengele

Vipengele vyote vinavyotumiwa katika hati ya XML lazima vifafanuliwe katika DTD inayoambatana na hati. Tayari tumeona aina mbili za ufafanuzi wa kawaida: kwa kipengele kilicho na vipengele vingine, na kwa kipengele kilicho na data ya tabia. Ufafanuzi huu inaonyesha kuwa kipengee kina data ya wahusika tu:

Ufafanuzi ufuatao wa kipengele cha mchakato unasema kuwa ina kipengele kimoja kilichowekwa kiota kinachoitwa hatua:

Walakini, michakato iliyo na hatua moja ni nadra sana - uwezekano mkubwa, kutakuwa na hatua kadhaa. Ili kuonyesha kuwa kipengele kina tukio moja au zaidi la kipengee kilichowekwa kiota, tumia alama ya marudio:

Idadi ya vipengee vilivyowekwa inaweza kuweka kwa njia kadhaa. Orodha kamili waendeshaji kipengele wamepewa katika meza. 14.1.

Jedwali 14.1. Waendeshaji wa Kipengele

Iwapo kipengele kitakuwa na viambajengo kadhaa, vinapaswa kuorodheshwa zikitenganishwa na koma katika ufafanuzi wa kipengele kikuu:

Kwa kuwa vipengele vya marudio havijabainishwa, kila lebo lazima ionekane mara moja haswa.

Ufafanuzi wa kipengele unaboreshwa kwa kutumia waendeshaji mantiki. Hebu sema unafanya kazi na mapishi ambayo daima hujumuisha pasta na aina moja au zaidi ya jibini au nyama. Katika kesi hii, kipengele cha kiungo kinafafanuliwa kama ifuatavyo:

Kwa kuwa kipengee cha pasta lazima kiwepo kwenye kingo, kinaonyeshwa kwa ishara ya kurudia +. Hii inafuatiwa na kipengele cha jibini au kipengele cha nyama; tunatenganisha njia mbadala na bar ya wima na kuifunga kwa mabano na ishara +, kwani kichocheo daima kinajumuisha moja au nyingine.

Kuna aina nyingine za ufafanuzi wa vipengele. Tumezingatia kesi rahisi tu. Hata hivyo, nyenzo zinazotolewa zinatosha kuelewa mifano iliyotolewa katika sehemu nyingine ya sura hii.

Matamko ya Sifa

Sifa za kipengele huelezea maadili yanayohusishwa na vipengele. Vipengee vya XML kama Vipengele vya HTML, inaweza kuwa na sifuri, moja, au sifa zaidi. Syntax ya jumla ya kutangaza sifa ni kama ifuatavyo:

ElementName hubainisha jina la kipengele cha kujumuisha kwenye lebo. Sifa zinazohusiana na kipengele basi zimeorodheshwa. Kila tamko la sifa lina vipengele vitatu kuu: jina, aina ya data, na bendera inayofafanua vipengele. ya sifa hii. Matangazo ya sifa zingine yanaweza kuwekwa badala ya ellipsis(...).

Tayari tumeona tamko rahisi la sifa katika Orodha 14.2:

Walakini, kama inavyoweza kuonekana kutoka hapo juu ufafanuzi wa jumla, tamko la wakati mmoja la sifa kadhaa linaruhusiwa. Wacha tuseme kwamba pamoja na sifa ya kategoria, unataka kuhusisha sifa ya ugumu wa ziada na kipengee cha mapishi. Sifa zote mbili zimetangazwa katika orodha moja:

Fomati matangazo Kwa njia sawa sio lazima; hata hivyo, matamko ya mistari mingi ni wazi zaidi kuliko matamko ya mstari mmoja. Zaidi ya hayo, kwa kuwa sifa zote mbili zinahitajika, lebo ya reci re haiwezi kuwa na kikomo kwa sifa moja tu; ni lazima ijumuishe sifa zote mbili mara moja. Kwa mfano, lebo ifuatayo itachukuliwa kuwa batili:

Kwa nini? Kwa sababu inakosa sifa ya kategoria. Lebo sahihi lazima iwe na sifa zote mbili:

Masharti maalum ya usindikaji wa sifa yanaelezewa na bendera tatu zilizoorodheshwa kwenye Jedwali. 14.2.

Jedwali 14.2. Bendera za sifa

Aina za Sifa

Kipengele cha kipengele kinaweza kutangazwa na aina fulani. Aina za sifa zimeelezewa hapa chini.

Sifa za CDATA

Mara nyingi sana sifa huwa na data ya wahusika wa jumla. Sifa hizi huitwa sifa za CDATA. Mfano ufuatao tayari ulipatikana mwanzoni mwa sehemu hii:

ID, IDREF, na IDREFS Sifa

Wazo la kuwakilisha data bila utata (kwa mfano, habari kuhusu mtumiaji au bidhaa iliyohifadhiwa kwenye hifadhidata) kupitia vitambulisho limepatikana mara kadhaa katika sura zilizopita za kitabu. Vitambulisho pia hutumiwa mara kwa mara katika XML kwa sababu marejeleo mtambuka kati ya hati hayazuiliwi kazi za kawaida usindikaji wa data, lakini pia ndani Ulimwenguni Pote Wavuti (viungo).

Vitambulisho vya vipengele vimekabidhiwa sifa ya kitambulisho. Hebu tuseme unataka kuhusisha kitambulisho cha kipekee na kila kichocheo. Sehemu inayolingana ya DTD inaweza kuonekana kama hii:

Baada ya hayo, tamko la kipengee cha mapishi kwenye hati linaweza kuonekana kama hii:

Spaghetti alla Carbonara

Kichocheo kinatambuliwa kipekee na kitambulisho ital003. Kumbuka kuwa sifa ya redpe-id ni ya aina ya ID, kwa hivyo ital003 haiwezi kutumika kama thamani ya sifa ya kitambulisho cha kichocheo cha kipengele kingine, vinginevyo hati itachukuliwa kuwa batili kisintaksia. Sasa hebu sema kwamba baadaye unataka kurejelea kichocheo hiki kutoka kwa hati nyingine - sema, kutoka kwa orodha ya mtumiaji ya mapishi unayopenda. Hapa ndipo marejeleo mtambuka na sifa ya IDREF hutumika. Sifa ya IDREF imepewa kitambulisho ambacho kinatumika kurejelea kipengele, sawa na jinsi URL inavyotumiwa kutambua ukurasa katika kiungo. Fikiria kijisehemu kifuatacho cha msimbo wa XML:

Wakati wa usindikaji wa hati Kipengele cha XML inabadilishwa na kiungo cha kuona zaidi kwa mapishi na kitambulisho maalum (kwa mfano, jina la mapishi). Inawezekana itaumbizwa kama kiungo ili kurahisisha kuelekea kwenye kichocheo kilichotajwa.

Sifa zisizohesabika

Wakati wa kutangaza sifa, unaweza kuorodhesha maadili yote halali yanayokubaliwa na sifa. Katika mfano wetu, hii itakuwa rahisi kwa sababu unaweza kufafanua mara moja orodha ya kategoria halali. Tangazo hapo juu limeandikwa ndani fomu ifuatayo:

Kumbuka kuwa unapotumia orodha halali za thamani, huhitaji kujumuisha aina ya CDATA kwenye tamko kwa sababu thamani zote zilizoorodheshwa ziko katika umbizo la CDATA.

Sifa zilizoorodheshwa zenye thamani chaguomsingi

Wakati mwingine ni rahisi kutangaza thamani chaguo-msingi ya sifa. Kuna uwezekano kwamba umefanya hivi hapo awali wakati wa kuunda fomu zilizo na orodha kunjuzi. Kwa mfano, ikiwa mapishi mengi katika kitabu chako cha upishi ni ya Kiitaliano, sifa ya mapishi mara nyingi itaainishwa kama Kiitaliano. Katika kesi hii, kategoria ya Kiitaliano inaweza kupewa kama chaguo-msingi:

Ikiwa sifa ya kategoria haijabainishwa wazi, itabadilika kuwa Kiitaliano.

ENTITY na ENTITIES sifa

Data katika hati za XML sio maandishi kila wakati - hati inaweza pia kuwa na habari ya binary (kwa mfano, michoro). Data kama hiyo inaweza kurejelewa kwa kutumia sifa ya huluki. Kwa mfano, katika maelezo ya kipengee cha maelezo unaweza kubainisha kichocheo sifa ya picha na picha ya mchoro:

Unaweza pia kutangaza huluki kadhaa mara moja kwa kubadilisha ENTITY na ENTITIES. Maadili yanatenganishwa na nafasi.

NMTOKEN na NMTOKENS sifa

Sifa za NMTOKEN ni mfuatano wa herufi zilizojumuishwa katika seti ndogo. Kutangaza sifa ya aina ya NMTOKEN huchukulia kuwa thamani ya sifa inalingana vikwazo vilivyowekwa. Kwa kawaida, thamani ya sifa ya NMTOKEN huwa na neno moja:

Unaweza kutangaza sifa nyingi kwa wakati mmoja kwa kubadilisha NMTOKEN na NMTOKENS. Maadili yanatenganishwa na nafasi.

Matangazo ya Huluki

Tamko la huluki ni sawa na amri ya kufafanua katika baadhi ya lugha za programu, ikiwa ni pamoja na PHP. Marejeleo ya huluki yalitajwa kwa ufupi katika sehemu iliyotangulia, "Kuanzisha Sintaksia ya XML." Iwapo tu, wacha nikukumbushe kwamba kiungo cha huluki kinatumika badala ya kipande kingine cha maudhui. Wakati hati ya XML inachakatwa, matukio yote ya huluki hubadilishwa na maudhui ambayo inawakilisha. Kuna aina mbili za vyombo: ndani na nje.

Vyombo vya Ndani

Huluki za ndani ni kama viambatisho vya mfuatano vinavyohusisha jina na kipande cha maandishi. Kwa mfano, kama ungetaka kufafanua jina la kiungo cha maelezo ya hakimiliki, unaweza kutangaza huluki kama hii:

Wakati wa kuchakata hati, matukio yote ya &Hakimiliki hubadilishwa na maandishi “Copyright 2000 YourCompanyName. Haki zote zimehifadhiwa." Nambari zote za XML katika maandishi mbadala huchukuliwa kana kwamba ziko kwenye hati asili.

Huluki za ndani zinafaa katika hali ambapo unapanga kutumia huluki kwa njia ndogo. kiasi kikubwa Hati za XML. Ikiwa una idadi kubwa ya nyaraka, ni bora kutumia vyombo vya nje.

Vyombo vya Nje

Huluki za nje hutumiwa kurejelea maudhui yaliyo katika faili nyingine. Huluki za aina hii zinaweza kuwa na habari ya maandishi, lakini pia inaweza kurejelea data ya binary (kwa mfano, michoro). Tukirudi kwa mfano uliotangulia, tuseme unaamua kuhifadhi maelezo yako ya hakimiliki katika faili tofauti ili kurahisisha kuhariri katika siku zijazo. Kiungo cha faili iliyoundwa inaonekana kama hii:

Hati ya XML inapochakatwa, marejeleo yote ya &Hakimiliki hubadilishwa na yaliyomo katika hati ya hati miliki.xml. Nambari zote za XML katika maandishi mbadala huchukuliwa kana kwamba ziko kwenye hati asili.

Vyombo vya nje pia ni muhimu kwa marejeleo picha za picha. Kwa mfano, ikiwa unataka kujumuisha nembo ya picha katika hati ya XML, unda huluki ya nje:

Rasilimali za XML

Ingawa nyenzo zilizo hapo juu zinatosha kuelewa muundo wa msingi Hati za XML, maelezo haya haijakamilika. Hapo chini kuna viungo vya rasilimali za mtandao zilizo na maelezo zaidi:

Sehemu iliyobaki inakuonyesha jinsi ya kutumia PHP kuchakata hati za XML. Kwa mtazamo wa kwanza, kazi inaonekana kuwa ngumu sana (uchambuzi wa lexical wa nyaraka yoyote ya aina yoyote husababisha matatizo mengi).

Lakini mara tu unapofahamiana na mkakati wa kimsingi wa kufanya kazi na XML katika PHP, kila kitu kinageuka kuwa rahisi kushangaza.