Apakah maksud definisi jenis dokumen dtd? Bahasa XML - Definisi Jenis Dokumen (DTD). Mengisytiharkan atribut dengan nilai

Penerangan skema dokumen

DTD menerangkan reka letak dokumen untuk bahasa penanda tertentu melalui satu set pengisytiharan (objek parameter, elemen dan atribut) yang menerangkan kelasnya (atau jenis) dari segi kekangan sintaksis dokumen tersebut. DTD juga boleh mengisytiharkan binaan yang sentiasa diperlukan untuk mentakrifkan struktur dokumen, tetapi boleh, bagaimanapun, menjejaskan tafsiran dokumen tertentu.

Mengisytiharkan objek parameter

Pengisytiharan objek parameter mentakrifkan makro jenis tertentu yang boleh dirujuk dan dikembangkan di suatu tempat dalam DTD. Makro ini mungkin tidak muncul dalam dokumen itu sendiri, tetapi hanya dalam DTD. Jika objek parameter dirujuk dengan nama DTDnya, ia dikembangkan menjadi rentetan yang menentukan kandungan objek itu.

Objek parameter gaya fon mengandungi sekumpulan teg TT | saya | B | BESAR | KECIL.

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

Objek parameter sebaris mengandungi data teks dan empat lagi objek parameter gaya fon , frasa , khas dan formctrl .

Pengisytiharan unsur

Pengisytiharan elemen menyediakan senarai nama elemen yang dibenarkan dalam dokumen, dan juga menyatakan maklumat mengenai teg (sama ada ia diperlukan) dan model kandungan untuk setiap elemen.

Macam-macam kata kunci dan aksara menentukan kandungan elemen:

  • KOSONG - kandungan kosong
  • ANY - apa-apa kandungan
  • , - menunjukkan susunan
  • | - pengasingan alternatif
  • () - berkumpulan
  • * - sebarang bilangan elemen (sifar atau lebih)
  • + - oleh sekurang-kurangnya satu elemen (satu atau lebih)
  • ? - pilihan kehadiran unsur (sifar atau satu)
  • Jika tidak *, + atau ? - mesti ada satu elemen sahaja

(DT|DD) +>

Unsur DL mesti mengandungi satu atau lebih elemen DT atau DD dalam sebarang susunan.

(%block;|SKRIP) + -(BORANG) >

Elemen FORM mesti mengandungi satu atau lebih elemen dengan objek parameter blok atau elemen SCRIPT dalam sebarang susunan, tetapi tidak mungkin mengandungi elemen FORM lain.

Mentakrifkan Atribut

Setiap elemen dalam dokumen DTD boleh mempunyai senarai atribut yang dikaitkan dengannya. Untuk melakukan ini, gunakan arahan!ATTLIST, yang menentukan nama elemen yang senarai atribut boleh dipetakan dan parameter setiap atribut: nama, jenis dan sifat lalainya.

Sebagai contoh:

nama CDATA #DIPERLUKAN>

Contoh ini mentakrifkan atribut nama untuk elemen MAP. Ia adalah wajib.

Terdapat jenis atribut ini:

  • CDATA (Set aksara data) - nilai atribut boleh menjadi sebarang data aksara
  • ID - nilai atribut mestilah pengecam unik elemen
  • IDREF - nilai elemen adalah rujukan kepada elemen dengan IDnya
  • IDREFS - sama seperti IDREF, tetapi dengan keupayaan untuk menghubungkan bukan dengan satu pengecam, tetapi oleh beberapa
  • NMTOKEN - nilai atribut boleh menjadi urutan aksara, agak serupa dengan nama (oleh itu nama - nama token). Ini ialah rentetan yang mengandungi sebarang gabungan aksara tersebut yang dibenarkan untuk nama XML.
  • NMTOKENS - nilai atribut ialah senarai nilai
  • ENTITI - nilai digunakan untuk merujuk entiti luaran.
  • ENTITI - membolehkan anda menentukan senarai entiti luaran, dipisahkan oleh ruang.
  • NOTASI - nilai atribut boleh menjadi salah satu notasi yang ditakrifkan sebelum ini
  • NOTASI - membolehkan anda menentukan senarai notasi.
  • Penyenaraian dan penyenaraian NOTASI
  • ENUMERATION - menentukan senarai alternatif nilai yang mungkin.

Terdapat sifat lalai berikut:

  1. TERSIRAT - nilai atribut tidak perlu dinyatakan;
  2. DIPERLUKAN - nilai atribut mesti dinyatakan;
  3. TETAP - nilai atribut ini ditentukan sebagai pemalar dalam DTD dan tidak boleh diubah dalam dokumen;
  4. beberapa nilai khusus yang digunakan secara lalai.

Persatuan dokumen dengan DTD tertentu

Untuk mengaitkan dokumen dengan DTD tertentu, anda mesti menentukan elemen Pengisytiharan Jenis Dokumen pada permulaan teks dokumen.

Bergantung pada lokasi DTD, Pengisytiharan Jenis Dokumen boleh terdiri daripada dua jenis:

  • Subset DTD dalaman

Satu set pengisytiharan DTD terkandung dalam badan dokumen itu sendiri. Sebagai contoh:

]> ]>

  • Subset DTD luaran

Satu set pengisytiharan DTD terletak di tempat yang berasingan fail teks dengan sambungan .dtd Dalam kes ini, pautan ke fail boleh dibuat melalui pengecam awam dan (atau) melalui pengecam sistem. Sebagai contoh:

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

Contoh

Contohnya sangat XML mudah DTD menerangkan senarai orang:

(orang*) > (nama, tarikh lahir?, jantina?, nombor keselamatan sosial?) > (#PCDATA) > (#PCDATA) > (#PCDATA) >

Bermula dari baris pertama:

  1. unsur Mengandungi sebarang bilangan elemen Tanda<*>bermakna bahawa 0, 1 atau lebih elemen adalah mungkin Di dalam elemen .
  2. unsur Mengandungi unsur , , Dan . Tandabermakna elemen itu adalah pilihan. unsur tidak mengandungi, yang bermaksud bahawa unsur mesti mengandungi unsur .
  3. unsur mengandungi data.
  4. unsur mengandungi data.
  5. unsur mengandungi data.
  6. unsur mengandungi data.

Contoh dokumen XML menggunakan DTD ini:

> > > Fred Bloggs > > 27/11/2008> > jantan > > 1234567890> > >

lihat juga


Yayasan Wikimedia. 2010.

Lihat apa "DTD" dalam kamus lain:

    DTD- , die in einer ASCII Datei (ASCII) abgelegte Beschreibung der Struktur von Dokumenten, welche alle vom selben Typ sind. Eine DTD wird nach den Regeln der antarabangsa antarabangsa… … Universal-Lexikon

    DTD- mungkin bermaksud: Kandungan 1 Media 2 Muzik 3 Sukan 4 Teknologi 4.1 Pengkomputeran ... Wikipedia

    DTD- steht für: Inhaltsverzeichnis 1 Medien 2 Music 3 Technologien 3.1 Komputer 3.1.1 Permainan … Deutsch Wikipedia

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

    DTD- (dē tē dēʹ) n. Satu set peraturan untuk menandakan dokumen dalam SGML. * * * …Universalium

    DTD- (definisi jenis dokumen) spesifikasi yang ditulis dalam Penanda Umum Standard Bahasa dan mengandungi maklumat tentang format dokumen tertentu (Komputer) ... kamus kontemporari Inggeris

20. Bahasa untuk menerangkan skema XML

skim DTD. Kelemahan skim DTD. litar XDR. Elemen dan atribut skema XDR.

Idea untuk mencipta tag anda sendiri yang mempunyai makna istimewa dan membantu menerangkan kandungan dokumen adalah sangat menarik. Tetapi jika setiap pengguna boleh membuat penerangan mereka sendiri, bagaimana mereka boleh dikenali? Untuk tujuan ini, spesifikasi XML menggunakan skema untuk menerangkan teg "buatan sendiri" sedemikian. Mereka adalah perlu untuk:

    terangkan apa sebenarnya markup itu;

    terangkan dengan tepat maksud markup itu.

Bahasa penerangan skema yang paling terkenal adalah yang berikut:

    DTD (Document Type Definition) ialah bahasa definisi jenis dokumen yang pada asalnya digunakan sebagai bahasa untuk menerangkan struktur dokumen SGML.

    XDR (XML Data Reduced) ialah dialek skema XML yang dibangunkan oleh Microsoft yang disokong dalam Internet Explorer versi 4 dan 5.

    Skema XML atau ringkasnya XSD (Bahasa Definisi Skema XML) ialah cadangan W3C sejak tahun 2001.

Mari kita lihat dengan lebih dekat dua daripada mereka yang pertama. Bahasa penerangan litar ketiga diliputi dalam Makmal 11.

Skim DTD

Skema DTD menyediakan templat penanda dokumen yang menentukan kehadiran, susunan dan susunan elemen serta atributnya dalam dokumen XML.

Dari segi DTD, model kandungan dokumen XML boleh diterangkan seperti berikut:

Setiap elemen dokumen boleh mempunyai salah satu daripada jenis berikut:

Sintaks

Satu komen

Hanya mengandungi data teks

Elemen lain

Hanya mengandungi unsur kanak-kanak

bercampur

Mengandungi gabungan data teks dan elemen anak

Tidak mengandungi apa-apa

Atribut yang terdapat di dalam teg dokumen diterangkan secara berasingan menggunakan sintaks:

nama_elemen nama_atribut1 (jenis) nilai lalai

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

nama_elemen nama_atributN (jenis) nilai_ lalai >

Dalam kes ini, atribut dalam DTD boleh mempunyai salah satu daripada tiga jenis:

  • Atribut berlabel

    Atribut dengan penghitungan

Selain jenis atribut, anda juga boleh menetapkan modalitinya:

Pertimbangkan, sebagai contoh, perihalan atribut jenis rentetan untuk elemen yang menerangkan mesej:

nombor CDATA #DIPERLUKAN

tarikh CDATA #DIPERLUKAN

daripada CDATA #FIXED

status CDATA #TERSIRAT>

Jika elemen ini mengandungi atribut terhitung, maka perihalannya mungkin kelihatan, sebagai contoh, seperti ini:

nombor ID #DIPERLUKAN

daripada CDATA #DIPERLUKAN

amaran (rendah | biasa | segera) "normal">

Atribut elemen berlabel boleh terdiri daripada empat jenis:

Akhir sekali, penunjuk kejadian urutan berikut boleh digunakan dalam DTD:

Simbol

Contoh

Penerangan

Penggunaan elemen senarai berturut-turut

Salah satu ahli senarai digunakan

Satu dan hanya satu elemen digunakan

Penggunaan pilihan (0 atau 1 kali)

Digunakan satu kali atau lebih

Digunakan sifar atau lebih kali

Sebagai contoh, berikut ialah gambar rajah DTD yang menerangkan struktur peti mel elektronik:

Dokumen XML sumber yang memenuhi skema ini mungkin kelihatan, sebagai contoh, seperti ini:

[e-mel dilindungi]

[e-mel dilindungi]

Re:

[e-mel dilindungi]

[e-mel dilindungi]

Ingatkan

[e-mel dilindungi]

Ingatkan saya tentang pertemuan.

Beri perhatian kepada baris ke-2 dokumen, yang menunjukkan rujukan luar ke fail yang mengandungi skema DTD.

Pada asasnya, DTD membenarkan dua cara untuk digunakan dalam dokumen XML.

Pengisytiharan skema dalaman:

Mengisytiharkan skema luaran:

Sebagai kesimpulan, kami menunjukkan kelemahan skim DTD berikut:

    Ia bukan contoh XML. Ia memerlukan pembelajaran bahasa yang sama sekali berbeza.

    Mereka tidak menyediakan kawalan ke atas jenis data kecuali untuk data teks yang sangat mudah.

    Ia bukan contoh XML, jadi ia tidak boleh dengan mudah dilanjutkan atau ditukar kepada bahasa penanda lain seperti HTML atau DHTML.

    Tidak menyediakan sokongan untuk ruang nama XML.

Litar XDR

XML-Data nama penuh Bahasa penerangan skema Microsoft dan XML-DataReduced ialah "sebahagian" daripada pengesyoran penuh. Skema XDR ialah contoh XML, i.e. Mematuhi semua peraturan sintaks dan piawaian XML.

Dengan melaksanakan semakan data peringkat dokumen menggunakan skema, aplikasi yang menjana dan menerima transaksi boleh dioptimumkan untuk prestasi maksimum. Padanan medan dan kesahihan rekod disemak pada peringkat contoh XML.

Elemen akar dalam skema XDR sentiasa elemen Skema:

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

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

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

Elemen ElementType mempunyai sintaks:

content="(kosong | texOnly | eltOnly | mixed)">

dt:type "datatype"

model="(buka | ditutup)"

pesanan="(satu | seq | banyak)"

Elemen ElementType boleh mempunyai atribut berikut:

Nama atribut

Penerangan

Nama unsur

Jenis data item

Boleh mengambil nilai:

Terbuka - dibenarkan guna elemen yang tidak ditakrifkan dalam skema

Tertutup – dilarang menggunakan elemen yang tidak ditakrifkan dalam skema

Susunan unsur anak dalam contoh XML. Nilai yang sah:

satu – satu dokumen diandaikan wujud

banyak – sebarang bilangan elemen dalam sebarang susunan

seq - elemen ditentukan dalam susunan yang ditentukan dengan ketat.

Yang berikut boleh digunakan sebagai elemen anak untuk ElementType:

Nama unsur

Penerangan

Mengisytiharkan elemen kanak-kanak

Menyediakan penerangan tentang ElementType

Menyediakan jenis data elemen ElementType

Mentakrifkan susunan unsur

Mentakrifkan atribut

Mentakrifkan maklumat tentang unsur kanak-kanak AttributeType

Sintaks yang digunakan untuk mengisytiharkan atribut ialah:

default="default-value"

dt:type="primitive-type"

dt:values="enumerated-values"

diperlukan="(ya|tidak)"

Sebaliknya, elemen AttributeType boleh mempunyai atribut berikut:

Maknanya

Penerangan

Nilai asal

Salah satu jenis berikut:

entiti, entiti, penghitungan, id, idref, nmtoken, nmtokens, notasi, rentetan

Nilai yang sah

Nama atribut

Menunjukkan bahawa atribut mesti ada dalam huraian

Sintaks untuk menerangkan elemen atribut adalah seperti berikut:

default="default-value"

type="atribut-jenis"

dan kemungkinan nilainya ialah:

Maknanya

Anotasi: Bahagian ini menerangkan prinsip umum penulisan Menentukan jenis dokumen. Kelemahan dan ciri utama DTD juga dibincangkan.

Mengapa anda memerlukan DTD?

Apabila membuat dokumen XML, pembangun sendiri memutuskan: apa yang hendak diberi nama tag, dalam susunan apa ia akan muncul, data apa yang akan ditulis dalam elemen tertentu, sama ada elemen itu akan mempunyai atribut atau tidak, dan banyak lagi. Tanpa penerangan rasmi tentang struktur dokumen, hanya pembangunnya boleh menggunakan dokumen ini. Jika dokumen XML yang dibangunkan bertujuan untuk penghantaran ke dunia luar, sebagai contoh, kepada rakan kongsi perniagaan, dan jika anda juga merancang untuk menerima dokumen yang ditulis dalam format yang sama sebagai balasan, anda tidak boleh melakukannya tanpa definisi jenis dokumen (DTD). Ini berikutan fakta bahawa untuk kedua-dua pihak memahami maklumat yang diterima, elemen dan atribut dalam dokumen mesti digunakan oleh semua pihak dengan cara yang sama. Takrif jenis dokumen membawa ketelitian dan ketepatan kepada peraturan menulis dokumen yang dibentuk dengan baik. dokumen XML. Disimpan pada permulaan fail XML atau secara luaran sebagai fail *.DTD, definisi jenis dokumen menerangkan struktur maklumat dokumen. DTD menyenaraikan nama elemen yang mungkin, mentakrifkan atribut yang tersedia untuk setiap jenis elemen dan menerangkan sarang elemen.

XML digunakan sebagai cara untuk menerangkan tatabahasa bahasa lain. Oleh itu, membangunkan bahasa untuk menulis dokumen XML di kawasan tertentu, kita perlu membangunkan kamus untuk bidang aktiviti ini. DTD mengikut definisi mengandungi semua maklumat yang boleh muncul dalam dokumen XML. Semua yang masuk ke dalam projek mesti dimasukkan dalam DTD. Oleh itu, huraian DTD pada dasarnya adalah seperti kamus. Dunia moden berubah dengan agak dinamik, jadi tidak diketahui terlebih dahulu maklumat apa yang mungkin diperlukan pada masa hadapan, dan untuk mengelakkan daripada kerap menukar struktur dokumen, kamus yang biasanya dibangunkan merangkumi semua yang mungkin diperlukan untuk khusus. jenis perniagaan atau industri. Ini membolehkan definisi DTD digunakan sebagai alat analisis dan reka bentuk. Aplikasi XML berkomunikasi antara satu sama lain berdasarkan perbendaharaan kata yang mereka fahami, jadi mentakrifkan DTD membantu memahami perkara yang boleh diterangkan oleh aplikasi itu.

Satu lagi kegunaan DTD adalah untuk menyemak ketepatan dokumen XML bertulis. Dokumen yang dibentuk dengan baik, ditulis mengikut semua peraturan yang diterangkan dalam spesifikasi XML, tidak boleh disemak untuk ralat. Ralat terlepas boleh menyebabkan kerosakan pada program yang memproses dokumen ini, atau kemasukan data yang salah ke dalam sistem. Tetapi jika dokumen itu merujuk kepada definisi DTD, maka menggunakan penghurai pengesahan kami boleh menyemak sama ada terdapat ralat dalam dokumen kami. Penghurai akan meminta DTD dan memastikan bahawa dokumen itu mengikut peraturan tatabahasa yang diterangkan di dalamnya. Penganalisis mengesan ralat struktur dan kandungan, yang sangat mengurangkan jumlah semakan yang dilakukan oleh logik aplikasi.

Menulis definisi DTD: prinsip umum.

Mengaitkan DTD dengan Dokumen XML

XML 1.0 menyediakan pengisytiharan DOCTYPE khas untuk mengaitkan perisytiharan DTD dengan contoh dokumen. Ia mesti mengikut pengisytiharan XML dan mendahului sebarang elemen dokumen. Walau bagaimanapun, mungkin terdapat ulasan dan perintah pemprosesan antara pengisytiharan XML dan DOCTYPE.

Pengisytiharan DOCTYPE mengandungi kata kunci DOCTYPE, diikuti dengan nama elemen akar dokumen, dan kemudian binaan pengisytiharan kandungan. Sebelum menerangkan pernyataan ini, pertimbangkan contoh lokasi pengisytiharan DOCTYPE dalam contoh dokumen. Di bawah ialah tiga baris pertama dokumen XML:

..

Anda boleh menulis subset luaran pengisytiharan dalam fail berasingan DTD, sertakan subset dalaman dalam kandungan pengisytiharan DOCTYPE, atau lakukan kedua-duanya. Dalam kes kedua (mencampurkan DTD dalaman dan luaran), pengisytiharan baharu boleh ditentukan dalam DTD dalaman atau yang terkandung dalam DTD luaran boleh ditulis semula (mengikut takrifan spesifikasi XML, penghurai membaca subset dalaman dahulu, dan oleh itu pengisytiharan yang terkandung di situ diutamakan).

Pengisytiharan XML boleh mengandungi atribut kendiri, yang hanya menerima nilai "ya" dan "tidak". Jika nilai atribut adalah ya, maka pengisytiharan luar kepada contoh dokumen tidak menjejaskan maklumat yang disampaikan oleh dokumen kepada aplikasi yang menggunakannya. Nilai no menunjukkan bahawa terdapat pengisytiharan luaran dengan nilai yang diperlukan untuk menerangkan kandungan dokumen dengan betul - contohnya, nilai lalai tertentu. Dalam amalan, atribut kendiri pilihan jarang digunakan. Mempunyai atribut ini ditetapkan kepada ya tidak menjamin ketiadaan kebergantungan luaran apa-apa jenis. Cuma kebergantungan luaran dalam kes ini tidak akan membawa kepada ralat dalam dokumen jika ia tidak disertakan dalam pemprosesan. Jadi pada asasnya atribut ini adalah tanda kepada penghurai dan aplikasi lain yang menunjukkan sama ada mereka perlu menggunakan sebarang kandungan luaran.

Blok pengisytiharan dalaman penanda teg DOCTYPE terdiri daripada kurungan segi empat kiri, senarai pengisytiharan dan kurungan segi empat tepat:

DTD dalaman sangat berguna; ia sentiasa terkandung dalam dokumen yang menggunakannya dan oleh itu boleh diperoleh dengan mudah oleh penghurai. Walau bagaimanapun, DTD dalaman meningkatkan saiz dokumen dengan ketara. Dalam amalan, DTD dalaman paling kerap digunakan serentak dengan luaran untuk menambah pengisytiharan baharu. Jika mana-mana objek diisytiharkan di sana yang juga diisytiharkan dalam DTD luar, yang dalam diutamakan. Ini membolehkan anda memperhalusi pengisytiharan agar sesuai dengan keperluan dokumen tertentu.

DTD luaran lebih fleksibel dalam beberapa aspek. DALAM dalam kes ini pengisytiharan DOCTYPE terdiri daripada kata kunci biasa dan nama elemen akar, diikuti oleh SISTEM atau kata kunci AWAM lain yang menunjukkan sumber definisi DTD luaran, diikuti dengan penyetempatan definisi tersebut. Jika kata kunci ialah SYSTEM , DTD mesti secara langsung dan jelas berada di URL yang ditentukan.

Jika DTD luaran ditulis semula dengan kerap, ia mula kehilangan maknanya, yang merupakan tanda reka bentuk awal yang buruk.

Kata kunci PUBLIC ditujukan untuk kamus terkenal. Aplikasi yang menghuraikan dokumen daripada kamus ini mesti menggunakan beberapa strategi untuk mencari DTD yang sesuai.

Piawaian XML 1.0 membenarkan pengisytiharan AWAM mempunyai kedua-dua URI awam dan pengecam sistem. Jika aplikasi atau penghurai yang menjalankan dokumen tidak dapat mencari DTD daripada URI dengan kata kunci PUBLIC, ia mesti menggunakan pengecam sistem.

Pengisytiharan markup asas

Kandungan yang dibenarkan dalam dokumen XML ditentukan oleh empat jenis pengisytiharan markup dalam DTD. Jadual berikut menunjukkan kata kunci yang dikaitkan dengan pengisytiharan ini dan maknanya:

Dua jenis pertama adalah berkaitan dengan maklumat yang kami jangkakan untuk mencari dalam dokumen XML - elemen dan atribut.

Dua jenis terakhir digunakan untuk sokongan. Entiti XML menjadikan kehidupan lebih mudah untuk pembangun kamus. Lazimnya, ia terdiri daripada kandungan yang begitu kerap digunakan dalam DTD atau dokumen yang mewajarkan penciptaan pengisytiharan khas. Penggunaan pengisytiharan ini mengingatkan pernyataan sertakan dalam bahasa C/C++, di mana nama digunakan sebagai pengganti kandungan.

Notasi menerangkan kandungan yang tidak ditulis dalam XML. Ia digunakan untuk mengisytiharkan kelas data tertentu dan mengaitkannya dengan program luaran. Program luaran ini menjadi pengendali untuk kelas data yang diisytiharkan. Contohnya, setelah mengaitkan imej JPEG dengan dokumen, pembangun mahu program menerima dan memaparkan data binari dalam format tersebut. Sudah tentu, dalam kes ini, dokumen bergantung pada jenis pengendali yang tersedia pada sistem yang menerima dokumen. Demi kepentingan mudah alih, sesetengah pengarang tidak menyediakan pautan kepada pengendali. Dalam kes ini, notasi hanya menjadi mekanisme menaip.

Dalam dokumen XML, DTD mentakrifkan satu set elemen yang sah, mengenal pasti elemen yang mungkin terkandung dalam elemen lain dan mentakrifkan atribut yang sah untuk setiap elemen tersebut. Sintaks DTD adalah sangat unik dan memerlukan usaha tambahan daripada pengarang-pembangun semasa membuat dokumen sedemikian (kerumitan DTD adalah salah satu sebab bahawa penggunaan SGML, yang memerlukan penentuan DTD untuk mana-mana dokumen, tidak begitu meluas. sebagai, sebagai contoh, HTML). Seperti yang dinyatakan, tidak perlu menggunakan DTD dalam XML - dokumen yang dibuat tanpa peraturan ini akan diproses dengan betul oleh penghurai jika ia memenuhi keperluan asas sintaks XML. Walau bagaimanapun, kawalan ke atas jenis elemen dan ketepatan perhubungan antara mereka dalam kes ini akan bergantung sepenuhnya kepada pengarang dokumen. Sehingga tatabahasa bahasa baharu kami diterangkan, hanya kami yang akan dapat menggunakannya, dan untuk ini kami akan terpaksa menggunakan perisian yang dibangunkan khas, dan bukan program penghurai sejagat.

DTD untuk XML menggunakan jenis peraturan berikut: peraturan untuk elemen dan atributnya, perihalan kategori (takrif makro), perihalan format data binari. Kesemuanya menerangkan binaan asas bahasa - elemen, atribut, pemalar simbolik, fail data binari luaran.

Untuk menggunakan DTD dalam dokumen kami, kami boleh menghuraikannya sama ada dalam fail luaran dan, apabila menerangkan DTD, cukup berikan pautan ke fail ini, atau terus di dalam dokumen itu sendiri, pilih kawasan untuk menentukan yang diperlukan. peraturan. Dalam kes pertama, dokumen itu menentukan nama fail yang mengandungi perihalan DTD:

...

Di dalam dokumen, pengisytiharan DTD disertakan seperti berikut:

... ... ]> ...

Sekiranya penerangan dalaman dan luaran digunakan secara serentak, program penganalisis akan terlebih dahulu mempertimbangkan yang dalaman, i.e. keutamaan mereka lebih tinggi. Apabila mengesahkan dokumen, pemproses XML mula-mula mencari DTD dalam dokumen. Jika peraturan di dalam dokumen tidak ditakrifkan dan atribut tidak ditetapkan berdiri sendiri="ya", maka program akan memuatkan fail luaran yang ditentukan dan peraturan yang terkandung di dalamnya akan dibaca dari sana. Jika atribut berdiri sendiri mempunyai makna "ya", maka penggunaan perihalan DTD luaran akan dilarang.

Definisi Unsur

Unsur dalam DTD ditakrifkan oleh pemegang! ELEMEN, yang menentukan nama unsur dan struktur kandungannya.

Sebagai contoh, untuk elemen peraturan berikut boleh ditakrifkan:

Kata kunci ELEMENT menunjukkan bahawa pernyataan ini akan menerangkan elemen XML. Di dalam arahan ini, nama unsur (bunga) dan jenis kandungannya ditentukan.

Dalam takrifan elemen, kami mula-mula menentukan nama elemen (bunga), dan kemudian model kandungannya - kami menentukan elemen atau jenis data lain yang boleh berlaku di dalamnya. Dalam kes ini, kandungan elemen bunga akan ditentukan menggunakan penanda PCDATA khas (yang bermaksud data aksara yang boleh dihuraikan - sebarang maklumat yang boleh digunakan oleh program penganalisis). Terdapat dua lagi pernyataan yang mentakrifkan jenis kandungan: EMPTY, ANY. Yang pertama menunjukkan bahawa elemen harus kosong (contohnya, ), yang kedua ialah kandungan elemen tidak diterangkan secara khusus.

Urutan objek kanak-kanak untuk elemen semasa ditentukan sebagai senarai nama elemen yang dipisahkan koma. Dalam kes ini, untuk menunjukkan bilangan ulangan kemasukan unsur-unsur ini, simbol +, *, ? :

Contoh ini menyatakan bahawa di dalam elemen elemen tajuk, pengarang dan jadual kandungan mesti ditakrifkan, dengan elemen tajuk adalah unsur wajib dan boleh berlaku sekali sahaja, elemen pengarang boleh berlaku beberapa kali, dan elemen jadual kandungan adalah pilihan, i.e. mungkin hilang. Jika terdapat beberapa pilihan yang mungkin untuk kandungan elemen yang ditentukan, ia harus dipisahkan menggunakan simbol "|". :

* dalam contoh ini menunjukkan bahawa urutan elemen dalaman yang ditakrifkan mungkin diulang beberapa kali atau tidak digunakan sama sekali.

Jika takrifan elemen menentukan kandungan "campuran", i.e. data teks atau satu set elemen, anda mesti menentukan PCDATA dahulu dan kemudian dipisahkan dengan "|" senarai unsur.

Contoh dokumen XML yang sah:

]> ...

Marks avenue
12-12-12 46-23-62 [e-mel dilindungi]

Mentakrifkan Atribut

Senarai atribut elemen ditakrifkan menggunakan kata kunci! ATTLIST. Di dalamnya, nama-nama atribut, jenis nilai mereka dan parameter tambahan ditentukan. Sebagai contoh, untuk elemen

Atribut berikut boleh ditakrifkan:

DALAM dalam contoh ini untuk unsur artikel tiga sifat ditakrifkan: id, kira-kira Dan menaip, yang mempunyai jenis ID (pengecam), CDATA dan senarai nilai yang mungkin, masing-masing. Terdapat sejumlah enam jenis nilai atribut yang mungkin:

  • CDATA - kandungan dokumen boleh berupa sebarang data aksara
  • ID - mentakrifkan pengecam unik elemen dalam dokumen
  • IDREF(IDREFS) - menunjukkan bahawa nilai atribut hendaklah nama (atau beberapa nama sedemikian, dipisahkan oleh ruang dalam kes kedua) bagi pengecam unik elemen yang ditakrifkan dalam dokumen ini
  • ENTITY(ENTITIES) - nilai atribut mestilah nama (atau senarai nama jika ENTITIES digunakan) komponen (definisi makro) yang ditakrifkan dalam dokumen
  • NMTOKEN (NMTOKENS) - kandungan elemen hanya boleh menjadi satu perkataan (iaitu parameter ini ialah varian terhad CDATA)
  • Senarai nilai yang sah - mentakrifkan senarai nilai yang boleh dimiliki oleh atribut ini.

Anda juga boleh menggunakan parameter berikut dalam definisi atribut:

  • #DIPERLUKAN - mentakrifkan atribut yang diperlukan yang mesti ditetapkan pada semua elemen jenis ini
  • #IMPLIED - atribut adalah pilihan
  • #TETAP "nilai" - menunjukkan bahawa atribut hanya perlu ada nilai yang ditentukan, walau bagaimanapun, definisi atribut itu sendiri tidak wajib, tetapi semasa proses penghuraian, nilainya dalam apa jua keadaan akan dihantar kepada program penganalisis
  • Nilai - menetapkan nilai lalai atribut

Mentakrifkan Komponen (Takrifan Makro)

Entiti mewakili definisi yang kandungannya boleh digunakan semula dalam dokumen. Dalam bahasa pengaturcaraan lain, elemen yang serupa dipanggil definisi makro. Komponen DTD dicipta menggunakan penyataan!ENTITY:

Program penganalisis, melihat pertama sekali pada kandungan kawasan definisi DTD, akan memproses arahan ini dan, semasa menghurai dokumen selanjutnya, akan menggunakan kandungan komponen DTD di tempat di mana namanya muncul. Itu. Sekarang dalam dokumen kita boleh menggunakan ungkapan, yang akan digantikan dengan baris "Kami gembira untuk menyambut anda"

Secara umum, tiga jenis definisi makro boleh ditakrifkan dalam DTD:

Takrifan makro dalaman- direka bentuk untuk mentakrifkan pemalar rentetan; dengan bantuan mereka, anda boleh mengatur pautan kepada maklumat yang kerap ditukar, menjadikan dokumen lebih mudah dibaca. Komponen dalaman disertakan dalam dokumen menggunakan ampersand &

Terdapat lima pemalar aksara dalaman yang dipratentukan dalam XML:

  • < - символ "<"
  • > - simbol ">"
  • & - simbol "&"
  • " - simbol apostrof """
  • " - aksara petikan berganda """

Takrif makro luaran- tuding pada kandungan fail luaran, dan kandungan ini boleh sama ada teks atau data binari. Dalam kes pertama, di mana makro digunakan akan dimasukkan rentetan teks, dalam kedua - data binari yang tidak dipertimbangkan oleh penganalisis dan digunakan oleh program luaran

Definisi Makro Peraturan- takrifan makro parameter hanya boleh digunakan dalam kawasan DTD dan ditunjukkan oleh simbol % khas yang dimasukkan sebelum nama makro. Dalam kes ini, kandungan komponen akan diletakkan terus dalam teks peraturan DTD

Sebagai contoh, untuk serpihan dokumen berikut:

Anda boleh menggunakan bentuk yang lebih pendek:

Makro sering digunakan untuk menerangkan parameter dalam peraturan atribut. Dalam kes ini, anda boleh menggunakan definisi atribut yang sama untuk elemen yang berbeza:

Menaip data

Selalunya, apabila mencipta elemen XML, pembangun perlu menentukan jenis data yang boleh digunakan sebagai kandungannya. Itu. jika kita mentakrifkan unsur 10.10.98, maka kami ingin memastikan bahawa dalam dokumen di tempat ini akan terdapat rentetan yang mewakili tarikh, dan bukan nombor atau jujukan aksara yang sewenang-wenangnya. Menggunakan menaip data, anda boleh mencipta elemen yang nilainya boleh digunakan, sebagai contoh, sebagai parameter dalam pertanyaan SQL. Dalam kes ini, program klien mesti mengetahui jenis data yang dimiliki oleh nilai elemen semasa dan, jika ia sepadan, menjana pertanyaan SQL.

Jika pemproses XML pengesahan digunakan sebagai program sebelah klien, maka maklumat tentang jenis boleh dihantar menggunakan elemen yang dicipta khas untuk atribut ini yang mempunyai definisi DTD yang sesuai. Semasa proses penghuraian, penghurai akan menghantar nilai atribut ini kepada aplikasi klien, yang boleh menggunakan maklumat ini seperti yang diharapkan. Sebagai contoh, untuk menentukan bahawa kandungan elemen mestilah integer panjang, anda boleh menggunakan takrifan DTD berikut:

Dengan menetapkan atribut kepada nilai lalainya iaitu LONG dan mentakrifkannya sebagai TETAP, kami membenarkan program klien mendapatkan maklumat yang diperlukan tentang jenis kandungan daripada unsur ini, dan kini ia boleh menentukan secara bebas sama ada jenis kandungan sepadan dengan yang dinyatakan dalam definisi DTD.

Berikut ialah contoh dokumen XML yang mentakrifkan dan menggunakan beberapa elemen dengan jenis data yang berbeza:

... 5 2 32.5 benar 18346 34 gosok. 28 k. ...

Seperti yang dapat dilihat dari contoh, mekanisme untuk mencipta elemen dokumen tidak berubah sama sekali. Semua maklumat yang diperlukan untuk menyemak jenis data disertakan dalam definisi elemen di dalam blok DTD.

Sebagai kesimpulan, saya ingin ambil perhatian bahawa DTD memberikan kita mekanisme yang sangat mudah untuk mengawal kandungan dokumen. Hari ini, hampir semua program melihat dokumen Internet menggunakan peraturan DTD. Walau bagaimanapun, ini jauh daripada satu-satunya cara untuk menyemak ketepatan dokumen. DALAM pada masa ini dalam konsortium W3 sedang dipertimbangkan standard baru bahasa untuk menerangkan struktur dokumen, dipanggil skema data. Bahagian seterusnya dikhaskan untuk bekerja dengan mereka.

DTD ialah satu set peraturan sintaks yang terhadapnya struktur dokumen XML disahkan. DTD secara eksplisit mentakrifkan struktur dokumen XML, menentukan elemen dan atributnya dan menyediakan maklumat lain yang digunakan untuk semua dokumen XML yang dijana daripada DTD.

Sila ambil perhatian bahawa kehadiran DTD tidak wajib. Jika DTD wujud, sistem XML menggunakannya untuk mentafsir dokumen XML. Jika tiada DTD, sistem XML dijangka mentafsir dokumen mengikut peraturannya sendiri. Walau bagaimanapun, masih disyorkan untuk mencipta DTD untuk dokumen XML, kerana ini memudahkan mereka untuk mentafsir dan menyemak struktur.

DTD boleh dimasukkan terus dalam dokumen XML, dirujuk oleh URL, atau gabungan kedua-duanya. Apabila anda memasukkan DTD secara langsung dalam dokumen XML, definisi DTD muncul serta-merta selepas prolog:

Atribut root_element_name sepadan dengan nama elemen akar dalam teg yang mengandungi keseluruhan dokumen XML. Bahagian "pengisytiharan lain" mengandungi takrifan elemen, atribut, dsb.

Anda mungkin lebih suka meletakkan DTD dalam fail berasingan untuk mengekalkan struktur program modular. Mari lihat rupa pautan ke DTD luaran dalam dokumen XML. Masalahnya boleh diselesaikan dengan satu arahan mudah:

Seperti pengisytiharan DTD dalaman, nama_elemen_akar mesti sepadan dengan nama elemen akar dalam teg yang mengandungi keseluruhan dokumen XML. Atribut SYSTEM menunjukkan bahawa some_dtd.dtd terletak pada pelayan tempatan. Walau bagaimanapun, fail some_dtd.dtd juga boleh dirujuk oleh URL mutlaknya. Akhir sekali, URL DTD luaran, yang terletak pada pelayan setempat atau jauh, dinyatakan dalam petikan.

Jadi bagaimana anda membuat DTD untuk Penyenaraian 14.1? Pertama, kita akan membuat rujukan kepada DTD luaran dalam dokumen XML. Seperti yang dinyatakan dalam bahagian sebelumnya, rujukan DTD kelihatan seperti ini:

Kembali ke Penyenaraian 14.1, kita melihat bahawa buku masakan ialah nama unsur akar, dan buku masakan.dtd ialah nama fail DTD. Kandungan DTD ditunjukkan dalam Penyenaraian 14.2, dan di bawah adalah penerangan terperinci semua baris.

Penyenaraian 14.2. DTD untuk penyenaraian 14.1(buku masakan.dtd)

] >

Apakah maksud dokumen misteri ini? Walaupun kerumitan luaran, ia sebenarnya agak mudah. Mari kita lihat keseluruhan kandungan Penyenaraian 14.2:

Di hadapan kita adalah prolog XML, yang telah disebutkan di atas.

Baris ketiga menerangkan elemen XML, dalam kes ini elemen akar buku masakan. Ia diikuti dengan perkataan resipi, disertakan dalam kurungan. Ini bermakna tag buku masakan mengandungi subtag yang dipanggil resipi. Tanda + menunjukkan bahawa tag buku masakan induk mengandungi satu atau lebih pasangan tag resipi.

Baris keempat menerangkan tag resipi. Ia menyatakan bahawa teg resipi mempunyai empat subteg: tajuk, perihalan, ramuan dan proses. Memandangkan nama teg tidak diikuti oleh penunjuk ulangan (lihat bahagian seterusnya), tag resipi mesti mengandungi tepat sepasang setiap teg yang disenaraikan.

Berikut ialah takrifan pertama bagi teg yang tidak mengandungi teg bersarang. Mengikut takrifan, ia mengandungi #PCDATA, iaitu data aksara arbitrari yang tidak dianggap sebagai sebahagian daripada penanda.

Mengikut takrifan, elemen ramuan mengandungi satu atau lebih teg bernama ramuan. Rujuk Penyenaraian 14.1 dan anda akan faham.

Memandangkan elemen ramuan sepadan dengan satu ramuan, masuk akal bahawa elemen itu mengandungi data aksara ringkas.

Elemen proses mengandungi satu atau lebih contoh elemen langkah.

Elemen langkah, seperti elemen ramuan, sepadan dengan item individu dalam senarai lagi tahap tinggi. Oleh itu, ia mesti mengandungi data aksara.

Perhatikan bahawa elemen resipi dalam Penyenaraian 14.1 mengandungi atribut. Atribut ini, kategori, menentukan kategori umum yang menjadi milik resipi - dalam contoh yang diberikan, kategori "Itali" (Itali). Definisi ATTLIST menentukan kedua-dua nama elemen dan nama atribut. Di samping itu, memperuntukkan setiap resipi kepada kategori tertentu memudahkan pengelasan, jadi atribut diisytiharkan diperlukan (#DIPERLUKAN).

Baris terakhir hanya melengkapkan definisi DTD. Takrifan mesti sentiasa dilengkapkan dengan betul, jika tidak ralat akan berlaku.

Untuk mengakhiri bahagian ini, saya akan menyediakan ringkasan komponen utama fail DTD biasa:

  • pengisytiharan jenis elemen;
  • pengisytiharan atribut;
  • ID, IDREF dan IDREFS;
  • pengisytiharan entiti.

Kami telah melihat beberapa komponen ini dalam Penyenaraian 14.2. Setiap komponen akan diterangkan dengan lebih terperinci di bawah.

Pengisytiharan unsur

Semua elemen yang digunakan dalam dokumen XML mesti ditakrifkan dalam DTD yang mengiringi dokumen tersebut. Kami telah melihat dua jenis takrifan biasa: untuk elemen yang mengandungi elemen lain dan untuk elemen yang mengandungi data aksara. Definisi ini menunjukkan bahawa elemen mengandungi hanya data aksara:

Takrifan elemen proses berikut mengatakan bahawa ia mengandungi tepat satu elemen bersarang yang dipanggil langkah:

Walau bagaimanapun, proses dengan satu langkah agak jarang berlaku - kemungkinan besar, terdapat beberapa langkah. Untuk menunjukkan bahawa elemen mengandungi satu atau lebih contoh elemen langkah bersarang, gunakan bendera ulangan:

Bilangan elemen bersarang boleh ditetapkan dalam beberapa cara. Senarai penuh operator elemen diberikan dalam jadual. 14.1.

Jadual 14.1. Operator Elemen

Jika elemen mengandungi beberapa subelemen, ia hendaklah disenaraikan dipisahkan dengan koma dalam takrifan elemen induk:

Memandangkan ciri pengulangan tidak dinyatakan, setiap teg mesti muncul tepat sekali.

Definisi elemen diperhalusi menggunakan pengendali logik. Katakan anda bekerja dengan resipi yang sentiasa memasukkan pasta dengan satu atau lebih jenis keju atau daging. Dalam kes ini, unsur ramuan ditakrifkan seperti berikut:

Memandangkan elemen pasta mesti ada dalam unsur ramuan, ia ditunjukkan dengan tanda pengulangan +. Ini diikuti oleh sama ada unsur keju atau unsur daging; kami memisahkan alternatif dengan bar menegak dan melampirkannya dalam kurungan dengan tanda +, kerana resipi sentiasa termasuk satu atau yang lain.

Terdapat jenis definisi elemen lain. Kami telah mempertimbangkan hanya kes yang paling mudah. Walau bagaimanapun, bahan yang disediakan adalah mencukupi untuk memahami contoh yang diberikan dalam bab ini yang lain.

Pengisytiharan Atribut

Atribut elemen menerangkan nilai yang dikaitkan dengan elemen. Elemen XML seperti elemen HTML, mungkin mempunyai sifar, satu atau lebih atribut. Sintaks umum untuk mengisytiharkan atribut adalah seperti berikut:

ElementName menentukan nama elemen untuk disertakan dalam teg. Atribut yang dikaitkan dengan elemen kemudiannya disenaraikan. Setiap pengisytiharan atribut terdiri daripada tiga komponen utama: nama, jenis data dan bendera yang menentukan ciri. daripada sifat ini. Pengisytiharan atribut lain boleh diletakkan sebagai ganti elipsis(...).

Kami telah melihat pengisytiharan atribut mudah dalam Penyenaraian 14.2:

Walau bagaimanapun, seperti yang dapat dilihat dari atas definisi umum, pengisytiharan serentak beberapa atribut dibenarkan. Katakan sebagai tambahan kepada atribut kategori, anda ingin mengaitkan atribut kesukaran tambahan dengan elemen resipi. Kedua-dua atribut diisytiharkan dalam senarai yang sama:

Format iklan Dengan cara yang sama tidak perlu; walau bagaimanapun, pengisytiharan berbilang baris adalah lebih jelas daripada pengisytiharan satu baris. Selain itu, memandangkan kedua-dua atribut diperlukan, teg reci re tidak boleh dihadkan kepada satu atribut sahaja; ia mesti memasukkan kedua-dua atribut sekaligus. Sebagai contoh, teg berikut akan dianggap tidak sah:

kenapa? Kerana ia tiada atribut kategori. Tag yang betul mesti mengandungi kedua-dua atribut:

Syarat khas untuk pemprosesan atribut diterangkan oleh tiga bendera yang disenaraikan dalam Jadual. 14.2.

Jadual 14.2. Bendera atribut

Jenis Atribut

Atribut elemen boleh diisytiharkan dengan jenis tertentu. Jenis atribut diterangkan di bawah.

Atribut CDATA

Selalunya atribut mengandungi data aksara umum. Atribut ini dipanggil atribut CDATA. Contoh berikut telah ditemui pada permulaan bahagian ini:

Atribut ID, IDREF dan IDREFS

Idea untuk mewakili data secara jelas (contohnya, maklumat tentang pengguna atau produk yang disimpan dalam pangkalan data) melalui pengecam telah ditemui beberapa kali dalam bab buku sebelumnya. Pengecam juga sering digunakan dalam XML kerana rujukan silang antara dokumen tidak terhad kepada tugasan biasa pemprosesan data, tetapi juga dalam Seluruh Dunia Web(pautan hiper).

Pengecam elemen diberikan kepada atribut ID. Katakan anda ingin mengaitkan ID unik dengan setiap resipi. Serpihan DTD yang sepadan mungkin kelihatan seperti ini:

Selepas ini, pengisytiharan elemen resipi dalam dokumen mungkin kelihatan seperti ini:

Spaghetti alla Carbonara

Resipi dikenal pasti secara unik oleh pengecam ital003. Ambil perhatian bahawa atribut redpe-id adalah daripada jenis ID, jadi ital003 tidak boleh digunakan sebagai nilai atribut recipe-id elemen lain, jika tidak, dokumen itu akan dianggap tidak sah secara sintaksis. Sekarang katakan bahawa kemudian anda ingin merujuk resipi ini daripada dokumen lain - katakan, daripada senarai resipi kegemaran pengguna. Di sinilah rujukan silang dan atribut IDREF dimainkan. Atribut IDREF diberikan pengecam yang digunakan untuk merujuk elemen, sama seperti cara URL digunakan untuk mengenal pasti halaman dalam hiperpautan. Pertimbangkan coretan kod XML berikut:

Semasa pemprosesan dokumen Elemen XML digantikan dengan pautan yang lebih visual kepada resipi dengan pengecam yang ditentukan (contohnya, nama resipi). Ia mungkin akan diformatkan sebagai hiperpautan untuk memudahkan navigasi ke resipi tersebut.

Atribut yang boleh dikira

Apabila mengisytiharkan atribut, anda boleh menyenaraikan semua nilai sah yang diterima oleh atribut. Dalam contoh kami, ini mudah kerana anda boleh mentakrifkan senarai kategori yang sah dengan segera. Pengumuman di atas ditulis dalam borang berikut:

Ambil perhatian bahawa apabila menggunakan senarai nilai yang sah, anda tidak perlu memasukkan jenis CDATA dalam pengisytiharan kerana semua nilai yang disenaraikan adalah dalam format CDATA.

Atribut terhitung dengan nilai lalai

Kadangkala adalah mudah untuk mengisytiharkan nilai lalai untuk atribut. Kemungkinan anda pernah melakukannya sebelum ini semasa membina borang dengan senarai juntai bawah. Contohnya, jika kebanyakan resipi dalam buku masakan anda adalah bahasa Itali, atribut resipi selalunya akan dikategorikan sebagai Itali. Dalam kes ini, kategori Itali boleh ditetapkan sebagai lalai:

Jika atribut kategori tidak dinyatakan secara eksplisit, ia lalai kepada bahasa Itali.

Atribut ENTITY dan ENTITIES

Data dalam dokumen XML tidak selalunya teks - dokumen itu juga boleh mengandungi maklumat binari (contohnya, grafik). Data sedemikian boleh dirujuk menggunakan atribut entiti. Sebagai contoh, dalam perihalan elemen penerangan anda boleh menentukan atribut recipePicture dengan imej grafik:

Anda juga boleh mengisytiharkan beberapa entiti sekaligus dengan menggantikan ENTITY dengan ENTITIES. Nilai dipisahkan oleh ruang.

Atribut NMTOKEN dan NMTOKEN

Atribut NMTOKEN ialah rentetan aksara yang disertakan dalam set terhad. Mengisytiharkan atribut jenis NMTOKEN mengandaikan bahawa nilai atribut sepadan sekatan yang ditetapkan. Biasanya, nilai atribut NMTOKEN terdiri daripada satu perkataan:

Anda boleh mengisytiharkan berbilang atribut serentak dengan menggantikan NMTOKEN dengan NMTOKEN. Nilai dipisahkan oleh ruang.

Pengisytiharan Entiti

Pengisytiharan entiti adalah serupa dengan arahan define dalam beberapa bahasa pengaturcaraan, termasuk PHP. Rujukan entiti telah disebut secara ringkas dalam bahagian sebelumnya, "Memperkenalkan Sintaks XML." Untuk berjaga-jaga, izinkan saya mengingatkan anda bahawa pautan entiti digunakan sebagai pengganti bahagian kandungan yang lain. Apabila dokumen XML diproses, semua kejadian entiti digantikan dengan kandungan yang diwakilinya. Terdapat dua jenis entiti: dalaman dan luaran.

Entiti Dalaman

Entiti dalaman adalah seperti pembolehubah rentetan yang mengaitkan nama dengan sekeping teks. Contohnya, jika anda ingin menentukan nama untuk pautan kepada maklumat hak cipta, anda boleh mengisytiharkan entiti seperti ini:

Semasa pemprosesan dokumen, semua contoh &Hak ​​Cipta digantikan dengan teks “Copyright 2000 YourCompanyName. Hak cipta terpelihara." Semua kod XML dalam teks gantian dianggap seolah-olah ia terdapat dalam dokumen asal.

Entiti dalaman berguna dalam situasi di mana anda merancang untuk menggunakan entiti dalam cara yang agak kecil. kuantiti yang besar dokumen XML. Jika anda mempunyai sejumlah besar dokumen, lebih baik menggunakan entiti luaran.

Entiti Luar

Entiti luaran digunakan untuk merujuk kandungan yang terdapat dalam fail lain. Entiti jenis ini mungkin mengandungi maklumat teks, tetapi juga boleh merujuk kepada data binari (contohnya, grafik). Berbalik kepada contoh sebelumnya, katakan anda memutuskan untuk menyimpan maklumat hak cipta anda dalam fail berasingan untuk memudahkan pengeditan pada masa hadapan. Pautan ke fail yang dibuat kelihatan seperti ini:

Apabila dokumen XML diproses kemudiannya, semua rujukan &Hak ​​Cipta digantikan dengan kandungan dokumen copyright.xml. Semua kod XML dalam teks gantian dianggap seolah-olah ia terdapat dalam dokumen asal.

Entiti luaran juga berguna untuk rujukan imej grafik. Contohnya, jika anda ingin memasukkan logo grafik dalam dokumen XML, buat entiti luaran:

Sumber XML

Walaupun bahan di atas sudah cukup untuk difahami struktur asas dokumen XML, penerangan ini tidak lengkap. Di bawah ialah pautan ke sumber Internet yang mengandungi maklumat yang lebih terperinci:

Bahagian selebihnya menunjukkan kepada anda cara menggunakan PHP untuk memproses dokumen XML. Pada pandangan pertama, tugas itu kelihatan sangat sukar (analisis leksikal mana-mana dokumen dalam apa jua jenis menyebabkan banyak kesukaran).

Tetapi sebaik sahaja anda membiasakan diri dengan strategi asas untuk bekerja dengan XML dalam PHP, semuanya ternyata menjadi sangat mudah.