Xml, mabano yanaonekana kwenye mstari wa doctype. Lugha ya XML - Ufafanuzi wa Aina ya Nyaraka (DTD). Huluki zilizoainishwa katika xml

Karatasi ya kudanganya DTD .

DTD - Mojawapo ya njia za kuelezea rasmi mpangilio wa hati XML , iliyotengenezwa kwa lugha inayoeleweka kwa programu ya uchanganuzi.

Hivi sasa inaondolewa DTD katika neema XSD (Ufafanuzi wa Schema ya XML ), kwa sababu kadhaa:

  • DTD hutumia tofauti na XML sintaksia.
  • Hakuna uchapaji wa nodi.
  • Hakuna utumiaji wa nafasi za majina.

Walakini, njia hii bado inatumika sana kwa sababu ni rahisi na rahisi zaidi kuelezea mipangilio rahisi ya hati.

UJENZI DTD

Maelezo ya schema yana matamko ya alama ( tamko la alama ), kuanzia na jozi ya wahusika " ” ikifuatiwa na moja ya maneno:

  • KIPINDI (inaonyesha kuwa inatangazwa kipengele )
  • ATTLIST (orodha ya sifa )
  • ENTITY (kiini )
  • TAARIFA (uteuzi )

tamko la markup linaisha na " >

TAMKO LA AINA YA KIPINDI

(kila kipengele cha hati lazima kielezewe)

Maudhui:

  • TUPU - tupu (kwa mfano
    )
  • YOYOTE - maudhui yoyote (nadra)
  • (#PCDATA) - data ya wahusika pekee
  • (orodha ya majina ya vitu vilivyowekwa kiota yakitenganishwa na koma) - vipengee vilivyowekwa lazima vionekane kwenye hati kwa mpangilio ambao vimeorodheshwa katika tamko. Kiwango kimoja tu cha kuatamia ndicho kinachotangazwa. Vipengele vinaweza kuunganishwa kwa kutumia mabano.
    Kutumia kitenganishi | kati ya vipengele inaonyesha kwamba moja ya vipengele vilivyotengwa hutokea.
    Baada ya vipengele au mabano:
    • ? - hutokea mara 0 au 1
    • * - 0 au mara kadhaa
    • + - 1 au mara kadhaa

KUTANGAZA SIFA

Sifa hutangazwa baada ya kipengele chenyewe kutangazwa. Sifa zote za kipengele kimoja zinatangazwa mara moja, katika orodha moja.

Kwa kila sifa, jina lake, aina, na hali ya lazima hurekodiwa.

Aina za sifa:
  • CDATA – (Seti ya data ya herufi ) kamba ya tabia
  • Orodha ya maadili ya sifa kwenye mabano, yaliyoorodheshwa na "|"
  • ID - kitambulisho cha kipekee
  • IDREF - kitambulisho kilicho na mojawapo ya maadili ya sifa ID , hutumika kama marejeleo ya vipengele vingine
  • IDREFS - kitambulisho kilicho na seti ya maadili ya sifa za aina ID , iliyoorodheshwa ikitenganishwa na nafasi, pia hutumiwa kama kiunga cha vipengele kadhaa mara moja.
  • ENTITY - jina la chombo ambacho hakijaangaliwa na mchambuzi ( kutangazwa katika maelezo sawaDTD )
  • VYOMBO - majina ya vyombo ambayo hayajaangaliwa na mchambuzi.
  • NMTOKEN - neno lenye herufi tu zinazotumika katika majina ( majina ya vipengele au sifa nyingine, kwa mfano kuzirejelea)
  • NMTOKENS - maneno yaliyoorodheshwa yakitenganishwa na nafasi
  • TAARIFA - jina ( majina yaliyotolewa katika maelezoDTD)
  • MAELEZO - orodha ya vidokezo
ishara ya wajibu:
  • Thamani ya sifa chaguomsingi- imeonyeshwa katika nukuu na inamaanisha kuwa sifa ni ya hiari.
  • # INATAKIWA- sifa lazima iandikwe katika kipengele.
  • # ILIYOHUSIKA- sifa ni ya hiari, haina thamani chaguo-msingi.
  • # IMEFANIKIWA- sifa ina thamani moja tu, paka imeandikwa mara moja kutengwa na nafasi.

Unapotumia nafasi za majina, lazima kila wakati ueleze waliohitimu ( Jina la Q), si jina la kienyeji.

Sifa hazijajumuishwa katika nafasi ya majina chaguomsingi.

Sifa " xml: lugha "Na" xml: nafasi ” lazima pia itangazwe ndani DTD katika kesi ya matumizi yao

VYOMBO VINAVYOTANGAZA

(anza na "&" na umalizie na ";")

Vyombo vya Ndani- huwekwa wakati wa kutangaza huluki.

- inaweza kutumika zaidi katika sana DTD Hapa chini ni tangazo.

Vyombo vya Nje- iliyo katika faili tofauti au iliyojengwa kwenye programu ya analyzer.

Vyombo Vilivyoainishwa- inatumika tu ndani ya maelezo DTD

Vyombo vimegawanywa katika vichanganuzi ( imechanganuliwa ) na haijachanganuliwa ( haijachanganuliwa ) Iliyochanganuliwa inawakilisha kipande cha hati XML au hati nzima na iko chini ya kuchakatwa na programu ya uchanganuzi baada ya kuibadilisha. Baada ya kubadilisha disassembly, chombo kinakuwa sehemu XML hati.

Nambari msimbo wa programu, kuchora, picha, nk hazihitaji kusindika kwa njia XML , kwa hili huluki lazima itangazwe kuwa haijachanganuliwa. Ili kufanya hivyo, mwishoni mwa tamko la chombo, barua inafanywa " NDATA ” na jina limeonyeshwa ( nukuu ) ya kitu kilichoingizwa.

VYOMBO VILIVYOTAJULISHWA KATIKA XML

ALAMA YA TANGAZO ( TAARIFA)

Wanatangazwa kama vyombo; wanaweza pia kuwa wa ndani na nje.

Ndani

Ya nje

MFUMO | UMMA - V kwa kesi hii ni sawa kwa sababu hadharani si lazima kiungo kinachojulikana.

MALAZI DTD

Au katika faili tofauti " *.dtd ” kwa kuonyesha jina lake katika alama za nukuu katika sehemu ya pili ya utangulizi DOCTYPE , au ujumuishe maelezo moja kwa moja katika sehemu ya pili ya utangulizi, ukiyaambatanisha katika mabano ya mraba.

]> blah

Tumia Schema za XML badala ya DTD ili kufafanua muundo wa hati za XML

Schema ya XML ina zaidi vipengele vya nguvu kuliko DTD. Ili kuonyesha manufaa ya kutumia injini ya Schema ya XML, tangazo tatu za kwanza zinalinganishwa njia mbalimbali uwakilishi wa vipengele. Ifuatayo ni dondoo kutoka kwa hati ya XML. B inaonyesha vipengele viwili vilivyotangazwa katika syntax ya DTD, na B inaonyesha sintaksia inayolingana na mpangilio wa XML. Kumbuka kwamba sintaksia katika Orodha ya 3 ni sawa na sintaksia ya XML. Wakati wa kutumia taratibu, kichanganuzi kinachoidhinisha kinaweza kuangalia kama kipengele cha InvoiceNo ni nambari kamili chanya, na kama ProductID ina seti fulani ya herufi (nambari sita na herufi moja kutoka A hadi Z). Kichanganuzi cha kuchakata ufafanuzi wa DTD kinaweza tu kuthibitisha kuwa vipengele vilivyotolewa ni mifuatano.

Orodha ya 1: Kipande cha hati ya XML
123456789 J123456
Orodha ya 2: Kipande cha DTD kinachoelezea vipengele kutoka kwenye Orodha ya 1
Orodha ya 3: Kipande cha Schema cha XML kinachoelezea vipengele kutoka kwenye Orodha ya 1

Kutumia Nafasi za Majina katika Schema ya XML

Mapungufu ya DTD

Ingawa DTD hutumikia wasanidi wa SGML na HTML kama utaratibu wa maelezo habari iliyopangwa Kwa miaka 20 sasa, DTD zimekuwa na mapungufu ikilinganishwa na miundo ya XML.

Kulingana na Sehemu ya DTD inaweza kuwakilishwa katika moja ya njia tatu:

  • Mfuatano wa maandishi
  • Mfuatano wa maandishi uliochanganywa na kipengele kingine cha mtoto
  • Seti ya watoto

DTD hazina syntax ya XML na hutoa usaidizi mdogo tu kwa aina na nafasi za majina.

Wakati wa kufanya kazi pamoja, mhusika mmoja anaweza kuchakata hati za wahusika wengine, na wahusika tofauti wanaweza kuwakilisha vipengele vyao vya data kwa njia tofauti. Kwa kuongezea, katika hati tofauti, wanaweza kuhitaji kurejelea vipengee vilivyo na jina moja lililoundwa pande tofauti. Kutumia Schema ya XML huruhusu ufafanuzi wenye jina moja kutofautishwa kwa kufafanua nafasi tofauti za majina.

Ratiba kama hiyo ya XML inafafanua seti ya majina mapya, kama vile majina ya vipengele, aina, sifa na vikundi vya sifa, ambavyo fasili na matamko yao yamefafanuliwa kwenye schema. Majina yanafafanuliwa kama InvoiceNo , ProductID na ProductCode .

Majina yaliyofafanuliwa kwenye schema ni ya kinachojulikana nafasi ya majina inayolengwa. Nafasi ya majina yenyewe ni jina lisilobadilika, la kiholela ambalo lazima lifuate sintaksia ya URL. Kwa mfano, nafasi ya majina ya taratibu iliyowasilishwa katika , inaweza kuwekwa kama ifuatavyo: http://www.SampleStore.com/Account.

Sintaksia ya kutangaza nafasi ya majina wakati mwingine inaweza kuwa ya kutatanisha. Tamko linaanza na http:// , lakini haliunganishi na faili ya schema. Kwa kweli, kiungo http://www.SampleStore.com/Account hakielekezi kwa faili yoyote hata kidogo, lakini kwa jina ulilokabidhiwa pekee.

Ufafanuzi na matamko katika schema yanaweza kurejelea majina ambayo yanaweza kuwa ya nafasi zingine za majina. Katika nakala hii tunarejelea nafasi za majina kama vile: nafasi za majina asili. Kila utaratibu unaweza kufafanua nafasi moja ya majina inayolengwa na ikiwezekana nafasi nyingi za majina ya chanzo. Kwa ujumla, kila jina katika schema fulani ni la nafasi fulani ya majina. Majina ya nafasi ya majina yanaweza kuwa marefu sana, lakini yanaweza kufupishwa kwa kutumia sintaksia ya tamko la xmlns katika hati ya schema ya XML. Dhana hizi zote zinaonyeshwa katika.

Orodha ya 4: Lengwa na nafasi za majina chanzo

Katika utaratibu wa XML unaowakilishwa na , nafasi ya majina ya lengwa ni http://www.SampleStore.com/Account na ina majina InvoiceNo , ProductID , na ProductCode . Majina schema , kipengele , simpleType , pattern , string , na positive-integer ni mali ya nafasi asilia ya majina http://www.w3.org/1999/XMLSchema , ambayo imefupishwa kama xsd kwa kutangaza xmlns . Hakuna kitu maalum kuhusu lakabu ya xsd unaweza kuchagua jina lingine. Kwa urahisi na usahili, katika salio la kifungu tutatumia kiambishi awali cha xsd kurejelea http://www.w3.org/1999/XMLSchema nafasi ya majina, tukiacha kufuzu kwa xsd katika baadhi ya sehemu za msimbo. Katika mfano wetu, targetNamespace pia ni mojawapo ya nafasi za majina asili, kwa kuwa jina la ProductCode linatumika katika ufafanuzi wa majina mengine.

Kielelezo 1: Nafasi za Majina za Kuorodhesha 4
Orodha ya 5: Nafasi za majina ya vyanzo vingi, uingizaji wa nafasi ya majina

Kufafanua Vipengele

Kufafanua kipengele kunajumuisha kufafanua jina lake na muundo wa maudhui. Katika schema ya XML, muundo wa maudhui ya kipengele huamuliwa na aina yake. Kwa hivyo, vipengee katika hati ya XML vinaweza tu kuwa na thamani zinazolingana na aina zilizobainishwa kwenye schema yake.

Aina rahisi

Uainisho wa Schema ya XML hufafanua aina kadhaa rahisi za thamani, kama inavyoonyeshwa kwenye Jedwali la 2—aina za thamani zilizofafanuliwa awali.

Aina ya kipengele inaweza kuwa rahisi au ngumu (tata). Kipengele aina rahisi haiwezi kuwa na vipengele au sifa nyingine. Aina changamano inaweza kuwa na athari ya vipengele vya kupachika ndani ya vipengele vingine, au inaweza kuhusisha sifa na kipengele. Hadi kufikia hatua hii, tumetumia tu mifano iliyo na aina rahisi zilizobainishwa na mtumiaji (angalia ProductCode). Uainishaji wa Schema ya XML pia inajumuisha aina rahisi zilizofafanuliwa awali (tazama kisanduku). Aina rahisi iliyofafanuliwa mapema Huzuia maadili kwa aina yao ya msingi. Kwa mfano, thamani ya aina rahisi iliyofafanuliwa awali ya ProductCode ni sehemu ndogo ya maadili ya msingi aina ya kamba.

Vipengele rahisi, visivyo na kiota vina aina rahisi

Kipengele ambacho hakina sifa au vipengele vingine kinaweza kupewa aina rahisi, iliyofafanuliwa awali au iliyofafanuliwa na mtumiaji, kama vile mfuatano, nambari kamili, desimali, wakati, ProductCode, n.k.

Orodha ya 7: Baadhi ya aina rahisi za vipengele

Vipengele vilivyo na sifa lazima ziwe za aina ngumu

Sasa hebu tujaribu kuongeza sifa ya sarafu kwa kipengele rahisi cha bei. Hutaweza kufanya hivi kwa sababu kipengele cha aina rahisi hakiwezi kuwa na sifa. Ikiwa unataka kuongeza sifa, unahitaji kufafanua bei kama kipengele cha aina changamano. Katika mfano kutoka , tunafafanua kinachojulikana aina isiyojulikana, ambayo aina changamano haijapewa jina wazi. Kwa maneno mengine, sifa ya jina la kipengee cha aina tata haijafafanuliwa.

Orodha ya 8: Kipengele cha aina changamano

Vipengele vilivyo na viota lazima viwe vya aina tata

Katika hati ya XML, vipengele vingine vinaweza kuwekwa ndani ya kipengele. Sharti hili linaonyeshwa moja kwa moja katika DTD. Schema ya XML badala yake inafafanua kipengele na aina yake, ambacho kinaweza kujumuisha matamko ya vipengele na sifa nyingine. Mfano umetolewa katika.

Jedwali la 1: Ulinganisho wa aina changamano za data katika DTD na Schema ya XML

Hati ya XML
Cool XML <Title> <Author>Cool Guy</Author> </Book> </span><h5>DTD</h5><span> <!ELEMENT Book (Title, Author)> <!ELEMENT Title (#PCDATA)> <!ELEMENT Author (#PCDATA)> </span><h5>Mpangilio wa XML</h5><span> <element name="Book" type="BookType"/> <complexType name="BookType"> <element name="Title" type="string"/> <element name="Author" type="string"/> </complexType> </span><h5>Orodha ya 10: Kuficha Aina ya Kitabu kama aina ya ndani</h5><span> <element name="Title" type="string"/> <element name="Author" type="string"/> <element name="Book"> <complexType> <element ref="Title"/> <element ref="Author"/> </complexType> </element> </span><h2>Kuonyesha vikwazo changamano kwenye vipengele</h2><p>Ratiba ya XML inatoa unyumbulifu zaidi kuliko DTD katika kuonyesha vikwazo kwenye muundo wa maudhui ya kipengele. Katika kiwango rahisi zaidi, kama vile katika DTD, unaweza kuhusisha sifa na kipengele, na pia kubainisha kwamba mlolongo wa moja tu (1), sufuri au zaidi (*), au kipengele kimoja au zaidi (+) cha kitu fulani. kipengele kinaweza kuonekana ndani yake. Unaweza kueleza vikwazo vya ziada katika schema ya XML kwa kutumia, kwa mfano, minOccurs na maxOccurs sifa kwenye kipengele cha kipengele na chaguo , kikundi , na vipengele vyote.</p><h5>Orodha ya 11: Kuonyesha vikwazo kwa aina za vipengele</h5><span> <element name="Title" type="string"/> <element name="Author" type="string"/> <element name="Book"> <complexType> <element ref="Title"/> <element ref="Author"/> </complexType> </element> </span><p>Lebo ya Kichwa ni ya hiari kuhusiana na lebo ya Kitabu (sheria sawa inaweza kuwekwa katika DTD). Hata hivyo, inasema pia kwamba kipengele cha Kitabu lazima kiwe na angalau kipengele kimoja na kisichozidi vipengele viwili vya Mtunzi. Thamani chaguo-msingi ya sifa za kipengee cha minOccurs na maxOccurs ni 1. Kipengele cha chaguo kinaonyesha kuwa ni kipengele kimoja tu cha mtoto kilichobainishwa kinaweza kuonekana. Vipengele vingine vyote vinabainisha kuwa vipengele vyote vya mtoto vinaweza kuonekana mara moja tu, pamoja na kwa mpangilio wowote, au kutoonekana kabisa. B inatangaza kwamba lebo zote za Kichwa na Mtunzi lazima zionekane katika Kitabu kwa mpangilio wowote, au zisionyeshwe kabisa. Vikwazo vile ni vigumu kueleza kwa kutumia DTD.</p><h5>Orodha ya 12: Kuonyesha kwamba kipengele lazima kiwe na aina zote zilizofafanuliwa</h5><span> <xsd:element name="Title" type="string"/> <xsd:element name="Author" type="string"/> <xsd:element name="Book"> <xsd:complexType> <xsd:all> <xsd:element ref="Tile"/> <xsd:element ref="Author"/> </xsd:all> </xsd:complexType> </xsd:element> </span><h2>Kufupisha</h2><p>Katika hati hii, tumeshughulikia, kupitia mifano rahisi, dhana za kimsingi zinazohitajika kufafanua muundo wa vipengele kwa kutumia Schema ya XML. Njia zingine nyingi zenye nguvu zinapatikana pia:</p><ul><li>XML Schema hutoa usaidizi wa kina kwa urithi wa aina, hukuruhusu kutumia tena miundo iliyobainishwa hapo awali. Matumizi haya yanaitwa <i>vipengele</i>. Unaweza kukisia aina mpya zinazowakilisha kitengo kidogo cha thamani za aina nyingine, kwa mfano, ili kufafanua kitengo kidogo kwa hesabu, fungu la visanduku au muundo unaolingana. Katika mojawapo ya mifano katika makala hii, aina ya ProductCode ilifafanuliwa kwa kutumia kipengele cha muundo. Katika aina ndogo, unaweza pia kuongeza vipengele na sifa mpya kwa aina ya msingi.</li><li>Taratibu kadhaa hukuruhusu kudhibiti ufafanuzi wa jumla wa aina ndogo au kuibadilisha katika hati maalum. Kwa mfano, unaweza kubainisha kuwa InvoiceType (aina ya nambari ya ankara) haiwezi kuwa na aina ndogo, kumaanisha kwamba hakuna mtu ataweza kufafanua toleo jipya la AnkaraType. Unaweza pia kubainisha kuwa hakuwezi kuwa na vibadala vya aina ndogo katika muktadha fulani wa aina ya ProductCode.</li><li>Mbali na kutumia aina ndogo, inawezekana kufafanua aina zinazofanana, yaani, thamani ya aina moja inaweza kubadilishwa na thamani ya mwingine.</li><li>XML Schema hutoa utaratibu wa kubadilisha kipengele au aina kwa kutangaza kuwa ni dhahania.</li><li>Kwa urahisi zaidi, unaweza kufafanua na kutaja vikundi vya sifa au vipengele. Hii inaruhusu zitumike tena katika simu zinazofuata.</li><li>Ratiba ya XML hutoa vipengele vitatu—appInfo, uwekaji kumbukumbu, na ufafanuzi—kwa matumizi ya maoni na wanadamu (hati) na programu (appInfo)</li><li>Unaweza kueleza vikwazo vya kipekee kulingana na sifa maalum za vipengele vya mtoto.</li> </ul><p>Maelezo ya ziada juu ya miundo ya XML yanaweza kupatikana kutoka kwa hati kwenye tovuti za W3C (Angalia) na ukanda wa dW XML. Kwa kuwa sasa vipimo vya Schema ya XML vimethibitishwa kama mgombeaji wa pendekezo la W3C, unaweza kuitumia kikamilifu kwa uhakika.</p> <h3></h3> <p>KATIKA <b>XML</b>- hati <b>DTD</b> hufafanua seti ya vipengele halali, hubainisha vipengele vinavyoweza kuwa ndani ya vipengele vingine, na kufafanua sifa halali kwa kila mojawapo. Sintaksia <b>DTD</b> ni ya kipekee sana na juhudi za ziada zinahitajika kutoka kwa mwandishi-msanidi wakati wa kuunda hati kama hizo (utata <b>DTD</b> ni moja ya sababu za matumizi <b>SGML</b>, inayohitaji ufafanuzi <b>DTD</b> kwa hati yoyote, haijaenea kama, kwa mfano, <b>HTML</b>) Kama ilivyoelezwa tayari, katika <b>XML</b> kutumia <b>DTD</b> sio lazima - hati zilizoundwa bila sheria hizi zitashughulikiwa kwa usahihi na programu ya uchanganuzi ikiwa inakidhi mahitaji ya kimsingi ya syntax. <b>XML</b>. 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.</p> <p>KATIKA <b>DTD</b> Kwa <b>XML</b> Aina zifuatazo za sheria hutumiwa: sheria za vipengele na sifa zao, maelezo ya makundi (ufafanuzi wa jumla), maelezo ya muundo wa data ya binary. Zote zinaelezea muundo wa kimsingi wa lugha - vipengee, sifa, viunga vya ishara, faili za data za binary za nje.</p> <p>Ili kutumia <b>DTD</b> katika hati yetu, tunaweza kuielezea katika faili ya nje na katika maelezo <b>DTD</b> toa tu kiunga cha faili hii au chagua eneo moja kwa moja ndani ya hati yenyewe ambayo utafafanua sheria zinazohitajika. Katika kesi ya kwanza, hati inataja jina la faili iliyo na <b>DTD</b>- maelezo:</p> <span><?xml version="1.0" standalone="yes" ?> <! DOCTYPE journal SYSTEM "journal.dtd"> ... </span> <p>Ndani ya hati, maazimio ya DTD yanajumuishwa kama ifuatavyo:</p> <span>... <! DOCTYPE journal [ <!ELEMENT journal (contacts, issues, authors)> ... ]> ... </span> <p>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 kuangalia hati <b>XML</b>- processor kwanza hutafuta <b>DTD</b> ndani ya hati. Ikiwa sheria ndani ya hati haijafafanuliwa na sifa haijawekwa</span> pekee="ndio" <span>, basi programu itapakia faili maalum ya nje na sheria zilizomo ndani yake zitasomwa kutoka hapo. Ikiwa sifa <b>kujitegemea</b> ina maana" <b>ndio"</b>, kisha matumizi ya nje <b>DTD</b> maelezo yatapigwa marufuku.</p> <h4><span>Ufafanuzi wa Kipengele</span></h4> <p>Kipengele ndani <b>DTD</b> imefafanuliwa kwa kutumia kifafanuzi! <b>KIPINDI</b>, ambayo inabainisha jina la kipengele na muundo wa yaliyomo.</p> <p>Kwa mfano, kwa kipengele <flower>kanuni ifuatayo inaweza kufafanuliwa:</p> <!ELEMENT flower PCDATA> <p>Neno muhimu <b>KIPINDI</b> inaonyesha kuwa maagizo haya yataelezea kipengele <b>XML</b>. Ndani ya maagizo haya jina la kipengele limetajwa <b>(maua)</b> na aina ya maudhui yake.</p> <p>Katika ufafanuzi wa kipengele, kwanza tunataja jina la kipengele <b>(maua)</b>, na kisha muundo wake wa maudhui - kuamua ni vipengele gani vingine au aina za data zinaweza kutokea ndani yake. Katika kesi hiyo, yaliyomo ya kipengele cha maua yatatambuliwa kwa kutumia alama maalum <b>PCDATA</b>(inamaanisha</span> data ya wahusika inayoweza kuchanganuliwa <span>- habari yoyote ambayo programu ya analyzer inaweza kufanya kazi nayo). Kuna kauli mbili zaidi zinazofafanua aina ya maudhui: <b>TUPU</b>,<b>YOYOTE</b>. Ya kwanza inaonyesha kuwa kipengee kinapaswa kuwa tupu (kwa mfano,</span><red/> <span>), pili ni kwamba yaliyomo katika kipengele hayajaelezewa mahususi.</p> <p>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 +, *, ? :</p> <span><!ELEMENT issue (title, author+, table-of-contents?)> </span> <p>Mfano huu unabainisha kuwa ndani ya kipengele <issue>vipengele lazima vifafanuliwe <b>kichwa</b>, <b>mwandishi</b> Na <b>jedwali-ya-yaliyomo</b>, na kipengele <b>kichwa</b> ni kipengele kinachohitajika na kinaweza kuonekana mara moja tu, kipengele cha mwandishi kinaweza kuonekana mara nyingi, na <b>jedwali-ya-yaliyomo</b> ni hiari, i.e. inaweza kukosa. Ikiwa kuna chaguo kadhaa zinazowezekana kwa maudhui ya kipengele kilichoelezwa, zinapaswa kutengwa kwa kutumia ishara <b>"|" </b>: </p> <span><!ELEMENT flower (PCDATA | title)*> </span> <p>Alama <b>* </b> katika mfano huu inaonyesha kwamba mlolongo uliofafanuliwa wa vipengele vya ndani unaweza kurudiwa mara kadhaa au usitumike kabisa.</p> <p>Ikiwa ufafanuzi wa kipengele unabainisha maudhui "mchanganyiko", i.e. data ya maandishi au seti ya vipengele, lazima kwanza uelezee <b>PCDATA</b> na kisha kutengwa na ishara <b>"|" </b> orodha ya vipengele.</p> <p>Mfano wa sahihi <b>XML</b>- hati:</p> <span><?xml version="1.0"?> <! DOCTYPE journal [ <!ELEMENT contacts (address, tel+, email?)> <!ELEMENT address (street, appt)> <!ELEMENT street PCDATA> <!ELEMENT appt (PCDATA | EMPTY)*> <!ELEMENT tel PCDATA> <!ELEMENT email PCDATA> ]> ... <contacts> <address> <street>Alama za njia</street> <appt id="4"> </address> <tel>12-12-12</tel> <tel>46-23-62</tel> <email>info@j.com</email> </contacts> </span> <h4><span><b>Kufafanua Sifa</b> </span></h4> <p>Orodha za sifa za kipengele hufafanuliwa kwa kutumia neno kuu! <b>ATTLIST</b>. Ndani yake, majina ya sifa, aina za maadili yao na vigezo vya ziada vimeainishwa. Kwa mfano, kwa kipengele</span><article> <span>Sifa zifuatazo zinaweza kufafanuliwa:</p> <span><!ATTLIST article id ID #REQUIRED about CDATA #IMPLIED type (actual | review | teach) "actual" "" > </span> <p>Katika mfano huu, kwa kipengele <b>makala</b> sifa tatu zinafafanuliwa: <b>kitambulisho,</b><i> </i><b>kuhusu</b> Na <b>aina</b>, ambazo zina aina <b>ID</b>(kitambulisho), <b>CDATA</b> na orodha ya maadili iwezekanavyo, kwa mtiririko huo. Kuna jumla ya aina sita za thamani za sifa zinazowezekana:</p> <ul><li><span><b>CDATA</b>- yaliyomo kwenye hati inaweza kuwa data yoyote ya wahusika</span></li> <li><span><b>ID</b>- hufafanua kitambulisho cha kipekee cha kipengele katika hati</span></li> <li><span><b>IDREF</b>(<b>IDREFS</b>) - 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 kilichofafanuliwa katika hati hii.</span></li> <li><span><b>ENTITY</b>(<b>VYOMBO</b>) - thamani ya sifa lazima iwe jina (au orodha ya majina, ikiwa itatumika <b>VYOMBO</b>) sehemu (ufafanuzi wa jumla) iliyofafanuliwa katika hati</span></li> <li><span><b>NMTOKEN</b> (<b>NMTOKENS</b>) - maudhui ya kipengele yanaweza kuwa neno moja tu (yaani parameter hii ni chaguo mdogo <b>CDATA</b>) </span></li> <li><span>Orodha ya thamani halali - inafafanua orodha ya maadili ambayo sifa hii inaweza kuwa nayo.</span></li> </ul><p>Unaweza pia kutumia vigezo vifuatavyo katika ufafanuzi wa sifa:</p> <ul><li><span><b>#INAHITAJI</b>- inafafanua sifa inayohitajika ambayo lazima iwekwe katika vipengele vyote vya aina hii</span></li> <li><span><b>#ILIYOHUSIKA</b>- sifa ni ya hiari</span></li> <li><span><b>#IMEFANIKIWA</b>"thamani" - inaonyesha kwamba sifa lazima iwe na thamani maalum tu, hata hivyo, ufafanuzi wa sifa yenyewe sio lazima, lakini wakati wa mchakato wa kuchanganua thamani yake itapitishwa kwa programu ya analyzer.</span></li> <li><span>Thamani - huweka thamani ya chaguo-msingi ya sifa</span></li> </ul><h4><span><b>Vipengele vya Kufafanua (Ufafanuzi wa Jumla)</b> </span></h4> <p>Sehemu <b>(chombo)</b> inawakilisha ufafanuzi ambao maudhui yake yanaweza kutumika tena katika hati. Katika lugha nyingine za programu, vipengele sawa huitwa macrodefinitions. Zinatengenezwa <b>DTD</b>- vipengele kwa kutumia maelekezo <b>!ENTITY</b>: </p> <span><!ENTITY hello " Мы рады приветствовать Вас!" > </span> <p>Mpango wa Analyzer, ukiangalia kwanza yaliyomo kwenye eneo hilo <b>DTD</b>- ufafanuzi, itashughulikia maagizo haya na itatumia yaliyomo wakati wa kuchanganua zaidi hati <b>DTD</b>- sehemu mahali ambapo jina lake litatokea. Wale. Sasa katika hati tunaweza kutumia usemi <b>&hujambo</b>; , ambayo itabadilishwa na mstari <i>" </i><b>Tuna furaha kukusalimu"</b> </p> <p>Kwa ujumla, ndani <b>DTD</b> Unaweza kufafanua aina tatu za ufafanuzi mkuu:</p> <p><b>Ufafanuzi wa jumla wa ndani</b> </span><span>- imeundwa ili kufafanua kamba mara kwa mara; Vipengele vya ndani vinajumuishwa katika hati kwa kutumia ampersand <b>& </b> </p> <p>KATIKA <b>XML</b> Kuna viunga vitano vya ishara vya ndani vilivyofafanuliwa awali:</p> <ul><li><span><b>< </b>- ishara <b>"<" </b> </span></li> <li><span><b>> </b>- ishara <b>">" </b> </span></li> <li><span><b>& </b>- ishara <b>"&" </b> </span></li> <li><span><b>" </b>- ishara ya apostrofi <b> """ </b> </span></li> <li><span><b>" </b>- tabia ya kunukuu mara mbili <b>""" </b> </span></li> </ul><p><b>Ufafanuzi wa jumla wa nje</b> </span><span>- onyesha yaliyomo kwenye faili ya nje, na maudhui haya yanaweza kuwa maandishi au data ya binary. Katika kesi ya kwanza, kamba za maandishi zitaingizwa ambapo macro hutumiwa, kwa pili - data ya binary ambayo haijazingatiwa na analyzer na inatumiwa na programu za nje.</p> <span><!ENTITY logotype SYSTEM "/image.gif" NDATA GIF87A> </span> <p><b>Ufafanuzi wa Utawala wa Macro</b> </span><span>- ufafanuzi wa jumla wa parameter unaweza kutumika tu ndani ya eneo la DTD na unaonyeshwa na ishara maalum <b>% </b>, iliyoingizwa kabla ya jina la jumla. Katika kesi hii, yaliyomo ya sehemu yatawekwa moja kwa moja kwenye maandishi <b>DTD</b>- kanuni</p> <p>Kwa mfano, kwa kipande cha hati kifuatacho:</p> <span><!ELEMENT name (PCDATA)> <!ELEMENT title (PCDATA | name)*> <!ELEMENT author (PCDATA | name)*> <!ELEMENT article (title, author)*> <!ELEMENT book (title, author)*> <!ELEMENT bookstore (book | article)*> <!ELEMENT bookshelf (book | article)*> </span> <p>Unaweza kutumia fomu fupi:</p> <span><!ELEMENT name (PCDATA)> <! ENTITY %names "PCDATA | name"> <!ELEMENT article (%names;)*> <!ELEMENT book (%names;)*> <!ENTITY %content "book | article"> <!ELEMENT bookstore (%content;)*> <!ELEMENT bookshelf (%content;)*> </span> <p>Macros mara nyingi hutumiwa kuelezea vigezo katika sheria za sifa. Katika kesi hii, inawezekana kutumia ufafanuzi wa sifa sawa kwa vipengele tofauti:</p> <span><!ENTITY %itemattr "id ID #IMPLIED src CDATA"> <!ENTITY %bookattr "ISDN ID #IMPLIED type CDATA"> <!ENTITY %artattr " size CDATA"> <!ELEMENT book (title, author,content)*> <!ATTLIST book %itemattr %bookattr;> <!ELEMENT article (title, author, content)*> <!ATTLIST article %itemattr %artattr;> </span> <h4><span><b>Kuandika data</b> </span></h4> <p>Mara nyingi wakati wa kuunda <b>XML</b>- msanidi wa kipengele anahitaji kubainisha ni aina gani ya data inayoweza kutumika kama maudhui yake. Wale. ikiwa tutafafanua kipengele</span><span><last-modified>10.10.98</last-modified> </span><span>, 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 <b>SQL</b>- maombi. Katika kesi hii, programu ya mteja lazima ijue ni aina gani ya data ambayo thamani ya sasa ya kipengele ni ya na, ikiwa inalingana, hutoa. <b>SQL</b>-omba.</p> <p>Ikiwa kithibitishaji kinatumika kama programu ya upande wa mteja <b>XML</b>-processor, basi habari juu ya aina inaweza kusambazwa kwa kutumia kipengee iliyoundwa mahsusi kwa sifa hii ambayo ina sifa inayolingana. <b>DTD</b>- ufafanuzi. 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 yanapaswa kuwa nambari kamili ndefu, unaweza kutumia zifuatazo <b>DTD</b>- ufafanuzi:</p> <span><!ELEMENT counter (PCDATA)> <!ATTLIST counter data_long CDATA #FIXED "LONG"> </span> <p>Kwa kuweka sifa kwa thamani yake ya msingi <b>NDEFU</b> na kufafanua kama <b>IMEFANIKIWA</b>, kwa hivyo tumeruhusu 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 <b>DTD</b>- ufafanuzi.</p> <p>Hapa kuna mfano <b>XML</b>- hati ambayo vipengele kadhaa vilivyo na aina tofauti za data hufafanuliwa na kutumika:</p> <span><!ELEMENT price (PCDATA)> <!ATTLIST price data_currency CDATA #FIXED "CURRENCY"> <!ELEMENT rooms_num (PCDATA)> <!ATTLIST rooms_num data_byte CDATA #FIXED "BYTE"> <!ELEMENT floor (PCDATA)> <!ATTLIST floor data_byte CDATA #FIXED "INTEGER"> <!ELEMENT living_space (PCDATA)> <!ATTLIST living_space data_float CDATA #FIXED "FLOAT"> <!ELEMENT counter (PCDATA)> <!ATTLIST counter data_long CDATA #FIXED "LONG"> <!ELEMENT is_tel (PCDATA)> <!ATTLIST is_tel data_bool CDATA #FIXED "BOOL"> <!ELEMENT house (rooms_num, floor,living_space, is_tel, counter, price)> <!ATTLIST house id ID #REQUIED> ... <house id="0"> <rooms_num>5</rooms_num> <floor>2</floor> <living_space>32.5</living_space> <is_tel>kweli</is_tel> <counter>18346</counter> <price>34 kusugua. 28 k.</price> </house> ... </span> <p>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 block <b>DTD</b>. </p> <p>Kwa kumalizia, ningependa kutambua hilo <b>DTD</b> hutupatia utaratibu unaofaa sana wa kufuatilia yaliyomo kwenye waraka. Leo, karibu programu zote za kutazama hati za mtandao hutumia <b>DTD</b>-kanuni. Walakini, hii ni mbali na njia pekee ya kuangalia usahihi wa hati. Hivi sasa ndani <b>W3</b> Muungano unazingatia kiwango kipya cha lugha ya maelezo ya muundo wa hati inayoitwa taratibu za data. Sehemu inayofuata imejitolea kufanya kazi nao.</p></td> <p>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.</p> <p>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 hati za XML, kwa kuwa hii inawafanya iwe rahisi kutafsiri na kuangalia muundo wao.</p> <p>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:</p><p> <!DOCTYPE имя_корневого_элемента [ ; ...прочие объявления... ] > </p><p>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.</p> <p>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:</p><p> <!DOCTYPE имя_корневого_элемента SYSTEM "some_dtd.dtd"> </p><p>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.</p> <p>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:</p><p> <!DOCTYPE cookbook SYSTEM "cookbook.dtd"> </p><p>Tukirudi kwenye Orodha ya 14.1, tunaona kwamba kitabu cha kupikia ni jina la kipengele cha msingi, na cookbook.dtd ni jina la faili ya DTD. Yaliyomo katika DTD yameonyeshwa katika Orodha 14.2, na maelezo ya kina ya kila safu yametolewa hapa chini.</p> <h2>Orodha 14.2. DTD kwa kuorodhesha 14.1(cookbook.dtd)</h2> <?xml version="1.0"?> <!DOCTYPE cookbook [ <!ELEMENT cookbook(recipe+)> <!ELEMENT recipe(title, description, ingredients, process)> <!ELEMENT title(#PCDATA)> <!ELEMENT description(#PCDATA)> <!ELEMENT ingredients(ingredient+)> <!ELEMENT ingredient(#PCDATA)> <!ELEMENT process Cstep+)> <!ELEMENT step(#PCDATA)> <!ATTLIST recipe category CDATA #REQUIRED> ] > <p>Hati hii ya ajabu inamaanisha nini? Licha ya ugumu wake unaoonekana, kwa kweli ni rahisi sana. Wacha tupitie yaliyomo kwenye Orodha 14.2:</p><p> <?xml version="1.0"?> </p><p>Mbele yetu ni utangulizi wa XML, ambao tayari umetajwa hapo juu.</p><p> <!DOCTYPE cookbook [ </p><p> <!ELEMENT cookbook(recipe+)> </p><p>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.</p><p> <!ELEMENT recipe(title, description, ingredients. process)> </p><p>Mstari wa nne unaelezea lebo ya mapishi. Inasema kwamba 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.</p><p> <! ELEMENT title(#PCDATA)> </p><p>Huu hapa ni ufafanuzi wa kwanza wa lebo ambayo haina lebo zilizowekwa. Kwa ufafanuzi, ina #PCDATA, ambayo ni data kiholela ya wahusika ambayo haizingatiwi kuwa sehemu ya lebo.</p><p> <!ELEMENT ingredients(ingredient+)> </p><p>Kwa ufafanuzi, kipengele cha viungo kina lebo moja au zaidi inayoitwa kiungo. Rejelea Orodha 14.1 na utaelewa.</p><p> <! ELEMENT ingredient(#PCDATA)> </p><p>Kwa kuwa kipengele cha kiungo kinalingana na kiungo kimoja, ni mantiki kwamba kipengele kina data rahisi ya tabia.</p><p> <! ELEMENT process(step+)> </p><p>Kipengele cha mchakato kina mfano mmoja au zaidi wa kipengele cha hatua.</p><p> <! ELEMENT step(#PCDATA)> </p><p>Kipengele cha hatua, kama kipengele cha kiungo, kinalingana na kipengee mahususi katika orodha ya kiwango cha juu. Kwa hiyo, lazima iwe na data ya tabia.</p><p> <!ATTLIST recipe category CDATA #REQUIRED> </p><p>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).</p><p>Mstari wa mwisho unakamilisha ufafanuzi wa DTD. Ufafanuzi lazima daima ukamilike vizuri, vinginevyo kosa litatokea.</p> <p>Kuhitimisha sehemu hii, nitatoa muhtasari wa sehemu kuu za faili ya kawaida ya DTD:</p> <ul><li>matamko ya aina ya kipengele;</li><li>matamko ya sifa;</li><li>ID, IDREF na IDREFS;</li><li>matamko ya chombo.</li> </ul><p>Tayari tumeona baadhi ya vipengele hivi katika Orodha 14.2. Kila sehemu itaelezewa kwa undani zaidi hapa chini.</p> <h2>Matangazo ya kipengele</h2> <p>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 unaonyesha kuwa kipengee kina data ya wahusika tu:</p><p> <! ELEMENT описание(#РСDАТА)> </p><p>Ufafanuzi ufuatao wa kipengele cha mchakato unasema kuwa ina kipengele kimoja kilichowekwa kiota kinachoitwa hatua:</p><p> <!ELEMENT process(step)> </p><p>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:</p><p> <!ELEMENT process(step+)> </p><p>Idadi ya vipengee vilivyowekwa inaweza kuweka kwa njia kadhaa. Orodha kamili ya waendeshaji wa kipengele imetolewa kwenye jedwali. 14.1.</p> <h2>Jedwali 14.1. Waendeshaji wa Kipengele</h2> <p>Iwapo kipengele kitakuwa na viambajengo kadhaa, vinapaswa kuorodheshwa zikitenganishwa na koma katika ufafanuzi wa kipengele kikuu:</p><p> <!ELEMENT recipe(title, description, ingredients, process)> </p><p>Kwa kuwa vipengele vya marudio havijabainishwa, kila lebo lazima ionekane mara moja haswa.</p> <p>Ufafanuzi wa kipengele husafishwa kwa kutumia waendeshaji wenye 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:</p><p> <!ELEMENT ingredient(pasta+,(cheese | meat)+)> </p><p>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.</p> <p>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.</p> <h2>Matamko ya Sifa</h2> <p>Sifa za kipengele huelezea maadili yanayohusishwa na vipengele. Vipengele vya XML, kama vile vipengele vya HTML, vinaweza kuwa na sifa sifuri, moja au zaidi. Syntax ya jumla ya kutangaza sifa ni kama ifuatavyo:</p> <b> <!ATTLIST имя_элемента имя_атри6ута1 тип_данных1 флаг1 </b> <p>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 sifa za sifa hiyo. Matangazo ya sifa zingine yanaweza kuwekwa badala ya ellipsis(...).</p> <p>Tayari tumeona tamko rahisi la sifa katika Orodha 14.2:</p><p> <!ATTLIST recipe category CDATA #REQUIRED> </p><p>Walakini, kama ufafanuzi wa jumla hapo juu unavyoonyesha, inawezekana kutangaza sifa nyingi kwa wakati mmoja. Wacha tuseme kwamba kwa kuongeza sifa ya kategoria, unataka kuhusisha sifa ya ugumu wa ziada na kipengee cha mapishi. Sifa zote mbili zimetangazwa katika orodha moja:</p><p> <!ATTLIST recipe category CDATA #REQUIRED difficulty CDATA #REQUIRED> </p><p>Si lazima kufomati matangazo yako kwa njia hii; hata hivyo, matamko ya mistari mingi ni wazi zaidi kuliko matamko ya mstari mmoja. Zaidi ya hayo, kwa kuwa sifa zote mbili zinahitajika, reci re tag haiwezi kuwa na kikomo kwa sifa moja tu ni lazima iwe na sifa zote mbili mara moja. Kwa mfano, lebo ifuatayo itachukuliwa kuwa batili: <recipe difficulty="hard"></p> <p>Kwa nini? Kwa sababu inakosa sifa ya kategoria. Lebo halali lazima iwe na sifa zote mbili:</p><p> <recipe category="Italian" difficulty="hard"> </p><p>Masharti maalum ya usindikaji wa sifa yanaelezewa na bendera tatu zilizoorodheshwa kwenye Jedwali. 14.2.</p> <h2>Jedwali 14.2. Bendera za sifa</h2> <h2>Aina za sifa</h2> <p>Kipengele cha kipengele kinaweza kutangazwa kwa aina maalum. Aina za sifa zimeelezewa hapa chini.</p> <h3>Sifa za CDATA</h3> <p>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:</p><p> <!ATTLIST recipe category COATA #REQUIRED> </p><h3>Kitambulisho, IDREF, na Sifa za IDREFS</h3> <p>Wazo la kuwakilisha data bila utata (kwa mfano, taarifa kuhusu mtumiaji au bidhaa iliyohifadhiwa kwenye hifadhidata) kupitia vitambulisho limepatikana mara kadhaa katika sura zilizopita za kitabu. Vitambulisho pia hutumiwa mara nyingi katika XML kwa sababu marejeleo mtambuka kati ya hati hayatumiki tu katika kazi za jumla za usindikaji wa data, lakini pia katika Wavuti ya Ulimwenguni Pote (viungo).</p> <p>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:</p><p> <!ELEMENT recipe(title, description, ingredients, process)> <!ATTLIST recipe recipe-id ID #REQUIRED> <!ELEMENT recipe-ref EMPTY> <!ATTLIST recipe-ref go IDREF #REQUIRED> </p><p>Baada ya hayo, tamko la kipengee cha mapishi kwenye hati linaweza kuonekana kama hii:</p><p> <recipe recipe-id="ital003"> <title>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 hati ya XML inachakatwa, kipengele kinabadilishwa na kiungo cha maelezo zaidi kwa mapishi na kitambulisho maalum (kwa mfano, jina la mapishi). Kuna uwezekano itaumbizwa kama kiungo ili kurahisisha kuelekeza kwenye kichocheo kilichobainishwa.

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. Tamko hilo hapo juu limeandikwa kama ifuatavyo:

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 kipengele cha maelezo unaweza kubainisha kichocheoSifa 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 inatii vikwazo vilivyobainishwa. 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 katika idadi ndogo ya 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 maelezo ya maandishi, lakini pia zinaweza 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 kurejelea picha za picha. Kwa mfano, ikiwa unataka kujumuisha nembo ya picha katika hati ya XML, unda huluki ya nje:

Rasilimali za XML

Ingawa nyenzo hapo juu inatosha kuelewa muundo msingi wa hati za XML, maelezo haya si kamili. Hapo chini kuna viungo vya rasilimali za mtandao zilizo na maelezo ya kina zaidi:

Sehemu iliyosalia 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.

Mwandishi Mwandamizi wa Teknolojia

Kuna mtu amekutumia barua pepe ya faili ya DTD na hujui jinsi ya kuifungua? Labda umepata faili ya DTD kwenye kompyuta yako na ulikuwa unashangaa ni nini? Windows inaweza kukuambia kuwa huwezi kuifungua, au katika hali mbaya zaidi, unaweza kukutana na ujumbe wa makosa unaohusiana na faili ya DTD.

Kabla ya kufungua faili ya DTD, unahitaji kujua ni aina gani ya faili ya ugani wa faili ya DTD.

Kidokezo: Hitilafu zisizo sahihi za uhusiano wa faili za DTD zinaweza kuwa dalili ya masuala mengine ya msingi ndani ya mfumo wako wa uendeshaji wa Windows. Maingizo haya batili yanaweza pia kutoa dalili zinazohusiana kama vile kuanza kwa Windows polepole, kusimamisha kompyuta na masuala mengine ya utendaji wa Kompyuta. Kwa hivyo, inashauriwa sana kuchanganua sajili yako ya Windows kwa miunganisho isiyo sahihi ya faili na masuala mengine yanayohusiana na sajili iliyogawanyika.

Jibu:

Faili za DTD ni Faili za Data ambazo zinahusishwa kimsingi na DesignTools 2D Design (TechSoft UK Limited).

Faili za DTD pia zinahusishwa na ArcView UNIX Hyperhelp Supporting File (ESRI), Faili ya Ufafanuzi wa Hati ya SGML, na FileViewPro.

Aina za ziada za faili zinaweza pia kutumia kiendelezi cha faili cha DTD. Ikiwa unafahamu aina nyingine zozote za faili zinazotumia kiendelezi cha faili cha DTD, tafadhali wasiliana nasi ili tuweze kusasisha maelezo yetu ipasavyo.

Jinsi ya kufungua DTD faili:

Ya haraka zaidi na njia rahisi Kufungua faili yako ya DTD kunamaanisha kubofya mara mbili juu yake. Kwa kesi hii Mfumo wa Windows atachagua programu inayohitajika ili kufungua faili yako ya DTD.

Ikiwa faili yako ya DTD haifunguki, kuna uwezekano mkubwa kwamba programu muhimu haijasakinishwa kwenye Kompyuta yako. programu ya maombi kutazama au kuhariri faili na viendelezi vya DTD.

Ikiwa Kompyuta yako itafungua faili ya DTD, lakini ni programu tumizi isiyo sahihi, utahitaji kubadilisha mipangilio yako ya kuunganisha faili. Usajili wa Windows. Kwa maneno mengine, Windows inahusisha upanuzi wa faili za DTD na programu isiyo sahihi.

Sakinisha bidhaa za hiari - FileViewPro (Solvusoft) | | | |

Viendelezi vya Barua Pepe za Mtandao za DTD (MIME):

  • igize maandishi/xml

Zana ya Uchambuzi wa Faili ya DTD™

Je, huna uhakika faili ya DTD ni ya aina gani? Je, unataka kupokea habari kamili kuhusu faili, muundaji wake na inawezaje kufunguliwa?

Sasa unaweza kupata taarifa zote muhimu kuhusu faili ya DTD mara moja!

Zana ya Uchambuzi wa Faili ya DTD™ huchanganua, kuchanganua na kuripoti maelezo ya kina kuhusu faili ya DTD. Kanuni zetu za kuweka hati miliki huchanganua faili kwa haraka na kutoa maelezo ya kina ndani ya sekunde chache katika umbizo wazi na rahisi kusoma.†

Katika sekunde chache tu, utajua haswa ni aina gani ya faili ya DTD unayo, programu inayohusishwa na faili, jina la mtumiaji aliyeunda faili, hali ya usalama ya faili, na habari zingine muhimu.

Ili kuanza uchanganuzi wako wa faili bila malipo, buruta tu na udondoshe faili yako ya DTD ndani mstari wa nukta chini au bofya "Vinjari Kompyuta yangu" na uchague faili. Ripoti ya uchanganuzi wa faili ya DTD itaonyeshwa hapa chini, kwenye dirisha la kivinjari.

Buruta faili ya DTD hapa ili kuanza uchanganuzi

Tazama kompyuta yangu »

Tafadhali pia angalia faili yangu kwa virusi

Faili yako inachambuliwa... tafadhali subiri.