Bazele XML pentru începători. Practica și teoria limbajului XML XML este o completare a HTML

Astăzi vom începe să luăm în considerare un foarte popular și convenabil Limbajul de marcare XML. Deoarece acest format de prezentare a datelor este foarte flexibil și universal și poate fi folosit aproape oriunde, asta înseamnă conștiință cu ceva. Prin urmare, un programator începător va trebui, mai devreme sau mai târziu, să se ocupe de acest limbaj și nu contează exact ce faci, fie că este vorba de programare web sau de administrare a bazelor de date, pentru că toată lumea folosește XML și îl vei folosi și pentru a implementa sarcinile. ai nevoie.

Vom începe, ca de obicei, cu teorie, să ne uităm la ce fel de limbaj este, de ce este bun, cum se folosește și unde este folosit.

Definiția limbajului XML

XML (Limbajul de marcare extensibil) este un limbaj de marcare a datelor universal și extensibil, care este independent de sistemul de operare și de mediul de procesare. Xml este folosit pentru a prezenta anumite date sub forma unei structuri, iar această structură o puteți dezvolta singur sau o puteți personaliza pentru un anumit program sau un anumit serviciu. De aceea acest limbaj se numește extensibil, iar acesta este principalul său avantaj, pentru care este atât de apreciat.

După cum știți, există destul de multe limbaje de marcare, de exemplu, limbajul HTML, dar toate, într-un fel sau altul, depind de procesor, de exemplu, același html, al cărui cod îl analizează browserul, este standardizat și nu este extensibil, există etichete clare acolo, sintaxă care nu poate fi încălcată, iar în xml vă puteți crea propriile etichete, adică. marcajul dvs. Principala diferență dintre HTML și XML este că html descrie doar marcajul pentru afișarea datelor, iar xml este o structură abstractă de date care poate fi procesată și afișată după cum doriți și oriunde și, prin urmare, nu este nevoie să comparați aceste limbi, ele au scopuri complet diferite.

După cum am menționat mai sus, xml este un limbaj foarte comun și universal, prin care aproape toate aplicațiile, atât web, cât și doar pentru computer, îl folosesc ca schimb de informații, deoarece cu ajutorul acestuia puteți schimba foarte ușor date între aplicații sau servicii care sunt chiar scrise în diferite limbi. În acest sens, fiecare programator începător care este implicat în absolut orice programare ar trebui să înțeleagă XML. Dacă vrei să devii web master, atunci pur și simplu trebuie să cunoști XML și am discutat deja despre cum să devii WEB Master și ce trebuie să știi pentru asta.

De exemplu, am avut odată sarcina de a scrie un anumit serviciu care ar trebui să returneze date în formă xml la cerere, de exemplu. un fel de dezvoltare a părții de server a aplicației și nu aveam idee în ce este scris clientul care va procesa aceste date și că am scris un serviciu care a returnat datele în formă xml și atât, aplicația a funcționat perfect . Și acesta este doar un exemplu cu care a trebuit să mă ocup, dar acum imaginați-vă câte organizații diferite colaborează și dezvoltă software și fac schimb de date în mod conștiincios și nu m-ar mira că aceste date vor fi în formă xml.

De exemplu, am avut odată sarcina de a scrie un anumit serviciu care ar trebui să returneze date în formă xml la cerere, de exemplu. un fel de dezvoltare a părții de server a aplicației și nu aveam idee în ce este scris clientul care va procesa aceste date și că am scris un serviciu care a returnat datele în formă xml și atât, aplicația a funcționat perfect . Și acesta este doar un exemplu cu care a trebuit să mă ocup, dar acum imaginați-vă câte organizații diferite colaborează și dezvoltă software și fac schimb de date în mod conștiincios și nu m-ar mira că aceste date vor fi în formă xml.

De asemenea, odată a trebuit să stochez datele xml într-o bază de date MS SQL 2008 pentru a reprezenta mai bine aceste date și a le schimba între server și partea client a aplicației, am discutat despre acest lucru în articolul - Transact-sql - lucrul cu xml .

Limbajul XML în sine este foarte simplu și este pur și simplu imposibil de confundat în el, toată complexitatea apare tocmai în procesarea și interacțiunea XML cu alte aplicații, tehnologii, de ex. tot ceea ce înconjoară xml, care este locul în care te poți încurca cu ușurință.

Astăzi vorbim doar despre elementele de bază ale XML și nu ne vom concentra pe tehnologiile de procesare și interacțiune cu acest limbaj, deoarece acesta este un material adevărat, foarte voluminos, dar cred că în viitor vom continua să ne familiarizăm cu tehnologiile conexe. .

Să trecem la practică. Și voi scrie toate exemplele pe care le vom lua în considerare în Notepad++ doar pentru că este foarte convenabil, dar nu vom vorbi despre asta acum, deoarece am discutat deja despre acest lucru în articolul - Ce este bun Notepad++ pentru un dezvoltator începător.

Etichete XML

Limbajul XML utilizează etichete ( etichetele sunt sensibile la majuscule), dar nu aceleași etichete ca în html, ci cele pe care le vii tu, dar și documentul xml are o structură clară, adică. există o etichetă de deschidere și una de închidere, există etichete imbricate și, desigur, există valori care se află în aceste etichete. Cu alte cuvinte, tot ce aveți nevoie pentru cunoștințele de bază despre XML este doar să urmați aceste reguli. Împreună, eticheta de deschidere, de închidere și valoarea sunt numite element, iar întregul document xml este format tocmai din elemente care formează împreună o structură de date. Un document xml poate avea doar un element rădăcină, rețineți acest lucru, deoarece dacă scrieți două elemente rădăcină, va fi o eroare.

Și este timpul să dăm un exemplu de markup xml, iar primul exemplu pentru moment este pentru sintaxă:

<Начало элемента> <Начало вложенного элемента>Valoarea elementului imbricat

După cum puteți vedea, totul este destul de simplu și pot exista o mulțime de astfel de elemente imbricate unele în altele.

Acum să dăm un exemplu de document xml real:

După cum puteți vedea, am dat aici doar un exemplu de un fel de catalog de cărți, dar nu am declarat acest document, i.e. Nu am scris o declarație XML care să spună aplicației care va procesa aceste date că datele xml se află aici și în ce codificare sunt prezentate. De asemenea, puteți scrie comentarii și atribute, așa că să dăm un exemplu de astfel de document:

Cartea 1 Ivan Doar cartea 1 Cartea 2 Serghei Doar cartea 2 Cartea 3 Roman Doar cartea 3

Unde prima linie este declarația că acesta este un document XML și trebuie citit în codificare UTF-8.

Aceste date fără procesare vor arăta, de exemplu, într-un browser (Mozilla Firefox) după cum urmează:

Sper că înțelegeți că aici catalogul este elementul rădăcină, care constă din elementele carte, care la rândul său constă din elementele de nume, autor și comentariu, iar pentru exemplu, am setat și mai multe atribute pentru elementul catalog și elementul carte .

Pentru elementele de bază, cred că este suficient, pentru că dacă ne scufundăm tot mai adânc în XML și în toate tehnologiile care sunt asociate cu acest limbaj, atunci acest articol nu se va termina niciodată. Deci asta e tot pentru azi. Pa!

XML este un format foarte popular și flexibil în zilele noastre. Fiecare programator ar trebui să-l înțeleagă, este pur și simplu un must have. Multe tehnologii astăzi îl folosesc în mod activ, iar cele moderne se numără printre ele.

Introducere

Bună ziua, dragi cititori ai articolului meu. Vreau să spun imediat că acesta este doar primul articol din seria mea de trei articole. Scopul principal al întregii serii este de a iniția fiecare cititor în XML și de a oferi, dacă nu o explicație și înțelegere completă, atunci măcar un bun impuls către acesta, explicând punctele și lucrurile principale. Întregul ciclu va fi pentru o nominalizare – „Atenție la detalii”, iar împărțirea în 3 articole a fost făcută pentru a se încadra în limita de caractere din postări și a împărți o cantitate mare de material în porțiuni mai mici pentru o mai bună înțelegere. Primul articol va fi dedicat XML-ului în sine și ce este acesta, precum și una dintre modalitățile de a crea o schemă pentru fișierele XML - DTD. Pentru început, aș dori să fac o mică prefață pentru cei care nu sunt încă familiarizați cu XML: nu trebuie să vă sperii. XML nu este foarte complicat și ar trebui să fie înțeles de orice programator, deoarece este un format de fișier foarte flexibil, eficient și popular astăzi pentru stocarea unei varietăți de informații pe care le doriți. XML este folosit în Ant, Maven, Spring. Orice programator are nevoie de cunoștințe de XML. Acum că ți-ai adunat puterea și motivația, hai să începem să studiem. Voi încerca să așez tot materialul cât mai simplu posibil, adunând doar cele mai importante și fără a intra în buruieni.

XML

Pentru o explicație mai clară, ar fi mai bine să vizualizați XML-ul cu un exemplu.< ? xml version= "1.0" encoding= "UTF-8" ? > < company> < name> IT Raiul< / name> < offices> < office floor= "1" room= "1" > < employees> < employee> < name> Maxim< / name> < job> Dezvoltator de software mediu< / job> < / employee> < employee> < name> Ivan< / name> < job> Dezvoltator software junior< / job> < / employee> < employee> < name> Franklin< / name> < job> Dezvoltator software junior< / job> < / employee> < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee> < name> Herald< / name> < job> Dezvoltator de software mediu< / job> < / employee> < employee> < name> Adam< / name> < job> Dezvoltator de software mediu< / job> < / employee> < employee> < name> Leroy< / name> < job> Dezvoltator software junior< / job> < / employee> < / employees> < / office> < / offices> < / company>HTML și XML sunt similare ca sintaxă, deoarece au un părinte comun - SGML. Cu toate acestea, în HTML există doar etichete fixe de un anumit standard, în timp ce în XML vă puteți crea propriile etichete, atribute și, în general, puteți face tot ce doriți pentru a stoca date în modul care vi se potrivește. De fapt, fișierele XML pot fi citite de oricine cunoaște limba engleză. Acest exemplu poate fi reprezentat folosind un copac. Rădăcina copacului- Companie. Este, de asemenea, elementul rădăcină (rădăcină) din care provin toate celelalte elemente. Fiecare fișier XML poate avea un singur element rădăcină. Ar trebui anunțat după declarație fișier xml(prima linie din exemplu) și conține toate celelalte elemente. Un pic despre declarație: it obligatoriuși este necesar pentru a identifica documentul ca XML. Are trei pseudo-atribute (atribute speciale predefinite): versiune (conform standardului 1.0), codificare (codificare) și autonom (autonomie: dacă da și scheme externe sunt conectate la document, atunci va apărea o eroare, implicit este nu). Elemente sunt entități care stochează date folosind alte elemente și atribute. Atribute– acestea sunt informații suplimentare despre element, care sunt specificate la adăugarea unui element. Dacă traducem explicația într-un câmp OOP, putem da următorul exemplu: avem o mașină, fiecare mașină are caracteristici (culoare, capacitate, marca etc.) - acestea sunt atribute și există entități care se află în interiorul mașinii. : ușile, geamurile, motorul, volanul sunt alte elemente. Puteți stoca proprietăți fie ca elemente individuale, fie ca atribute, în funcție de dorința dvs. La urma urmei, XML este un format extrem de flexibil pentru stocarea informațiilor despre orice. După explicații, trebuie doar să ne uităm la exemplul de mai sus pentru ca totul să se încadreze la loc. În exemplu, am descris o structură simplă a companiei: există o firmă care are nume și birouri, iar în birouri sunt angajați. Elementele Angajații și Birourile sunt elemente de ambalare - servesc la colectarea elementelor de același tip, combinându-le în esență într-un singur set pentru ușurința procesării. Podeaua și camera merită o atenție deosebită. Acestea sunt atributele biroului (etaj și număr), cu alte cuvinte, proprietățile acestuia. Dacă am avea un element „imagine”, atunci i-am putea transfera dimensiunile. Este posibil să observați că compania nu are un atribut de nume, dar are un element de nume. Puteți descrie pur și simplu structurile așa cum doriți. Nimeni nu te obligă să scrii toate proprietățile elementelor doar în atribute, poți să folosești doar elemente și să scrii câteva date în interiorul lor. De exemplu, putem înregistra numele și poziția angajaților noștri ca atribute:< ? xml version= "1.0" encoding= "UTF-8" ? > < company> < name> IT Raiul< / name> < offices> < office floor= "1" room= "1" > < employees> < employee name= "Maksim" job= "Middle Software Developer" > < / employee> < employee name= "Ivan" job= "Junior Software Developer" > < / employee> < employee name= "Franklin" job= "Junior Software Developer" > < / employee> < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee name= "Herald" job= "Middle Software Developer" > < / employee> < employee name= "Adam" job= "Middle Software Developer" > < / employee> < employee name= "Leroy" job= "Junior Software Developer" > < / employee> < / employees> < / office> < / offices> < / company>După cum puteți vedea, acum numele și funcția fiecărui angajat sunt atributele sale. Și puteți observa că nu există nimic în interiorul entității angajat (eticheta), toate elementele angajaților sunt goale. Apoi, puteți face angajatul un element gol - închideți-l imediat după declararea atributelor. Acest lucru se face destul de simplu, doar adăugați o bară oblică:< ? xml version= "1.0" encoding= "UTF-8" ? > < company> < name> IT Raiul< / name> < offices> < office floor= "1" room= "1" > < employees> < employee name= "Maksim" job= "Middle Software Developer" / > < employee name= "Ivan" job= "Junior Software Developer" / > < employee name= "Franklin" job= "Junior Software Developer" / > < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee name= "Herald" job= "Middle Software Developer" / > < employee name= "Adam" job= "Middle Software Developer" / > < employee name= "Leroy" job= "Junior Software Developer" / > < / employees> < / office> < / offices> < / company>După cum puteți vedea, prin închiderea elementelor goale, am păstrat întreaga integritate a informațiilor și am scurtat foarte mult înregistrarea, făcând informațiile mai concise și mai lizibile. A adauga un comentariu(text care va fi omis la analizarea fișierului) în XML, există următoarea sintaxă:< ! -- Иван недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка. -- >Și ultimul design este CDATA , înseamnă „date despre caracter”. Datorită acestui design, este posibil să scrieți text care nu va fi interpretat ca markup XML. Acest lucru este util dacă aveți o entitate în fișierul XML care stochează marcaj XML în informații. Exemplu:< ? xml version= "1.0" encoding= "UTF-8" ? > < bean> < information> < ! [ CDATA[ < name> Ivan< / name> < age> 26 < / age> ] ] > < / information> < / bean>Lucrul despre XML este că îl puteți extinde cum doriți: utilizați propriile elemente, propriile atribute și structurați-l după cum doriți. Puteți folosi atât atribute, cât și elemente pentru a stoca date (așa cum a fost arătat în exemplul anterior). Cu toate acestea, trebuie să înțelegeți că puteți veni cu propriile elemente și atribute din mers și cum doriți, dar dacă lucrați la un proiect în care un alt programator dorește să mute elementul nume în atribute și întreaga logică a programului. este scris astfel încât numele acela să fie un element? Cum îți poți crea propriile reguli despre ce elemente ar trebui să fie, ce atribute au acestea și alte lucruri, astfel încât să poți valida fișierele XML și să fii sigur că regulile vor deveni standard în proiectul tău și nimeni nu le va încălca? Pentru a scrie toate regulile de markup XML, există instrumente speciale. Cele mai cunoscute: DTD și XML Schema. Acest articol va vorbi doar despre primul.

DTD

DTD este creat pentru a descrie tipuri de documente. DTD devine deja învechit și acum este abandonat în mod activ în XML, dar există încă multe fișiere XML care folosesc DTD și, în general, este util de înțeles. DTD este o tehnologie de validare a documentelor XML. Un DTD declară reguli specifice pentru un tip de document: elementele acestuia, ce elemente pot fi în interiorul elementului, atribute, dacă sunt necesare sau nu, numărul de repetări ale acestora, precum și Entități. Similar cu XML, un DTD poate fi vizualizat cu un exemplu pentru o explicație mai clară.< ! -- Объявление возможных элементов -- > < ! ELEMENT employee EMPTY> < ! ELEMENT employees (employee+ ) > < ! ELEMENT office (employees) > < ! ELEMENT offices (office+ ) > < ! ELEMENT name (#PCDATA) > < ! ELEMENT company (name, offices) > < ! -- Добавление атрибутов для элементов employee и office -- > < ! ATTLIST employee name CDATA #REQUIRED job CDATA #REQUIRED > < ! ATTLIST office floor CDATA #REQUIRED room CDATA #REQUIRED > < ! -- Добавление сущностей -- > < ! ENTITY M "Maksim" > < ! ENTITY I "Ivan" > < ! ENTITY F "Franklin" >Aici avem un exemplu atât de simplu. În acest exemplu, ne-am declarat întreaga ierarhie din exemplul XML: angajat, angajați, birou, birouri, nume, companie. Pentru a crea fișiere DTD, există 3 construcții principale folosite pentru a descrie orice fișier XML: ELEMENT (pentru a descrie elemente), ATTLIST (pentru a descrie atributele elementelor) și ENTITY (pentru a înlocui textul cu forme abreviate). ELEMENT Servește pentru a descrie elementul. Elementele care pot fi utilizate în cadrul unui element descris sunt enumerate între paranteze sub formă de listă. Puteți folosi cuantificatori pentru a indica cantitatea (sunt similare cuantificatorilor din expresiile regulate): + înseamnă 1+ * înseamnă 0+ ? înseamnă 0 SAU 1 Dacă nu s-au adăugat cuantificatori, atunci se presupune că ar trebui să existe doar 1 element. Dacă avem nevoie de unul dintr-un grup de elemente, l-am putea scrie astfel:< ! ELEMENT company ((name | offices) ) >Atunci ar fi selectat unul dintre elemente: nume sau birouri, dar dacă ar fi două în interiorul companiei, atunci validarea nu ar trece. De asemenea, puteți observa că în angajat există cuvântul EMPTY - asta înseamnă că elementul trebuie să fie gol. Există, de asemenea, ORICE - orice elemente. #PCDATA – date text. ATTLIST Folosit pentru a adăuga atribute elementelor. După ATTLIST urmează numele elementului dorit, iar după el un dicționar de forma „nume atribut - tip atribut”, iar la final se poate adăuga #IMPLIED (opțional) sau #NECESAR (obligatoriu). CDATA – date text. Există și alte tipuri, dar toate sunt litere mici. ENTITATE ENTITY este folosit pentru a declara abrevierile și textul care va fi plasat pe acestea. De fapt, putem folosi pur și simplu în XML, în loc de textul complet, doar numele entității cu semnul & înainte de și; după. De exemplu: pentru a face diferența între marcajul HTML și doar caracterele, paranteza unghiulară din stânga este adesea eliminată cu lt; , trebuie doar să puneți & înainte de lt. Atunci nu vom folosi marcajul, ci pur și simplu un simbol< . Как вы можете видеть, все довольно просто: объявляете элементы, объясняете, какие элементы объявленные элементы способны содержать, добавление атрибутов этим элементам и, по желанию, можете добавить сущности, чтобы сокращать какие-то записи. И тут вы должны были бы спросить: а как использовать наши правила в нашем XML файле? Ведь мы просто объявили правила, но мы не использовали их в XML. Există două moduri de a le folosi în XML: 1. Implementare - scrierea regulilor DTD în interiorul fișierului XML în sine, trebuie doar să scrieți elementul rădăcină după cuvântul cheie DOCTYPE și să introduceți fișierul nostru DTD între paranteze drepte. < ? xml version= "1.0" encoding= "UTF-8" ? > < ! DOCTYPE company [ < ! -- Объявление возможных элементов -- > < ! ELEMENT employee EMPTY> < ! ELEMENT employees (employee+ ) > < ! ELEMENT office (employees) > < ! ELEMENT offices (office+ ) > < ! ELEMENT name (#PCDATA) > < ! ELEMENT company (name, offices) > < ! -- Добавление атрибутов для элементов employee и office -- > < ! ATTLIST employee name CDATA #REQUIRED job CDATA #REQUIRED > < ! ATTLIST office floor CDATA #REQUIRED room CDATA #REQUIRED > < ! -- Добавление сущностей -- > < ! ENTITY M "Maksim" > < ! ENTITY I "Ivan" > < ! ENTITY F "Franklin" > ] > < company> < name> IT Raiul< / name> < ! -- Иван недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка. -- > < offices> < office floor= "1" room= "1" > < employees> < employee name= "&M;" job= "Middle Software Developer" / > < employee name= "&I;" job= "Junior Software Developer" / > < employee name= "&F;" job= "Junior Software Developer" / > < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee name= "Herald" job= "Middle Software Developer" / > < employee name= "Adam" job= "Middle Software Developer" / > < employee name= "Leroy" job= "Junior Software Developer" / > < / employees> < / office> < / offices> < / company> 2. Import - scriem toate regulile noastre într-un fișier DTD separat, după care în fișierul XML folosim construcția DOCTYPE din prima metodă, doar în loc de paranteze pătrate trebuie să scrieți SYSTEM și să specificați o cale absolută sau relativă către locația curentă a fișierului. < ? xml version= "1.0" encoding= "UTF-8" ? > < ! DOCTYPE company SYSTEM "dtd_example1.dtd" > < company> < name> IT Raiul< / name> < ! -- Иван недавно уволился, только неделю отработать должен. Не забудьте потом удалить его из списка. -- > < offices> < office floor= "1" room= "1" > < employees> < employee name= "&M;" job= "Middle Software Developer" / > < employee name= "&I;" job= "Junior Software Developer" / > < employee name= "&F;" job= "Junior Software Developer" / > < / employees> < / office> < office floor= "1" room= "2" > < employees> < employee name= "Herald" job= "Middle Software Developer" / > < employee name= "Adam" job= "Middle Software Developer" / > < employee name= "Leroy" job= "Junior Software Developer" / > < / employees> < / office> < / offices> < / company>De asemenea, puteți utiliza cuvântul cheie PUBLIC în loc de SYSTEM, dar este puțin probabil să vă fie util. Dacă sunteți interesat, puteți citi despre el (și despre SISTEM) în detaliu aici: link. Acum nu putem folosi alte elemente fără a le declara în DTD și tot XML este supus regulilor noastre. Puteți încerca să scrieți acest cod în IntelliJ IDEA într-un fișier separat cu extensia .xml și să încercați să adăugați câteva elemente noi sau să eliminați un element din DTD-ul nostru și să observați cum IDE-ul vă va indica o eroare. Cu toate acestea, DTD are dezavantajele sale:
  • Are propria sa sintaxă, diferită de sintaxa xml.
  • Un DTD nu are verificarea tipului de date și poate conține doar șiruri.
  • Nu există spațiu de nume într-un DTD.
Despre problema propriei sintaxe: trebuie să înțelegeți două sintaxe simultan: sintaxa XML și DTD. Sunt diferite și acest lucru vă poate face confuz. De asemenea, din această cauză, este mai dificil să urmăriți erorile din fișierele XML uriașe împreună cu aceleași scheme DTD. Dacă ceva nu funcționează pentru tine, trebuie să verifici o cantitate mare de text cu sintaxe diferite. E ca și cum ai citi două cărți în același timp: în rusă și engleză. Și dacă cunoștințele tale despre o limbă sunt mai proaste, atunci înțelegerea textului va fi la fel de dificilă. Despre problema verificării tipului de date: atributele din DTD-uri au tipuri diferite, dar toate sunt, la bază, reprezentări în șir de ceva, liste sau link-uri. Totuși, nu poți cere doar numere, și mai ales nu pozitive sau negative. Și puteți uita complet de tipurile de obiecte. Ultima problemă va fi discutată în următorul articol, care va fi dedicat spațiilor de nume și schemelor XML, deoarece discutarea ei aici este inutilă. Vă mulțumesc tuturor pentru atenție, am depus multă muncă și o fac în continuare pentru a termina întreaga serie de articole la timp. Practic, trebuie doar să-mi dau seama de schemele XML și să vin cu o explicație a acestora în cuvinte mai clare pentru a termina articolul 2. Jumătate din ea este deja făcută, așa că vă puteți aștepta la ea în curând. Ultimul articol va fi dedicat în întregime lucrului cu fișiere XML folosind Java. Succes tuturor și succes în programare :) Articolul următor:

Astăzi, pentru toți specialiștii din domeniul tehnologiilor web a devenit evident că standardele existente pentru transmiterea datelor prin Internet nu sunt suficiente. Formatul HTML, devenit cândva o descoperire în domeniul afișării conținutului site-urilor de internet, nu mai îndeplinește toate cerințele necesare în prezent. Vă permite să descrieți modul în care datele ar trebui să fie afișate pe ecranul utilizatorului final, dar nu oferă niciun mijloc de a descrie și gestiona în mod eficient datele transmise.

În plus, o piatră de poticnire pentru multe companii de dezvoltare de software este nevoia de a partaja diferite componente, de a asigura interacțiunea acestora și abilitatea de a face schimb de date între ele.

Până de curând, nu existau instrumente standard pentru preluarea inteligentă a informațiilor, schimbul de date și procesarea adaptivă a datelor primite.

Soluția la toate problemele descrise mai sus a fost limbajul XML aprobat în 1998 de organizația internațională W3C (EN). XML (eXtensible Markup Language) este un limbaj de marcare extensibil conceput pentru a descrie datele structurate sub formă de text. Acest format bazat pe text, la fel ca HTML, este conceput special pentru stocarea și transmiterea datelor.

XML vă permite să descrieți și să transmiteți date structurate, cum ar fi:

  • documente separate;
  • metadate care descriu conținutul unui site de internet;
  • obiecte care conțin date și metode de lucru cu acestea (de exemplu, controale ActiveX sau obiecte Java);
  • înregistrări individuale (de exemplu, rezultatele executării interogărilor bazei de date);
  • tot felul de link-uri web către informații și resurse umane de pe Internet (adrese de e-mail, link-uri hipertext etc.).

Crearea documentelor XML

Datele descrise în XML se numesc documente XML. XML este ușor de citit și suficient de simplu de înțeles. Dacă erai familiarizat cu HTML, atunci să înveți cum să compui documente XML nu va fi dificil pentru tine.

Textul sursă al unui document XML constă dintr-un set de elemente XML, fiecare dintre ele conţinând o etichetă de început şi de sfârşit. Fiecare pereche de etichete reprezintă o bucată de date. Adică, ca și HTML, XML folosește etichete pentru a descrie datele. Dar, spre deosebire de HTML, XML permite un set nelimitat de perechi de etichete, fiecare dintre acestea reprezentând nu cum ar trebui să arate datele pe care le conține, ci ce înseamnă acestea.

Buna dimineata ȘTIRI Serialul de televiziune Gentle Poison Câmpul miracolelor (repetare) M. f. Sănătate ȘTIRI Bucurați-vă de baie! M. f. Împreună ȘTIRI Cea mai buna ora ȘTIRI Vreme GOOG noapte copii TIMP Vedere

Acest text poate fi creat în format text simplu și salvat într-un fișier cu extensie XML.

Orice element al unui document XML poate avea atribute care îi specifică caracteristicile. Un atribut este o pereche name="valoare" care este specificată la definirea unui element în eticheta de început. În exemplul de mai sus, elementul există un atribut date="25 decembrie" și elementul - atribut name="ORT".

Principiul extensibilității limbajului XML este capacitatea de a utiliza un număr nelimitat de perechi de etichete, definite de creatorul documentului XML. De exemplu, descrierea de mai sus a programului TV poate fi extinsă pentru a include informații despre regiunea de difuzare și programul de programe al canalului RTR. În acest caz, descrierea XML va lua forma:

Rusia Saint Petersburg Buna dimineata ȘTIRI Serialul de televiziune Gentle Poison Câmpul miracolelor (repetare) M. f. Sănătate ȘTIRI Bucurați-vă de baie! M. f. Împreună ȘTIRI Cea mai buna ora ȘTIRI Vreme GOOG noapte copii TIMP Vedere M. f. Vreme RTR Mail Buna dimineata tara! Propriul meu director Ceață violet CHEIA DE AUR Federaţie Agenți secreti Boyarsky Dvor Familia mea Full house ȘTIRI ASTEROID (SUA) CINA LA FRED'S (SUA) Vreme

Acum din această descriere XML puteți extrage programul TV al canalelor ORT și RTR pentru 25 decembrie în orașul Sankt Petersburg, Rusia.

Principiul independenței determinării structurii interne a unui document față de metodele de prezentare a acestor informații este de a separa datele de procesul de prelucrare și afișare a acestora. Astfel, datele obținute pot fi utilizate în conformitate cu nevoile clientului, adică selectați designul dorit, aplicați metodele de prelucrare necesare.

Puteți controla afișarea elementelor în fereastra programului client (de exemplu, într-o fereastră de browser) folosind instrucțiuni speciale - foi de stil XSL (eXstensible Stylesheet Language). Aceste tabele XSL vă permit să definiți aspectul unui element în funcție de locația acestuia în document, ceea ce înseamnă că două elemente cu același nume pot avea reguli de formatare diferite aplicate. În plus, limbajul de bază al XSL este XML, ceea ce înseamnă că tabelele XSL sunt mai versatile, iar DTD-urile sau schemele de date, discutate mai jos, pot fi folosite pentru a controla corectitudinea unor astfel de foi de stil.

Formatul XML, în comparație cu HTML, are un set mic de reguli simple de analizare care vă permite să analizați documente XML fără a apela la nicio descriere externă a elementelor XML utilizate. În general, documentele XML trebuie să îndeplinească următoarele cerințe:

  • Fiecare etichetă de deschidere care definește o parte a datelor din document trebuie să fie însoțită de o etichetă de închidere, adică, spre deosebire de HTML, etichetele de închidere nu pot fi omise.
  • Imbricarea etichetelor în XML este strict controlată, de aceea este necesară monitorizarea ordinii de deschidere și închidere a etichetelor.
  • XML este sensibil la majuscule.
  • Toate informațiile dintre etichetele de început și de sfârșit sunt tratate ca date în XML și, prin urmare, toate caracterele de formatare sunt luate în considerare (adică spațiile, liniile noi, tabelele nu sunt ignorate, ca în HTML).
  • XML are un set de caractere rezervate care trebuie specificate doar într-un mod specific într-un document XML. Astfel de simboluri și seturile de caractere care le definesc sunt:
    < <
    & &
    > >
    " "
    " "
  • Fiecare document XML trebuie să aibă un element rădăcină unic. În exemplul nostru, un astfel de element este elementul .
  • Toate valorile atributelor utilizate în definițiile etichetelor trebuie să fie cuprinse între ghilimele.

Dacă un document XML nu încalcă regulile de mai sus, atunci este apelat corect din punct de vedere formal.

Astăzi, există două moduri de a controla corectitudinea unui document XML: DTD (Document Type Definition) și schema de date (Semantic Schema). Dacă un document XML este creat și trimis folosind DTD-uri sau Scheme, atunci acesta este numit valabil.

Sistem este o modalitate de a crea reguli de construire a documentelor XML, adică de a specifica nume valide, tipuri, atribute și relații ale elementelor dintr-un document XML. Schemele sunt o modalitate alternativă de a crea reguli pentru construirea documentelor XML. În comparație cu descrierile DTD, schemele au instrumente mai puternice pentru definirea structurilor complexe de date, oferă o modalitate mai clară de a descrie gramatica unei limbi și pot fi ușor modernizate și extinse. Un avantaj incontestabil al schemelor este că vă permit să descrieți reguli pentru un document XML folosind XML însuși. Din acest punct de vedere, XML poate fi numit auto-descriere.

Deoarece elementele XML utilizate în același document pot proveni din scheme XML diferite, pot apărea conflicte de denumire a elementelor. Spațiile de nume rezolvă această problemă. Spațiile de nume vă permit să faceți distincția între elementele care au același nume, dar au semnificații diferite. Cu toate acestea, ele nu definesc modul în care sunt procesate astfel de elemente - aceasta este realizată de analizatorii XML discutați mai jos.

Pentru a înțelege mai clar scopul și posibilitățile utilizării schemelor XML, prezentăm o diagramă pentru exemplul unui program TV discutat mai sus.

Această schemă XML trebuie salvată în fișierul TV-ProgramSchema.XML. Elementul rădăcină al acestui fișier XML este elementul , ale căror atribute sunt numele schemei TV-ProgramSchema și o referință la spațiile de nume care definesc tipurile de date încorporate utilizate în această schemă: xmlns="urn:schemas-microsoft-com:xml-data" . Atributele minOccurs și maxOccurs ale elementelor acestei scheme stabilesc numărul minim și, respectiv, maxim posibil de astfel de elemente în schemă. De exemplu, linia înseamnă că numărul de elemente ale tipului de articol (adică se arată în sine TV) din circuit poate fi de la 0 la infinit.

Dacă utilizați schema de mai sus pentru a controla corectitudinea descrierii XML a unui program TV, atunci trebuie să indicați schema utilizată în antetul documentului XML. Apoi descrierea XML a programului TV al canalului ORT va arăta astfel:

Rusia Saint Petersburg Buna dimineata ȘTIRI Serialul de televiziune Gentle Poison Câmpul miracolelor (repetare) M. f. Sănătate ȘTIRI Bucurați-vă de baie! M. f. Împreună ȘTIRI Cea mai buna ora ȘTIRI Vreme GOOG noapte copii TIMP Vedere

Acum elementul rădăcină Această descriere XML are un atribut xmlns="x-schema:TV-ProgramSchema.xml", care este un link către schema XML utilizată.

Analizarea documentelor XML

Este oferită obținerea datelor dintr-un document XML, precum și verificarea corectitudinii documentelor XML analizoare(paratoare) documente XML. Dacă un document XML este corect din punct de vedere formal, atunci toți analizoarele concepute pentru a analiza documentele XML vor putea lucra cu el corect.

Deoarece utilizarea DTD în XML nu este obligatorie, orice document corect formal poate fi recunoscut și analizat de un program conceput pentru a analiza documente XML. De exemplu, orice descriere XML dată în acest document este formal corectă, astfel încât orice parser XML o va recunoaște corect.

Dacă intrarea în analizatorul XML este un document XML care utilizează o schemă XML, atunci acesta va fi analizat, verificat pentru corectitudine și conformitate cu schema. De exemplu, o descriere XML a unui program TV de pe canalul RTR folosind schema TV-ProgramSchema.xml va fi considerată formal corectă și validă.

Analizatoarele XML permit, dacă constructele de limbaj specificate în document sunt corecte din punct de vedere sintactic, să extragă corect elementele de document pe care le definesc și să le transfere în programul de aplicație care realizează acțiunile de afișare necesare. Adică, după analizarea unui document XML în cele mai multe cazuri, programul de aplicație este prevăzut cu un model obiect care afișează conținutul documentului XML rezultat și instrumentele necesare pentru a lucra cu acesta (parcurgând arborele elementelor).

Deoarece XML, spre deosebire de HTML, nu definește în niciun fel modul în care sunt afișate și utilizate elementele documentului descrise cu ajutorul său, parserului XML i se oferă posibilitatea de a alege designul dorit.

După cum am menționat, puteți utiliza tabele XSL pentru a defini aspectul elementelor XML. Principiul procesării documentelor XML folosind foi de stil este următorul: la analizarea unui document XSL, programul de analiză prelucrează instrucțiunile acestui limbaj și atribuie fiecărui element găsit în arborele XML un set de etichete care determină formatarea acestui element. Cu alte cuvinte, folosind tabelele XSL, specificați un șablon de formatare pentru elementele XML, iar acest șablon în sine poate avea structura fragmentului corespunzător al documentului XML. Instrucțiunile XSL definesc locația exactă a unui element XML în arbore, astfel încât este posibil să se aplice stiluri diferite acelorași elemente, în funcție de contextul în care sunt utilizate.

Unii analizatori bazează modul în care reprezintă structura documentului pe specificația Document Object Model (DOM), permițând utilizarea unui DOM ierarhic strict atunci când se creează documente XML.

Un exemplu de parser XML este parserul XML MSXML încorporat în Microsoft Internet Explorer versiunea 5.0. Vă permite să citiți date dintr-un fișier XML, să îl procesați, să generați un arbore de elemente, să afișați date folosind foi de stil XSL și, de asemenea, folosind DOM, să reprezentați toate elementele de date ca obiecte.

Folosind XML

Mulți experți văd XML ca pe o nouă tehnologie pentru integrarea componentelor software. Principalele avantaje ale utilizării XML sunt:

  • Integrarea datelor din diverse surse. XML poate fi folosit pentru a combina date structurate eterogene la nivelul mediu al sistemelor web cu trei niveluri, baze de date.
  • Prelucrarea locală a datelor. Datele primite în format XML pot fi analizate, procesate și afișate direct pe client fără apeluri suplimentare către server.
  • Vizualizarea și manipularea datelor din diverse perspective. Datele primite pot fi prelucrate și vizualizate de către client în diverse moduri în funcție de nevoile utilizatorului final.
  • Posibilitatea de actualizare parțială a datelor. Cu XML, puteți actualiza doar porțiunea de date structurate care s-a schimbat, mai degrabă decât întreaga structură.

Toate aceste avantaje fac din XML un instrument indispensabil pentru dezvoltarea de instrumente flexibile de recuperare a bazelor de date, aplicații web puternice cu trei niveluri și aplicații activate pentru tranzacții. Cu alte cuvinte, folosind XML, puteți forma interogări împotriva bazelor de date cu diferite structuri, ceea ce vă permite să căutați informații în numeroase baze de date care sunt incompatibile între ele. Utilizarea XML la nivelul mediu al aplicațiilor web cu trei niveluri permite schimbul eficient de date între clienți și serverele sistemelor de comerț electronic.

În plus, XML poate fi folosit ca mijloc de a descrie gramatica altor limbi și de a controla corectitudinea documentelor.

Instrumentele de prelucrare a datelor primite în format XML pot fi dezvoltate în Visual Basic, Java sau C++.

Lucinda Dykes, Ed Tittel

XML este un limbaj de marcare care creează pagini web. Înainte de a începe să utilizați XML, aflați diferența dintre un document valid și un document bine format, cum să creați elemente DTD (Document Type Definition) și declarații de bază ale schemei pentru crearea unui document XML. De asemenea, veți dori să înțelegeți caracterele rezervate utilizate în mod regulat, precum și ce browsere web acceptă cel mai bine XML și foile de stil.

Document XML valid vs. bine format

În XML, un document valid trebuie să urmeze regulile din DTD (definiția tipului de document) sau schema sa, care definește ce elemente pot apărea în document și cum se pot potrivi elementele unele în altele. Dacă un document este slab format, nu ajunge prea departe în lumea XML, așa că trebuie să te joci după niște reguli foarte simple atunci când creezi un document XML. A document bine format trebuie să aibă următoarele componente:

    Toate etichetele de început și de sfârșit sunt aceleași. Cu alte cuvinte, părțile de deschidere și de închidere trebuie să conțină întotdeauna același nume în același caz: ... sau ..., dar nu ....

    Elementele goale urmează o sintaxă XML specială, de exemplu .

    Toate valorile atributelor apar între ghilimele simple sau duble: id="valoare"> sau .

Reguli pentru crearea unei definiții tip document sau DTD, elemente

Practic, pregătiți și utilizați o definiție a tipului de document (DTD) pentru a adăuga structură și logică, facilitând asigurarea că toate funcționalitățile necesare sunt prezente - în ordinea corectă - în documentul dvs. XML. Puteți dezvolta multe reguli într-un DTD care controlează modul în care elementele pot fi utilizate într-un document XML.

SimbolSensExemplu
#PCDATAConține date de caractere analizate sau text
#PCDATA, nume-elementConține text și alt element; #PCDATA apare întotdeauna primul în regulăcopil) *>
, (virgulă)Trebuie folosit în această ordinecopil3)>
| (panou de conducte)Utilizați un singur element din opțiunile oferitecopil3)>
nume-element (în sine)Folosiți un singur nume
numele elementului? copil3?)>
nume-element +Utilizați una sau mai multe oricopil3)>
numele elementului *Utilizați o dată, de multe ori sau deloccopil3)>
() Indică grupuri; poate fi imbricatsau
copil4)>

Declarații de bază XML Schema

Un document XML Schema este construit dintr-o serie de declarații care oferă informații foarte detaliate și asigură că informațiile conținute în documentul XML sunt în forma corectă.

AnunţScopSintaxă
SistemSpecifică limba pe care o folosește schemaxmlns:xsd="//www.w3.org/2001/XMLSchema">
ElementDefinește un element
AtributDefinește un atributtip="tip">
Tip complexDefinește un element care conține alte elemente, conține atribute
sau conține conținut mixt (elemente și text)
Tip simpluCreează un tip de date restricționat pentru un element sau atribut
sens
Linker serialIndică faptul că atributele sau elementele dintr-un tip complex
trebuie enumerate în ordine
Compozitor de alegereIndică faptul că oricare dintre atributele sau elementele dintr-un tip complex poate fi utilizat
Tot compozitorIndică faptul că oricare sau toate atributele sau elementele dintr-un tip complex pot fi utilizate
adnotareConține documentație și/sau elemente appInfo care furnizează
informații suplimentare și comentarii asupra documentului de schemă
DocumentațieOferă informații care pot fi citite în adnotare
Informații despre aplicațieOferă informații care pot fi citite de computer în interior
abstract

Caractere rezervate comune în XML

Unele obiecte sunt rezervate pentru uz intern în XML și ar trebui înlocuite cu link-uri simbolice în conținutul dvs. Aceste cinci obiecte interne utilizate în mod obișnuit sunt deja definite ca parte a XML și sunt gata de utilizare:

CSS1?

XSLT 1.0?dadaNuNu
Internet Explorer 6.0 da da da da
Mozilla 1.7.5 da da da da
Mozilla Firefox 1.0 da da da da
Netscape Navigator 7 da da da da
Opera 7 da da da Nu