Programmēšana

XML absolūtajam iesācējam

HTML un globālais tīmeklis ir visur. Kā piemēru viņu visuresamībai es šogad dodos uz Lieldienām uz Centrālameriku, un, ja vēlēšos, varēšu sērfot internetā, lasīt savu e-pastu un pat veikt internetbanku no interneta kafejnīcām Antigva Gvatemala un Belizas pilsēta. (Tomēr es nedomāju, jo tā darīšana prasītu laiku no datuma, kas man ir ar palmu un rumu pildītu kokosriekstu.)

Tomēr, neraugoties uz HTML visuresamību un popularitāti, tas ir ļoti ierobežots attiecībā uz to, ko tas var darīt. Par neoficiālu dokumentu izplatīšanu ir lieliski, taču HTML tagad tiek izmantots, lai veiktu lietas, kurām tā nekad nav bijusi paredzēta. Mēģinājums veidot HTML lielas slodzes elastīgas, sadarbspējīgas datu sistēmas ir tas pats, kas mēģināt uzbūvēt gaisa kuģa pārvadātāju ar metāla zāģiem un lodāmuriem: rīki (HTML un HTTP) vienkārši nav piemēroti.

Labā ziņa ir tā, ka daudzi HTML ierobežojumi ir pārvarēti XML - paplašināmās iezīmēšanas valodā. XML ir viegli saprotams ikvienam, kurš saprot HTML, bet tas ir daudz jaudīgāks. XML ir ne tikai iezīmēšanas valoda metvaloda - valoda, ko izmanto jaunu iezīmēšanas valodu definēšanai. Izmantojot XML, varat izveidot valodu, kas izstrādāta tieši jūsu lietojumprogrammai vai domēnam.

XML papildinās, nevis aizstās HTML. Tā kā HTML tiek izmantots datu formatēšanai un attēlošanai, XML atspoguļo datu kontekstuālo nozīmi.

Šajā rakstā tiks parādīta iezīmēšanas valodu vēsture un XML parādīšanās. Mēs apskatīsim datu paraugus HTML formātā un pakāpeniski pārvietosimies uz XML, parādot, kāpēc tas nodrošina izcilu veidu, kā attēlot datus. Mēs izpētīsim iemeslus, kas jums varētu būt nepieciešami, lai izgudrotu pielāgotu iezīmēšanas valodu, un es iemācīšu, kā to izdarīt. Mēs aplūkosim XML pierakstu pamatus un to, kā XML attēlot ar divu dažādu veidu stilu valodām. Pēc tam mēs iegremdēsimies Dokumenta objekta modelī, kas ir spēcīgs rīks, lai manipulētu ar dokumentiem kā objektiem (vai ar objektu struktūrām kā dokumentiem, atkarībā no tā, kā uz to skatāties). Mēs apskatīsim, kā rakstīt Java programmas, kas iegūst informāciju no XML dokumentiem, ar norādi uz bezmaksas programmu, kas noder eksperimentēšanai ar šīm jaunajām koncepcijām. Visbeidzot, mēs apskatīsim interneta uzņēmumu, kas savu galveno tehnoloģiju stratēģiju balsta uz XML un Java.

Vai XML ir domāts jums?

Lai gan šis raksts ir rakstīts ikvienam, kas interesējas par XML, tam ir īpašas attiecības ar JavaWorld sērijas uz XML JavaBeans. (Skatiet resursus saitēm uz saistītiem rakstiem.) Ja esat lasījis šo sēriju un neesat gluži "to ieguvis", šajā rakstā vajadzētu paskaidrot, kā XML izmantot ar pupiņām. Ja jūs ir to iegūstot, šis raksts kalpo kā lielisks pavadonis XML JavaBeans sērijai, jo tas aptver tajā neskartās tēmas. Un, ja jūs esat viens no nedaudzajiem laimīgajiem, kam joprojām ir gaidāmi XML JavaBeans raksti, es iesaku vispirms izlasīt šo rakstu kā ievadmateriālu.

Piezīme par Java

Datoru pasaulē pēdējā laikā ir tik daudz XML darbību, ka pat šāda garuma raksts var tikai noslaucīt virsmu. Tomēr šī raksta būtība ir sniegt kontekstu, kas jums jāizmanto XML Java programmu projektos. Šajā rakstā ir arī aprakstīts, kā XML darbojas ar esošo tīmekļa tehnoloģiju, jo daudzi Java programmētāji strādā šādā vidē.

XML atver internetu un Java programmēšanu pārnēsājamām funkcijām, kas nav pārlūkprogrammas. XML atbrīvo interneta saturu no pārlūkprogrammas tādā pašā veidā kā Java atbrīvo programmu uzvedību no platformas. XML padara interneta saturu pieejamu reālām lietojumprogrammām.

Java ir lieliska platforma XML izmantošanai, un XML ir izcils datu attēlojums Java lietojumprogrammām. Es norādīšu uz dažām Java priekšrocībām, lietojot XML.

Sāksim ar vēstures stundu.

Marķēšanas valodu izcelsme

HTML, kuru mēs visi pazīstam un kuru mēs mīlam (labi, ka mēs zinām, vienalga), sākotnēji izstrādāja Tims Berners-Lī CERN (Le Conseil Européen pour la Recherche Nucléaire, vai Eiropas Daļiņu fizikas laboratorija) Ženēvā, lai ļautu fizikas nerdiem (un pat nerūpētājiem) sazināties savā starpā. HTML tika izlaists 1990. gada decembrī CERN, un 1991. gada vasarā tas kļuva publiski pieejams mums visiem. CERN un Berners-Lee atdeva HTML, HTTP un URL specifikācijas, izmantojot veco smalko interneta koplietošanas un baudīšanas tradīciju.

Berners-Lī HTML definēja SGML - standarta vispārinātā iezīmēšanas valodā. SGML, tāpat kā XML, ir metāla valoda - valoda, ko izmanto citu valodu definēšanai. Katru tā definēto valodu sauc par an pieteikumu SGML. HTML ir SGML lietojums.

SGML radās pēc pētījumiem, kas galvenokārt tika veikti IBM, 60. gadu beigās, par teksta dokumentu attēlojumu. IBM izveidoja GML ("General Markup Language"), SGML priekšgājēja valodu, un 1978. gadā Amerikas Nacionālais standartu institūts (ANSI) izveidoja savu pirmo SGML versiju. Pirmais standarts tika izlaists 1983. gadā, bet standarta projekts tika izlaists 1985. gadā, un pirmais standarts tika publicēts 1986. gadā. Interesanti, ka pirmais SGML standarts tika publicēts, izmantojot SGML sistēmu, kuru Anderss Berglunds izstrādāja CERN, organizācijā, kas mēs esam redzējuši, iedevuši mums HTML un Web.

SGML tiek plaši izmantots lielās nozarēs un valdībās, piemēram, lielos aviācijas, automobiļu un telekomunikāciju uzņēmumos. SGML tiek izmantots kā dokumentu standarts ASV Aizsardzības departamentā un Iekšējo ieņēmumu dienestā. (Lasītājiem ārpus ASV nodokļu maksātāji ir IRS.)

Alberts Einšteins sacīja, ka viss ir jāpadara pēc iespējas vienkāršāks, nevis vienkāršāks. Iemesls, kāpēc SGML nav atrodams vairākās vietās, ir tas, ka tas ir ļoti izsmalcināts un sarežģīts. HTML, kuru varat atrast visur, ir ļoti vienkāršs; daudzām lietojumprogrammām tas ir pārāk vienkārši.

HTML: visa forma un nav vielas

HTML ir valoda, kas paredzēta dokumentu “runāšanai”: virsrakstiem, virsrakstiem, parakstiem, fontiem utt. Tas ir ļoti orientēts uz dokumentu struktūru un prezentāciju.

Jāatzīst, ka mākslinieki un hakeri ir spējuši darīt brīnumus, izmantojot salīdzinoši blāvo rīku, ko sauc par HTML. Bet HTML ir nopietni trūkumi, kas padara to slikti piemērotu elastīgu, spēcīgu, evolucionāru informācijas sistēmu projektēšanai. Šeit ir dažas no galvenajām sūdzībām:

  • HTML nav paplašināms

    Paplašināma iezīmēšanas valoda ļautu lietojumprogrammu izstrādātājiem definēt pielāgotus tagus lietojumprogrammām specifiskām situācijām. Ja vien neesat 600 mārciņu gorilla (un varbūt pat ne tad), nevarat pieprasīt, lai visi pārlūka ražotāji ieviestu visus jūsu lietojumprogrammai nepieciešamos marķēšanas tagus. Tātad, jūs esat noraizējies par to, ko jums ļaus lielie pārlūku veidotāji vai W3C (World Wide Web Consortium). Mums ir nepieciešama valoda, kas ļauj mums pašiem izveidot iezīmēšanas tagus, nezvanot pārlūkprogrammas ražotājam.

  • HTML ir ļoti orientēts uz displeju

    HTML ir lieliska valoda displeja vajadzībām, ja vien jums nav nepieciešama daudz precīzas formatēšanas vai pārveidošanas vadības (tādā gadījumā tas smird). HTML apzīmē dokumenta loģiskās struktūras (virsrakstu, rindkopu un tamlīdzīgu) sajaukumu ar prezentācijas tagiem (treknrakstā, attēla izlīdzināšana utt.). Tā kā gandrīz visi HTML tagi ir saistīti ar informācijas parādīšanu pārlūkprogrammā, HTML nav noderīgs citām izplatītām tīkla lietojumprogrammām, piemēram, datu replikācijai vai lietojumprogrammu pakalpojumiem. Mums ir nepieciešams veids, kā apvienot šīs parastās funkcijas ar displeju, tāpēc tas pats serveris, ko izmanto datu pārlūkošanai, var arī, piemēram, veikt uzņēmuma biznesa funkcijas un sadarboties ar mantotajām sistēmām.

  • HTML parasti nav tieši atkārtoti lietojams

    Dokumentu izveide tekstapstrādes procesos un pēc tam to eksportēšana HTML formātā ir nedaudz automatizēta, taču, lai sasniegtu pieņemamus rezultātus, tas tomēr prasa vismaz izejas pielāgošanu. Ja mainās dati, no kuriem dokuments tika izveidots, viss HTML tulkojums ir jāpārtaisa. Vietnes, kas visu diennakti parāda pašreizējos laika apstākļus visā pasaulē, parasti ļoti labi pārvalda šo automātisko pārformatēšanu. Dokumenta saturs un noformēšanas stils ir nošķirti, jo sistēmas dizaineri saprot, ka mainās to saturs (temperatūra, prognozes utt.) pastāvīgi. Mums ir nepieciešams veids, kā norādīt datu prezentāciju struktūras ziņā, lai, atjauninot datus, formatējumu varētu konsekventi un viegli "atkārtoti pielietot".

  • HTML nodrošina tikai vienu datu “skatu”

    Ir grūti rakstīt HTML, kas dažādos veidos parāda tos pašus datus, pamatojoties uz lietotāju pieprasījumiem. Dinamiskais HTML ir sākums, taču tas prasa ārkārtīgi daudz skriptu un nav vispārējs šīs problēmas risinājums. (Dinamiskais HTML ir sīkāk aplūkots zemāk.) Mums ir nepieciešams veids, kā iegūt visu informāciju, kuru, iespējams, vēlēsimies pārlūkot vienlaikus, un dažādos veidos apskatīt to klientā.

  • HTML ir maz vai vispār nav semantiskas struktūras

    Lielākajai daļai tīmekļa lietojumprogrammu būtu noderīga spēja attēlot datus ar nozīmi, nevis pēc izkārtojuma. Piemēram, var būt ļoti grūti atrast to, ko meklējat internetā, jo HTML failos nav norādes par datu nozīmi (izņemot META tagus, kas parasti ir maldinoši). Tips

    sarkans

    meklētājprogrammā, un jūs saņemsiet saites uz Red Skelton, sarkano siļķi, sarkano snaiperi, sarkano skandālu, Sarkano burtu dienu un, iespējams, vienu vai divas grāmatas "Books I'm Red" lappuses. HTML nevar noteikt, ko nozīmē konkrēts lapas elements. Noderīgāka iezīmēšanas valoda atspoguļotu informāciju tās nozīmes ziņā. Mums ir vajadzīga valoda, kurā nav norādīts, kā to izdarīt

    displejs

    informācija, bet gan tas, kāds ir konkrētais informācijas bloks

    ir

    tāpēc mēs zinām, ko ar to iesākt.

SGML nav neviena no šiem trūkumiem, taču, lai tas būtu vispārīgs, tas ir matus plosoši sarežģīts (vismaz pilnīgā formā). SGML (tā "stila valoda") formatēšanai izmantotā valoda, ko sauc par DSSSL (dokumentu stila semantiku un specifikācijas valodu), ir ārkārtīgi spēcīga, taču to ir grūti izmantot. Kā iegūt valodu, kas ir aptuveni tikpat viegli lietojama kā HTML, bet kurai ir lielākā daļa SGML spēka?

XML izcelsme

Tīmekļa popularitāte strauji pieauga un cilvēki visā pasaulē sāka mācīties HTML, viņi diezgan ātri sāka saskarties ar iepriekš aprakstītajiem ierobežojumiem. Smagā metāla SGML vilnas, kas gadiem ilgi bija strādājušas relatīvi neskaidrā veidā, pēkšņi atklāja, ka ikdienas cilvēkiem ir kaut kāda izpratne par uzcenojuma (tas ir, HTML) jēdzienu. SGML eksperti sāka apsvērt iespēju tieši izmantot SGML tīmeklī, nevis izmantot tikai vienu tā lietojumu (atkal HTML). Tajā pašā laikā viņi zināja, ka, lai arī SGML ir spēcīgs, vairumam cilvēku tas ir vienkārši pārāk sarežģīts lietošanai.

1996. gada vasarā Jons Bosaks (šobrīd tiešsaistes informācijas tehnoloģiju arhitekts uzņēmumā Sun Microsystems) pārliecināja W3C ļaut viņam izveidot komiteju par SGML izmantošanu tīmeklī. Viņš izveidoja lieljaudīgu muckty-mucks komandu no SGML pasaules. Līdz tā gada novembrim šie ļaudis bija izveidojuši sākumu vienkāršotai SGML formai, kas ietvēra pārbaudītas un patiesas SGML funkcijas, taču ar samazinātu sarežģītību. Tas bija un ir XML.

1997. gada martā Bosaks izlaida savu nozīmīgo darbu "XML, Java un tīmekļa nākotne" (skat. Resursus). Tagad, divus gadus vēlāk (ļoti ilgu laiku tīmekļa dzīvē), Bosaka īsais raksts joprojām ir labs, ja datēts, ievads tam, kāpēc XML izmantošana ir tik lieliska ideja.

SGML tika izveidots vispārējai dokumentu strukturēšanai, un HTML tika izveidots kā SGML lietojums tīmekļa dokumentiem. XML ir SGML vienkāršošana vispārējai tīmekļa lietošanai.

XML konceptuāls piemērs

Visas šīs runas par "savu tagu izgudrošanu" ir diezgan miglainas: kādus tagus izstrādātājs vēlētos izgudrot un kā iegūtā XML tiktu izmantota? Šajā sadaļā aplūkosim piemēru, kas salīdzina un kontrastē informācijas attēlojumu HTML un XML. Vēlākā sadaļā ("XSL: Man patīk jūsu stils") mēs apskatīsim XML displeju.

Pirmkārt, mēs ņemsim receptes piemēru un parādīsim to kā vienu iespējamo HTML dokumentu. Tad mēs pārstrādāsim piemēru XML un apspriedīsim, kas mūs pērk.

HTML piemērs

Apskatiet nelielu HTML fragmentu 1. sarakstā:

   Lime Jello Marshmallow biezpiena siera pārsteigums 

Lime Jello Marshmallow biezpiena siera pārsteigums

Manas vecmāmiņas mīļākā (lai viņa atpūšas mierā).

Sastāvdaļas

DaudzumsVienībasLieta
1lodziņākaļķu želatīns
500gdaudzkrāsaini sīki zefīri
500mlbiezpiens
domuzīmeTabasko mērce (pēc izvēles)

Instrukcijas

  1. Sagatavojiet kaļķa želatīnu saskaņā ar iepakojuma instrukcijām ...

Saraksts 1. Daži HTML

(Šī saraksta izdrukājamu versiju var atrast vietnē example.html.)

Aplūkojot HTML kodu 1. sarakstā, iespējams, ikvienam ir skaidrs, ka šī ir kaut kā recepte (kaut kas šausmīgs, bet tomēr recepte). Pārlūkprogrammā mūsu HTML veido apmēram šādi:

Lime Jello Marshmallow biezpiena siera pārsteigums

Manas vecmāmiņas mīļākā (lai viņa atpūšas mierā).

Sastāvdaļas

DaudzumsVienībasLieta
1lodziņākaļķu želatīns
500gdaudzkrāsaini sīki zefīri
500mlBiezpiens
 domuzīmeTabasko mērce (pēc izvēles)

Instrukcijas

  1. Sagatavojiet kaļķa želatīnu saskaņā ar iepakojuma instrukcijām ...

2. saraksts. Kā izskatās HTML 1. saraksta pārlūkprogrammā

Tagad šīs receptes attēlošanai HTML ir vairākas priekšrocības:

  • Tas ir diezgan lasāms. Uzcenojums var būt nedaudz noslēpumains, bet, ja tas ir pareizi izkārtots, to ir diezgan viegli ievērot.

  • HTML var parādīt gandrīz jebkurš HTML pārlūks, pat tāds, kurā nav grafikas iespēju. Tas ir svarīgs punkts: displejs nav atkarīgs no pārlūka. Ja būtu šīs receptes izgatavošanas rezultātu fotoattēls (un kāds noteikti cer, ka tā nav), tas tiktu parādīts grafiskajā pārlūkprogrammā, bet ne teksta pārlūkprogrammā.

  • Jūs varētu izmantot kaskādes stila lapu (CSS - mēs parunāsim nedaudz par zemāk redzamajiem), lai vispārīgi kontrolētu formatēšanu.

Tomēr HTML kā datu formātam ir viena liela problēma. The nozīme no dažādiem dokumentā esošajiem datiem tiek zaudēta. Ir ļoti grūti ņemt vispārēju HTML un saprast, ko nozīmē HTML dati. Fakts, ka tur ir šīs receptes ar a (daudzums) 500 ml () no biezpienu no šī dokumenta būtu ļoti grūti iegūt tādā veidā, kas parasti ir jēgpilns.

Tagad ideja par datiem HTML dokumentā kaut ko nozīmē var būt mazliet grūti aptverams. Cilvēka lasītājiem tīmekļa lapas ir piemērotas, taču, ja programma gatavojas apstrādāt dokumentu, ir nepieciešamas nepārprotamas definīcijas par to, ko nozīmē tagi. Piemēram, HTML dokumenta tags ietver dokumenta nosaukumu. Tas nozīmē tagu, un tas nenozīmē neko citu. Līdzīgi HTML tags nozīmē "tabulas rinda", taču tas ir maz noderīgs, ja jūsu programma mēģina lasīt receptes, lai, piemēram, izveidotu iepirkumu sarakstu. Kā programma varētu atrast sastāvdaļu sarakstu no Web lapas, kas formatēta HTML formātā?

Protams, jūs varētu uzrakstīt programmu, kas no dokumenta sagrābj galvenes, nolasa tabulas kolonnu galvenes, nosaka katras sastāvdaļas daudzumu un vienības utt. Problēma ir tā, ka visi receptes formatē atšķirīgi. Ko darīt, ja jūs mēģināt iegūt šo informāciju, piemēram, no Julia Childs vietnes, un viņa turpina sajaukt ar formatējumu? Ja Džūlija mainīs kolonnu secību vai pārtrauks izmantot tabulas, viņa pārtrauks jūsu programmu! (Lai arī jāsaka: ja Jūlija sāk publicēt šādas receptes, viņa varētu domāt par karjeras maiņu.)

Tagad iedomājieties, ka šī recepšu lapa ir iegūta no datu bāzes datiem, un jūs vēlaties, lai šos datus varētu nosūtīt apkārt. Varbūt jūs vēlaties to pievienot savai milzīgajai recepšu datu bāzei mājās, kur to varat meklēt un izmantot, kā vēlaties. Diemžēl jūsu ievade ir HTML, tāpēc jums būs nepieciešama programma, kas var nolasīt šo HTML, noskaidrot, kas ir visas “Sastāvdaļas”, “Norādījumi”, “Vienības” un tā tālāk, un pēc tam importēt tās savā datu bāzē. Tas ir daudz darba. Jo īpaši tāpēc, ka visa šī semantiskā informācija - atkal datu nozīme - pastāvēja tajā sākotnējā datu bāzē, bet tika pārveidota HTML formātā.

Tagad iedomājieties, ka jūs varētu izdomāt savu pielāgoto valodu recepšu aprakstīšanai. Tā vietā, lai aprakstītu, kā recepte tika parādīta, jūs aprakstītu informācijas struktūra receptē: kā katra informācija būtu saistīta ar citiem gabaliem.

XML piemērs

Vienkārši izveidosim iezīmēšanas valodu recepšu aprakstīšanai un pārrakstīsim savu recepti šajā valodā, kā 3. sarakstā.

  Kaļķa Jello Marshmallow biezpiens pārsteidz Manas vecmāmiņas mīļāko (lai viņa atpūšas mierā). 1 laima želatīns 500 daudzkrāsaini sīki zefīri 500 Biezpiena tabasko mērce Sagatavojiet laima želatīnu saskaņā ar iepakojuma instrukcijām 

Saraksts 3. Pielāgota recepšu iezīmēšanas valoda

Jūs, kas esat lietpratīgs lasītājs, pārsteigs, ka šī recepte jaunajā formātā faktiski ir XML dokuments. Varbūt fakts, ka fails sākās ar nepāra galveni

atdeva; faktiski katram XML failam jāsākas ar šo galveni. Mēs vienkārši esam izgudrojuši iezīmēšanas tagus, kuriem ir īpaša nozīme; piemēram, "An ir (daudzums norādītajās vienībās) , kas, iespējams, ir neobligāti"Mūsu XML dokuments receptē aprakstīto informāciju apraksta kā receptes, nevis kā ziņā displejs recepte (kā HTML). Informācijas semantika jeb nozīme tiek saglabāta XML, jo tas ir paredzēts tagu kopai.

Piezīmes par apzīmējumiem

Ir svarīgi, lai kāda nomenklatūra būtu taisna. 1. attēlā redzat a sākuma tags, kas sākas slēgta teksta apgabalā, kas pazīstams kā Lieta, saskaņā ar taga nosaukums. Tāpat kā HTML, arī XML tagos var būt saraksts ar atribūti (kas sastāv no atribūta nosaukums un an atribūta vērtība.) Lieta definēts ar tagu, beidzas ar beigu atzīme.

Ne katrs tags satur tekstu. HTML formātā

tags nozīmē "rindas pārtraukums" un nesatur tekstu. XML formātā šādi elementi nav atļauti. Tā vietā XML ir tukšas atzīmes, apzīmēts ar slīpsvītru pirms pēdējās taisnleņķa iekavas tagā. 2. attēlā parādīts tukšs tags no mūsu XML receptes. Ņemiet vērā, ka tukšajiem tagiem var būt atribūti. Šis tukšo tagu piemērs ir standarta XML stenogrāfs .

Papildus šīm no HTML atšķirīgajām atšķirībām XML strukturālie noteikumi ir stingrāki. Katram XML dokumentam jābūt labi izveidota. Ko tas nozīmē? Turpini lasīt!

Ooh-la-la! Labi izveidots XML

Labi formētas jēdziens nāk no matemātikas: ir iespējams rakstīt matemātiskas izteiksmes, kas neko nenozīmē.Piemēram, izteiciens

2 ( + + 5 (=) 9 > 7

izskatās (sava ​​veida) kā matemātika, bet tā nav matemātika, jo tā neievēro matemātiskās izteiksmes notācijas un strukturālos noteikumus (vismaz ne uz šīs planētas). Citiem vārdiem sakot, iepriekš minētā "izteiksme" nav labi izveidota. Matemātiskajām izteiksmēm jābūt labi izveidotām, pirms jūs varat darīt kaut ko noderīgu ar tām, jo ​​izteiksmēm, kas nav labi izveidotas, nav nozīmes.

Labi izveidots XML dokuments ir vienkārši tāds, kas ievēro visus XML notācijas un strukturālos noteikumus. Programmām, kuras plāno apstrādāt XML, ir jānoraida visi ievades XML faili, kas neievēro kārtību, kādā tie tiek veidoti labi. Svarīgākie no šiem noteikumiem ir šādi:

  • Nav aizvērtu tagu

    Jūs varat atbrīvoties no visa veida wacko sīkumiem HTML. Piemēram, lielākajā daļā HTML pārlūkprogrammu saraksta vienumu varat "atvērt" ar

  • un nekad to "neaizveriet" . Pārlūkprogramma tikai izdomā, kur būtu un automātiski to ievietotu jums. XML nepieļauj šāda veida paviršību. Katram sākuma tagam jābūt atbilstošam beigu tagam. Tas ir tāpēc, ka daļa informācijas XML failā ir saistīta ar to, kā dažādi informācijas elementi ir saistīti viens ar otru, un, ja struktūra ir neskaidra, tāpat ir arī informācija. Tātad XML vienkārši nepieļauj neskaidru struktūru. Šī viennozīmīgā struktūra arī ļauj XML dokumentus apstrādāt kā datu struktūras (kokus), kā es īsi paskaidrošu, apspriežot dokumenta objekta modeli.

  • Nav pārklājas tagi

    Taga, kas atveras cita taga iekšpusē, ir jāaizver, pirms saturošais tags tiek aizvērts. Piemēram, secība

    Atzvanīsim visu

    nav labi izveidota, jo atveras iekšpusē bet neaizveras iekšpusē . Jābūt pareizai secībai

    Atzvanīsim visu

    Citiem vārdiem sakot, dokumenta struktūrai jābūt stingri hierarhiskai.

  • Atribūtu vērtības jāiekļauj pēdiņās

    Atšķirībā no HTML, XML nepieļauj atribūtu "kailas" vērtības (t.i., HTML tagiem patīk

    , kur ap atribūta vērtību nav pēdiņu). Katrā atribūta vērtībā jābūt pēdiņām (
    ).

  • Teksta rakstzīmēm () un (") vienmēr jābūt attēlotām ar“ rakstura entītijām ”

    Lai XML teksta daļā (nevis iezīmējumā) attēlotu šīs trīs rakstzīmes (kreisā leņķa iekava, taisnleņķa iekava un dubultās pēdiņas), jums jāizmanto īpašo rakstzīmju entītijas (

    <

    ), (

    >

    ), un (

    "

    ). Šīs rakstzīmes ir XML īpašās rakstzīmes. XML fails, izmantojot, teiksim, dubultās pēdiņas rakstzīmi XML faila tagos ievietotajā tekstā, nav labi izveidots, un pareizi izveidoti XML parsētāji radīs kļūdu šādai ievadei.

"Labi izveidots" nozīmē "parsējams"

Vispārīgs XML parsētājs ir programma vai klase, kas var ievadīt jebkuru labi izveidotu XML. Daudzi pārdevēji tagad piedāvā XML parsētājus Java valodā par brīvu; (saites uz šīm pakotnēm atradīsit šī raksta apakšdaļā esošajos resursos). XML parsētāji atpazīst labi veidotus dokumentus un rada kļūdu ziņojumus (līdzīgi kā kompilators to darītu), saņemot nepietiekami veidotu ievadi. Kā mēs redzēsim, šī funkcionalitāte programmētājam ir ļoti ērta: jūs vienkārši izsaucat izvēlēto parsētāju, un tas rūpējas par kļūdu noteikšanu un tā tālāk. Kaut arī visi XML parsētāji pārbauda dokumentu labi veidotu (tas nozīmē, kā mēs redzējām, ka visiem tagiem ir jēga, tie ir pareizi ievietoti utt.), apstiprināšana XML parsētāji iet vēl vienu soli tālāk. Apstiprinošie parsētāji arī apstiprina, vai dokuments ir derīgs; tas ir, ka tagu struktūrai un skaitam ir jēga.

Piemēram, lielākā daļa pārlūkprogrammu parādīs dokumentu, kuram (nejēdzīgi) ir divi elementi, bet kā tas var būt? Jēga ir tikai vienam nosaukumam vai bez nosaukuma.

Citam piemēram iedomājieties, ka 3. sarakstā "biezpiena" sastāvdaļa izskatījās šādi:

  500 9 Biezpiens 

Šis XML dokuments noteikti ir labi izveidots, taču tam nav jēgas. Tā nav strukturāli derīgs. Tas ir absurds saturēt <Daudzums>. Kas tas ir no šī ?

Problēma ir tāda, ka mums ir labi izstrādāts dokuments, taču tas nav ļoti noderīgs, jo XML nav jēgas. Mums ir nepieciešams veids, kā norādīt, kas padara XML dokumentu derīgu. Piemēram, kā mēs varam norādīt, ka a tagā var būt tikai teksts (un nav citu elementu), un jebkurā citā gadījumā ziņot par kļūdām?

Atbilde uz šo jautājumu ir tā sauktajā dokumenta veida definīcija, kuru mēs apskatīsim tālāk.

$config[zx-auto] not found$config[zx-overlay] not found