Ce caractere nu pot fi prezente în xml. Descrierea datelor folosind XML. Crearea unui element rădăcină

XML (extensibil Limbajul de marcare) este un dialect simplificat al SGML conceput pentru a descrie structurile de date ierarhice din World Wide Web. Este în curs de dezvoltare grup de lucru W3C din 1996; Recomandarea acceptată în prezent este cea de-a doua ediție a limbajului XML 1.0 (octombrie 2000), care stă la baza prezentării ulterioare.

XML este, fără îndoială, una dintre cele mai promițătoare tehnologii WWW, ceea ce explică interesul pe care îl primește atât din partea corporațiilor de dezvoltatori, cât și din partea publicului larg. Înainte de a trece la descrierea sa, pare oportun să discutăm motivele apariției sale și a dezvoltării rapide ulterioare. Pentru a face acest lucru, să încercăm să ne uităm la problemele WWW care trebuie rezolvate prin intermediul noii generații de tehnologii Web.

HTML nu exprimă sensul documentelor. HTML a fost creat pentru a descrie structurilor documente (titlu, titluri, liste, paragrafe etc.) și, într-o oarecare măsură, regulile acestora afişa(bold, italic etc.). Nu este în niciun caz destinat să descrie sens documentele scrise pe el și, în multe cazuri, datele sunt cele care constituie esența documentului, fie că este vorba de un raport bursier sau de o publicație științifică. Prin urmare, a fost nevoie de un limbaj pentru descrierea datelor și de date organizate în structuri ierarhice. HTML este greoi și inflexibil. In spate anul trecut HTML s-a transformat într-un amestec de etichete care adesea se dublează unele pe altele și nu aduc claritate textului documentului. Dacă adăugăm aici extensii HTML non-standard, de care se fac vinovați toți dezvoltatorii de browser, atunci crearea de documente HTML mai mult sau mai puțin complexe devine o sarcină serioasă. Pe de altă parte, un set fix de etichete o dată pentru totdeauna nu este adesea suficient de flexibil pentru a exprima conținutul de care avem nevoie. Conceptul de browser web este prea limitat. Odată cu apariția applet-urilor Java, a limbajelor de scripting și controale ActiveX Browserele web nu mai sunt doar „renderere” de documente HTML; astăzi arată mai mult ca programe care rulează aplicatii specifice. Totuși, însuși conceptul de browser impune utilizatorului restricții inutile; în multe cazuri avem nevoie Aplicații bazate pe web, adică programe care pot citi informații specializate de pe site-uri web și ni le oferă într-o formă familiară, de exemplu, sub formă de foi de calcul. Căutarea documentelor returnează prea multe link-uri. Cu toții îl folosim tot timpul motoare de căutareși să-i învinovățim în mod constant pentru inconvenientul muncii. Să spunem că am nevoie de toate textele cărților lui Serghei Dovlatov disponibile pe internet. Încercarea de a căuta după numele autorului va avea ca rezultat o listă cu toate legăturile cu acel nume, inclusiv amintirile lui Dovlatov, recenzii ale cărților sale etc. Ar fi mult mai convenabil să folosesc o etichetă specială. pentru a indica exact ce caut. Nu s-au găsit resurse aferente. Să presupunem acum că am găsit mai multe povestiri ale lui Dovlatov, care constituie clar o singură colecție. Este bine dacă includ un link către cuprinsul, dar de multe ori nu. Prin urmare, este necesară o modalitate de a indica faptul că un anumit grup de pagini constituie o singură resursă și ar trebui tratat ca atare. Acest lucru necesită un sistem standardizat și dezvoltat metadescriptori Pagini web.

XML este o încercare de a rezolva aceste probleme prin crearea unui limbaj de marcare simplu care descrie date structurate arbitrare. Mai precis, este un metalimbaj în care sunt scrise limbi specializate care descriu date ale unei anumite structuri. Se numesc astfel de limbi Dicționare XML. Spre deosebire de HTML, XML nu conține instrucțiuni despre cum ar trebui să fie afișate datele descrise în documentul XML. Modul în care sunt afișate datele pentru diferite dispozitive este specificat de foaia de stil XSL, care joacă aproximativ același rol pentru XML ca și CSS pentru HTML. O altă diferență fundamentală față de HTML este că XML poate conține orice etichetă pe care creatorii dicționarului XML le consideră necesare. Iată o listă cu doar câteva limbaje specializate bazate pe XML, care se află în prezent în diferite stadii de dezvoltare de către grupurile de lucru W3C:

  • Limbajul MathML al formulelor matematice;
  • Limbajul de integrare și sincronizare multimedia SMIL;
  • limbaj de grafică vectorială bidimensională SVG;
  • Limbajul meta descriere a resurselor RDF;
  • Reformularea XHTML a HTML în termeni XML.

Procesul de procesare a unui document XML este următorul. Textul acestuia este analizat printr-un program special numit procesor XML. Procesorul XML nu știe nimic despre semantica datelor din document; doar analizează textul documentului și verifică corectitudinea acestuia în ceea ce privește regulile XML. Dacă documentul formatat corect(bine formate), apoi rezultatele parsării textului sunt transferate de procesorul XML către programul de aplicație, care efectuează procesarea lor semnificativă; dacă documentul este formatat incorect, adică conține erori de sintaxă, atunci procesorul XML trebuie să le raporteze utilizatorului.

8.1.2. Aplicații ale XML

Se pune întrebarea: ce rost are folosirea „limbajului gol”, lipsit de propriul conținut? Cert este că, în ciuda aparentei sale simplități, XML are mecanisme destul de sofisticate de monitorizare a corectitudinii datelor, permite verificarea relațiilor ierarhice din cadrul unui document și, cel mai important, stabilește un standard unic pentru documentele care stochează date, indiferent de natura acestor date. . Să aruncăm o privire mai atentă asupra unor domenii de aplicare a limbajului XML.

Prelucrarea tradițională a datelor Capacitățile enumerate mai sus ne permit să considerăm XML ca un standard independent de platformă pentru stocarea și prezentarea informațiilor, care, în combinație cu alte tehnologii moderne (în special, tehnologiile Java), poate deveni baza pentru crearea oricăror aplicații independente de mașină, inclusiv schimb de date între server și client. În plus, limbajele de interogare bazate pe XML care sunt dezvoltate în mod activ astăzi pot concura serios cu limbajul SQL. Programare bazată pe documente Documentele XML pot servi drept containere pentru construirea de aplicații din interfețe și componente existente. În acest caz, documentul constă din referințe la componentele interfeței cu utilizatorul și modulele de procesare a datelor care sunt legate pe măsură ce pagina este afișată pe ecran. Arhivarea componentelor Programarea modernă se bazează pe utilizarea componentelor, care, în mod ideal, ar trebui să fie asamblate cu ușurință într-un singur întreg folosind o codare suplimentară simplă. Baza pentru aceasta este arhivarea componentelor, care, la rândul său, necesită o abordare uniformă a stocării și utilizării ulterioare a acestora. Există toate motivele să credem că, în viitorul apropiat, documentele XML vor oferi o alternativă la stocarea componentelor ca module binare, ceea ce este comun astăzi. Încorporarea datelor Odată ce am definit structura datelor XML, este fundamental ușor să scriem un generator de cod care prelucrează aceste date. Pe măsură ce se dezvoltă un astfel de software, toate procesarea de rutină a datelor (inclusiv verificarea corectitudinii, prezentarea în formatul necesar etc.) poate fi automatizată, permițând dezvoltatorilor să se concentreze asupra părților non-standard ale produsului creat.

8.1.3. Structura documentului XML

Un document XML constă din declarații, elemente, comentarii, caractere speciale și directive. Toate aceste componente ale documentului sunt descrise în acest capitol.

8.1.3.1. Elemente și atribute

XML asta limba etichetat marcarea documentelor. Cu alte cuvinte, orice document XML este o colecție elemente, iar începutul și sfârșitul fiecărui element sunt indicate prin semne speciale numite Etichete.

Un element este format din trei părți: o etichetă de început, conținut și o etichetă de final. Eticheta este textul cuprins între paranteze unghiulare "<" и ">„. Eticheta de sfârșit are același nume ca eticheta de început, dar începe cu o bară oblică „/”. Exemplu de element XML:

Serghei Dovlatov

Numele elementelor sunt sensibile la majuscule, de ex. , Și acestea sunt denumirile diferitelor elemente. Eticheta de închidere este întotdeauna necesară. Dacă eticheta este gol, adică nu are conținut și o etichetă de închidere, atunci are o formă specială:

<элемент/>

Orice element poate avea atribute, care conține informații suplimentare despre element. Atributele sunt întotdeauna incluse în eticheta de început a elementului și arată astfel:

Attribute_name="valoare_atribut"

Atributul trebuie să aibă o valoare, care trebuie să fie întotdeauna cuprinsă între ghilimele simple sau duble. Numele atributelor sunt, de asemenea, sensibile la majuscule. Un exemplu de element care are un atribut:

Serghei Dovlatov

Elementele trebuie fie să se succedă, fie să fie imbricate unul în celălalt:

Parte de vorbire Brodsky, Iosif Marșul Singuraticului Dovlatov, Serghei

Aici elementul books conține două elemente de carte imbricate, care au, la rândul lor, un atribut isbn și conțin trei elemente consecutive: titlu, autor și prezent, acesta din urmă fiind gol, deoarece în acest caz îi corespunde un steag logic.

Din descrierea de mai sus este clar că sintaxa XML seamănă cu sintaxa HTML (ceea ce este firesc, deoarece ambele sunt dialecte ale aceluiași limbaj SGML), dar cerințele pentru proiectarea documentelor XML corecte sunt mai mari. O altă diferență foarte importantă între XML și HTML este că conținutul elementelor, adică tot ceea ce este cuprins între etichetele de început și de sfârșit, este considerat date. Aceasta înseamnă că XML nu ignoră spațiul și rupturile de linie la fel ca HTML.

8.1.3.2. Prolog și directive

Orice document XML este format din prologȘi element rădăcină, De exemplu:

Marșul Singuraticului Dovlatov, Serghei

În acest exemplu, prologul este redus la un singur directivă (primul linia documentului), indicând versiunea XML. Este urmat de un element XML cu un nume unic, care conține toate celelalte elemente și se numește rădăcină. Directiva (instrucțiunea de procesare) este o expresie inclusă în etichete speciale "", care conține instrucțiuni pentru programul care procesează documentul XML.

Standard XMLîși rezervă o singură directivă , indicând versiunea limbajului XML care îi corespunde acest document(al doilea versiuni XML Nu încă). În realitate, această directivă este ceva mai bogată și de fapt vedere generala arata asa:

Aici atributul de codificare specifică codificarea caracterelor documentului. În mod implicit, documentele XML trebuie create în format UTF-8 sau UTF-16. Dacă este utilizată orice altă codificare a caracterelor, atunci numele acesteia în conformitate cu Tabelul A7.1 ar trebui să fie indicat în atribut dat, așa cum se arată în exemplu. Atributul independent indică dacă documentul conține. Valoarea da înseamnă că nu există astfel de secțiuni, valoarea nu înseamnă că există.

8.1.3.3. Comentarii

Documentele XML pot conține comentarii, care sunt ignorate de aplicația care procesează documentul. Comentariile urmează aceleași reguli ca și în HTML:

  • incepeti comentariul cu "",
  • Nu utilizați caractere „--” în comentarii.

Exemple de comentarii:

8.1.3.4. Nume și detalii

Toate nume elementele, atributele și secțiunile trebuie să înceapă cu o literă Unicode și să fie formate din litere, cifre, puncte (.), liniuțe de subliniere (_) și cratime (-). Singura restricție este că nu trebuie să înceapă cu o combinație de litere xml în niciun caz; astfel de nume sunt rezervate pentru viitoarele extensii de limbă. Este important ca standardul să permită utilizarea nu numai a literelor engleze în nume, ci și a oricăror altele, deși procesoarele XML existente sunt adesea limitate de sistemele de codificare pe care le au în vedere creatorii lor. De aceea scriem nume în engleză în exemplele noastre.

Date, adică conținutul elementelor și valorile atributelor, pot consta din orice caractere, cu excepția celor enumerate în secțiunea următoare.

8.1.3.5. Simboluri speciale

O serie de personaje în Limbajul XML rezervat și trebuie prezentat într-un mod special:

Dacă doriți, puteți utiliza codificarea caracterelor numerice în standardul Unicode. În acest caz, simbolul poate fi specificat de unul singur cod zecimal (cod; ) sau cod hexazecimal ( cod; ). De exemplu © reprezintă simbolul dreptului de autor © , A A– scrisoare rusă A. După cum vom vedea mai târziu, XML este mult mai bogat decât HTML în utilizarea unor astfel de construcții, deoarece permite înlocuirea oricăror expresii simbolice în textul documentelor.

8.1.3.6. Secţiuni CDATA

O altă modalitate de a include caractere invalide în conținutul elementelor XML este utilizarea așa-numitelor. secțiuni CDATA(abreviat de la Character DATA, adică date de caractere). Să presupunem că dorim să facem din conținutul elementului de aspect un fragment de text HTML, de exemplu:

Titlu

Această construcție este incorectă, deoarece eticheta HTML H1 va fi introdusă în acest caz, tratată ca o etichetă XML. Pentru ca întregul conținut al elementului de layout să fie tratat ca date, trebuie să îl închidem într-o secțiune CDATA:

După cum putem vedea din acest exemplu, secțiunea CDATA este închisă în delimitatori. Totul din această secțiune este considerat date de caractere; în special, secțiunile CDATA nu pot fi imbricate.

8.1.4. Secțiunile și declarațiile acestora

8.1.4.1. Secțiuni de document XML

Din punct de vedere fizic, un document XML poate consta din mai multe secțiuni(entitati). În acest caz, elementul rădăcină al documentului este, de asemenea, o secțiune, care este numită secțiunea documentului, deși nu este special conceput în niciun fel. Toate secțiunile au conținut; Toate, cu excepția secțiunii de documente și a DTD-ului extern, au un nume.

Din punctul de vedere al analizei documentelor, secțiunile sunt împărțite în analizate și neparsate. Secțiune neanalizată(entitate neanalizată) aceasta este o resursă al cărei conținut este perceput de procesorul XML ca date externe fără ele analizare(de exemplu, text care nu este un document XML). Secțiunile neparsate au întotdeauna notaţie, indicând formatul acestora. Secțiunile analizate(entitățile analizate) sunt concepute pentru înlocuirea textului: ori de câte ori procesorul XML întâlnește numele unei astfel de secțiuni într-un document, îl înlocuiește cu conținutul acelei secțiuni.

8.1.4.2. Secțiuni interne

Declarațiile de secțiuni sunt împărțite în interne și externe. Declarația Secției Interne arata asa:

Include conținutul obiectului (parametrul valoare) și este folosit pentru a înlocui această valoare în locul numelui secțiunii. Putem, de exemplu, să introducem atributul în exemplul cu cărți genși folosiți secțiuni interne pentru a seta genul:

]> Parte de vorbire Brodsky, Iosif Marșul Singuraticului Dovlatov, Serghei

Din acest exemplu este clar că link către secțiune (referință la entitate) arată exact la fel ca o referință de caracter special, adică are forma &name; . De fapt, caracterele speciale sunt exact aceleași cu referințele, dar secțiunile corespunzătoare sunt specificate implicit în declarația internă a limbajului XML. Astfel de substituții de text sunt utile pentru specificarea abrevierilor pentru a reduce dimensiunea unui document și pentru introducerea de notații pentru câmpurile de document modificate frecvent. Deci, de exemplu, putem pune data următoarei revizuiri a unei publicații într-o secțiune internă și apoi modificam doar valoarea acestei secțiuni.

8.1.4.3. Paravane exterioare

Există două opțiuni declarații de secțiune exterioară:

Prima opțiune este numită partiția sistemului , al doilea sectiunea publica. Ambele asociază numele secțiunii cu o resursă externă specificată de URI-ul acesteia, care trebuie să fie în formă codificată și să nu conțină. Este apelat URI-ul resursei externe ID-ul de sistem al partiției. Utilizarea unei resurse externe depinde de mai mulți factori:

  • Dacă declarația conține un parametru NDATA care specifică notația secțiunii, atunci secțiunea este neanalizată.
  • Dacă parametrul NDATA nu este specificat, atunci secțiunea este analizată și resursa corespunzătoare trebuie să fie un document XML. Aceasta înseamnă că în loc de un link către o secțiune, textul documentului va include textul resursei corespunzătoare.
  • Secțiunea publică poate conține o linie care specifică ID secție publică. Procesorul XML poate folosi acest identificator pentru a genera un URI alternativ aceasta sectiune. Dacă eșuează, atunci trebuie să folosească ID-ul de sistem pentru a încărca conținutul partiției.

Exemple de declarații de resurse externe:

Secțiunea exterioară care este analizată trebuie să înceapă cu o directivă, care poate să nu conțină un număr de versiune, dar trebuie să conțină o codificare a caracterelor. Această directivă nu face parte din textul inline.

8.1.5. Declarație tip document

Declarație tip document XML(declarația tip document) conține definirea tipului de document(definiția tipului de document, DTD) sau indică unul. DTD este o gramatică specială care descrie sintaxa unei anumite clase de documente; Regulile pentru crearea DTD-urilor sunt discutate în capitolul. 8.2. Aici descriem doar declarațiile care oferă acces la DTD. O declarație de tip de document, ca o declarație de secțiune, poate fi internă sau externă. Declarația internă arată astfel:

și extern aceleași două opțiuni ca și partițiile externe:

Astfel, diferența dintre o declarație de tip de document și o declarație de secțiune este doar aceea:

  • începe cu cuvântul cheie!DOCTYPE, nu!ENTITY;
  • poate avea un corp cuprins între paranteze drepte.

Numele unei astfel de declarații trebuie să se potrivească cu numele elementului rădăcină pe care îl descrie, iar corpul trebuie să respecte regulile de construcție a DTD și va fi descris în Capitol. 8.2. Deocamdată, rețineți că poate conține declarații de secțiune. A fost dat un exemplu de declarație internă. Exemple de declarații externe:

Rețineți că o declarație de tip de document extern poate conține și o referință la un DTD, care este apelat subset extern DTD și un corp care descrie completări la DTD extern (se numește subset intern DTD).

8.1.6. Exemplu de document XML

Pentru a pune toate conceptele descrise mai sus într-un singur întreg, iată un exemplu de document XML complet care conține o listă de prețuri de librărie.

]> Marșul celor condamnați Serghei Dovlatov 60.00 Parte de vorbire Iosif Brodsky 55.00 Antigona Sofocle 103.50

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. Principal onoruri HTMLși XML este că html doar descrie marcajul pentru afișarea datelor, iar xml este o structură de date abstractă care poate fi procesată și afișată după cum doriți și oriunde și, prin urmare, nu este nevoie să comparați aceste limbaje, ele au scopuri complet diferite.

După cum sa menționat mai sus, xml este foarte comun și limbă 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 limbi diferite. Î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 cândva sarcina de a scrie un anumit serviciu căruia, la cerere, ar trebui să returneze date formular xml, adică 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 imaginează-ți câte organizații diferite colaborează și dezvoltă conștiincios softwareși schimb de date ș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 Bazele 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 - De ce Notepad++ este bun 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 structura clara, 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 ceea ce ai nevoie cunostinte de baza xml este doar pentru a respecta 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ă dau 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 aruncăm din ce în ce 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!

Știați, Care este falsitatea conceptului de „vid fizic”?

Vacuum fizic - conceptul de fizică cuantică relativistă, prin care înseamnă cea mai mică stare de energie (de bază) a unui câmp cuantizat, care are moment zero, moment unghiular și alte numere cuantice. Teoreticienii relativiști numesc un vid fizic un spațiu complet lipsit de materie, plin cu un câmp nemăsurabil și, prin urmare, doar imaginar. O astfel de stare, potrivit relativiștilor, nu este un vid absolut, ci un spațiu plin cu niște particule fantomă (virtuale). Teoria relativistă a câmpului cuantic afirmă că, în conformitate cu principiul incertitudinii Heisenberg, virtuale, adică aparente (aparent pentru cine?), particulele se nasc și dispar în mod constant în vidul fizic: apar așa-numitele oscilații de câmp în punctul zero. Particulele virtuale ale vidului fizic și, prin urmare, ele însele, prin definiție, nu au un sistem de referință, deoarece, altfel, principiul relativității lui Einstein, pe care se bazează teoria relativității, ar fi încălcat (adică un sistem de măsurare absolut cu referință). la particulele vidului fizic ar deveni posibil, ceea ce, la rândul său, ar respinge clar principiul relativității pe care se bazează SRT). Astfel, vidul fizic și particulele sale nu sunt elemente ale lumii fizice, ci doar elemente ale teoriei relativității, care nu există în lumea reală, ci doar în formule relativiste, încălcând în același timp principiul cauzalității (apar și dispar fără cauză), principiul obiectivității (particulele virtuale pot fi considerate, în funcție de dorința teoreticianului, fie existente, fie inexistente), principiul măsurabilității faptice (neobservabile, nu au ISO propriu).

Când unul sau altul fizician folosește conceptul de „vid fizic”, fie nu înțelege absurditatea acestui termen, fie este necinstit, fiind un adept ascuns sau fățiș al ideologiei relativiste.

Cel mai simplu mod de a înțelege absurditatea acestui concept este să ne întoarcem la originile apariției sale. S-a născut de Paul Dirac în anii 1930, când a devenit clar că negarea eterului în forma sa pură, așa cum a făcut un mare matematician, dar un fizician mediocru, nu mai era posibilă. Sunt prea multe fapte care contrazic acest lucru.

Pentru a apăra relativismul, Paul Dirac a introdus conceptul afizic și ilogic al energiei negative și apoi existența unei „mări” a două energii care se compensează reciproc în vid - pozitiv și negativ, precum și o „mare” de particule care compensează fiecare. altele - electroni virtuali (adică aparenti) și pozitroni în vid.

XML este destinat a fi utilizat pe scară largă, caracterele nu sunt limitate la setul de caractere ASCII pe 7 biți. Caracterele permise în XML includ cele trei caractere de control ASCII, toate caracterele ASCII obișnuite și aproape toate celelalte caractere Unicode.

Nume.

În XML, toate numele trebuie să înceapă cu o literă, liniuță de subliniere (_) sau două puncte (:) și să continue numai cu caractere de nume valide, care pot conține doar litere incluse în secțiunea de caractere Unicode, cifre arabe, cratime, semne liniuțe, puncte și colon. Cu toate acestea, numele nu pot începe cu un șir xml în niciun caz. Numele care încep cu aceste caractere sunt rezervate pentru utilizare de către W3C. Trebuie reținut că, deoarece literele nu sunt limitate exclusiv la caractere ASCII, cuvintele din limba maternă pot fi folosite în nume.

Structura documentului XML.

Orice document XML constă din următoarele părți:

  • Prolog optional.
  • Corpul documentului.
  • Un epilog opțional care urmează arborele de elemente.

Să ne uităm la fiecare dintre părți mai detaliat.

Prologul documentului XML.

Documentul XML începe cu un prolog. Prologul conține câteva instrucțiuni pentru analizatorul XML și aplicații.

Prologul constă din mai multe părți:

  1. o Declarație XML opțională care este inclusă între caractere. Anunțul conține:
    • marca xml și numărul versiunii specificației XML;
    • o indicație a codificării caracterelor (codificarea) în care este scris documentul (în mod implicit codificare = "UTF-8");
    • parametrul de sine stătător care poate lua valorile „da” sau „nu” (în mod implicit standalone="yes" ). O valoare „da” indică faptul că documentul conține toate declarațiile de elemente necesare, iar „nu” indică faptul că sunt necesare DTD-uri externe.

    Toate acestea împreună ar putea arăta astfel:

    .

    Este important de reținut că într-o declarație XML este necesar doar atributul versiune, toate celelalte atribute pot fi omise și, prin urmare, iau valori implicite. De asemenea, trebuie să rețineți că toate aceste atribute trebuie specificate numai în ordinea dată mai sus.

  2. comentarii.
  3. procesarea comenzilor.
  4. simboluri spații goale.
  5. opțional declarație tip document, DTD (Declarație de tip de document) care este inclusă între caractereși poate cuprinde mai multe linii. Această parte declară etichetele utilizate în document sau oferă un link către fișierul în care sunt înregistrate astfel de declarații.

După declarație tip document pot urma, de asemenea, comentarii, comenzi de procesare și spații albe.

Deoarece toate aceste părți sunt opționale, prologul poate fi omis.

Corpul documentului XML.

Corpul documentului este format din unul sau mai multe elemente. Într-un document XML formatat corespunzător, elementele formează un arbore ierarhic simplu, care conține în mod necesar element rădăcină( element rădăcină ) în care sunt imbricate toate celelalte elemente ale documentului. XML impune elementelor o constrângere extrem de importantă: acestea trebuie să fie imbricate corect. Acest lucru face destul de ușor să încorporați un document XML într-un altul fără a încălca structura documentului, în timp ce element rădăcină a unui document imbricat va deveni pur și simplu unul dintre elementele documentului în care este imbricat. În acest sens, ne confruntăm cu o altă limitare, și anume aceea că denumirile elementelor trebuie să fie unice în cadrul documentului, întrucât în ​​documentul inclus aceleași nume ca și în documentul anexat pot avea o cu totul altă semnificație. Pentru a rezolva problema coincidenței numelor, a fost introdus conceptul de spațiu de nume.

Numele elementului rădăcină este considerat numele întregului document și este indicat în a doua parte a prologului după cuvântul Doctype. Dacă definiția DTD este în interiorul unui document XML, atunci este plasată între paranteze drepte după numele elementului rădăcină:

Dar, de obicei, DTD-ul este definit pentru mai multe documente XML simultan. În acest caz, este convenabil să îl scrieți separat de document și apoi în loc de paranteze drepte se scrie unul dintre cuvintele System sau Public urmat de adresa sub forma unui URI (Uniform Resource Identifier) ​​al fișierului cu definiția DTD. Pentru toate scopurile practice, un URI este considerat echivalent cu o adresă URL, deși în principiu poate fi orice nume unic. Definiția DTD, de exemplu, ar putea arăta astfel:

Spații de nume XML

Deoarece diferite documente XML pot conține aceleași nume de etichete și atributele acestora, care au semnificații complet diferite, este necesar să le putem distinge cumva. Pentru a face acest lucru, numele etichetelor și atributelor primesc un prefix scurt, care este separat de nume prin două puncte. Prefixul numelui este asociat cu un identificator care definește spatiu de nume(spațiul de nume). Toate numele etichetelor și atributelor ale căror prefixe sunt asociate cu același identificator formează unul singur spatiu de nume, în care numele trebuie să fie unice. Prefixul și identificatorul spațiului de nume sunt definite de atributul xmlns după cum urmează:

În viitor, numele etichetelor și atributelor pe care dorim să le atribuim spațiului de nume „http://URI_namespace” sunt prefixate cu ns, de exemplu:

Novosibirsk.

Atributul xmlns poate apărea pe orice element XML, nu doar pe elementul rădăcină. Prefixul pe care îl definește poate fi folosit în elementul în care este scris atributul xmlns și în toate elementele imbricate în el. Mai mult, mai multe spații de nume pot fi definite într-un singur element. În elemente imbricate spatiu de nume poate fi suprascris prin asocierea prefixului cu un alt identificator. Apariția unui nume de etichetă fără prefix într-un document care utilizează spatiu de nume, înseamnă că numele aparține spațiului de nume implicit. În orice caz, prefixele care încep cu caractere xml sunt rezervate limbajului XML însuși.

Numele împreună cu prefixul se numește nume extins sau calificat. Partea numelui scrisă după două puncte se numește partea locală a numelui.



Acest articol va detalia sintaxa de bază a limbajului de markup XML, acum popular. Aspectele esențiale ale documentului XML subiacent vor fi, de asemenea, menționate aici.

Acest articol deschide o serie de articole dedicate elementelor de bază ale scrierii documentelor XML, principiilor de proiectare a acestor documente și modalităților de afișare a documentelor XML într-un browser.

Limbajul de marcare XML descrie și, de asemenea, structurează conținutul unui fișier XML. Baza unui limbaj de marcare este o etichetă care delimitează secțiuni de conținut. Acest mod de a descrie un document este foarte asemănător cu marcajul HTML, dar există diferențe mari între aceste limbaje.

Iată un mic exemplu scris atât în ​​HTML, cât și în XML.

Să avem un tabel mic cu ceva text într-una dintre celulele sale.

HTML

XML

< Chenarul tabelului = 0 >

< tr >

< td >

< Alinierea H1 = „centru” > Acest text se află în interiorul HTML h1 >

< dimensiunea orei = 1 >

td >

tr >

masa >

< chenar tabel =” 0 ” >

< tr >

< td >

< h1 align = „centru” > Acest text se află în interiorul XML h1 >

< hr size=”1” />

td >

tr >

masa >

Acum, privind aceste exemple, puteți vedea diferențele dintre marcajul XML și HTML-ul cu care suntem obișnuiți. Principala diferență este că XML ține cont de majuscule și minuscule, incluzând atât numele etichetelor, cât și valorile atributelor. Acesta este

.

O altă diferență semnificativă între XML și HTML este faptul că fiecare valoare de atribut trebuie inclusă între ghilimele. Fiecare element trebuie să aibă o etichetă de închidere (exemplu:


- în HTML această scriere este acceptabilă, în XML elementul de linie trebuie să aibă o etichetă de închidere:
).

Nume și simboluri

Caracterele din XML sunt numere definite în setul de caractere Unicode 2.1 de 16 biți+. Această metodă de codificare respectă standardul ISO/IEC 10646, descris pe site-ul web la: //www.iso.ch.

Nume

În XML, toate numele trebuie să înceapă cu o literă, liniuță de subliniere (_) sau două puncte (:) și să continue numai cu caractere de nume valide. Acestea din urmă includ toate simbolurile de mai sus, precum și numere, cratime (-) sau puncte (.). Nume nu potiîncepeți cu liniile „xml”, „XML”, „xML”, „xmL”, „XMl”, „Xml”, „XmL”.

Exemplu. Acest nume corecte: Carte, CARTE, numele meu: Catalog, Carte.

Acestea nu sunt nume corecte: -CARTE, 101 Dalmați, XMLForever, Lena+Petya=Iubire.

Structura documentului

Un document XML formatat corect este format din trei părți principale:

  • Opțional prolog
  • Corp document, format din unul sau mai multe elemente, sub forma unui arbore ierarhic care poate conține date de caracter.
  • Opțional epilog Cu Informații suplimentare, constând din comentarii, comenzi de procesare și spațiu gol care urmează arborelui elementelor.

Să ne uităm la un exemplu standard de document XML simplu.

Corp

Epilog

Să aruncăm o privire mai atentă asupra structurii prezentate mai sus.

Prolog

Fiecare document XML începe cu elementul următor: . Aici declarăm că documentul este un document XML cu codificare Windows-1251. Cu toate acestea, codificarea poate fi oricare, în funcție de codificarea textului.

Deci, prologul constă din următoarele atribute:

  • versiuneatributul necesar, care trebuie setat la 1.0 pentru a suporta versiunile viitoare;
  • codificare– un atribut opțional care indică codificarea documentului XML. Dacă atributul nu este specificat, atunci codarea implicită se presupune a fi UTF-8 sau UTF-16, în funcție de formatul liniei inițiale „
  • de sine stătătoare– un atribut opțional care ia valoarea „da” dacă documentul conține toate Declarațiile de tip document necesare sau „nu” dacă declarațiile sunt într-un fișier separat. Privind în perspectivă, voi spune că declarațiile de tip de document pot fi localizate atât în ​​documentul XML propriu-zis, cât și într-un fișier separat în același timp, completându-se reciproc.

Declarație tip document

O declarație de tip de document nu trebuie confundată cu o definiție de tip de document. Se poate spune că o declarație de tip de document conține un subset intern și/sau se referă la un subset extern al definiției tipului de document.

Toate documentele valabile trebuie să conțină astfel de declarații sau link-uri către echivalentul lor extern (un exemplu de astfel de link este dat mai jos).

.

Acest element „spune” că structura documentului XML prezentată este definită de declarația externă books.dtd, aflată la //yourserver.com/.

Corp

Corpul este format din elemente. Elementele sunt elementele de bază ale marcajului XML. Elementele pot conține subelemente, date de caractere, referințe de simbol, referințe de obiecte, comenzi PI (instrucțiuni de procesare), comentarii, secțiuni CDATA. Toate datele XML, cu excepția comentariilor, comenzilor de procesare și a spațiilor albe, trebuie să fie conținute în elemente.

Elementele sunt separate unul de celălalt folosind etichete, care constau în numele tipului de element închis într-o pereche de paranteze unghiulare. Fiecare element are o etichetă de deschidere și de închidere sau dacă este un element gol (de exemplu, ), un fel de hibrid al unei etichete de deschidere și de închidere, așa cum se arată în exemplu.

Toate elementele trebuie să fie imbricate unul în celălalt. Arata cam asa:

< a >

< b >

…………………………………

< b>

…………………………………

Astfel, obținem un fel de structură arborescentă ierarhică cu un singur nod rădăcină, numit rădăcină a documentului. Nu poate exista decât o singură rădăcină într-un document. Acest principiu al întocmirii unui document poate fi comparat cu registrul de sistem Windows, adică. cu structura ca bază ierarhică date.

Pentru comparație, iată două exemple despre cum să nu compun documente XML.

< a >

< b >

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

< a >

……………………………………………

< b >

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

Totul este evident aici. În primul exemplu, vedem absența imbricației etichetelor, iar în al doilea, există două rădăcini în document.

Atribute

De multe ori este necesar să se asocieze unele informații cu un element, mai degrabă decât să le includă pur și simplu în conținutul elementului. Pentru asta există atribute. Un atribut este o pereche nume-valoare, scrisă în unul dintre cele două formate:

attribute_name="valoare_atribut"

attribute_name=’attribute_value’

Atributele urmează aceleași reguli ca și constantele șir, de exemplu. valorile atributelor trebuie să fie cuprinse între ghilimele duble sau simple și pot conține referințe la obiecte, referințe la caractere și/sau informații text

Exemplu: . În acest caz, avem un element „Carte” cu un atribut „categorie” a cărui valoare este cuvântul „Fantezie”.

atributul xml:space servește pentru a instrui aplicația să păstreze spațiile goale. Acest atribut poate fi comparat cu o etichetă

În HTML, folosit pentru a păstra formatarea documentului.

atributul xml:lang introdus pentru a indica aplicației existența unui text cu o codificare specifică, unde este necesar să se țină cont de ordinea de sortare a caracterelor, metodele de separare a cuvintelor în timpul indexării full-text etc. Specificând acest atribut, informăm aplicația ce limbă folosește elementul cu acest atribut. Valoarea atributului xml:lang este un cod special din două litere care indică limba corespunzătoare: fr pentru franceză, ja pentru japoneză. De asemenea, codul din două litere poate fi însoțit de subcoduri: en-US - engleză americană, az-cyrillic - chirilic azer.

Epilog

Această parte a documentului XML poate utiliza comentarii și comenzi de procesare și/sau spațiu gol. Cu toate acestea, nu este clar dacă comenzile de procesare ar trebui aplicate elementelor precedente sau elementelor ulterioare, dacă există.

Aceasta este principala problemă a epilogului.

Majoritatea (dacă nu toți) analizoarele XML determină sfârșitul unui document după eticheta de sfârșit. În consecință, întreaga parte care se află după eticheta finală va fi ignorată de analizor.

Potrivit lui Tim Bray (unul dintre autorii recomandării XML 1.0), epilogul este un defect de design și nu ar trebui folosit decât dacă este necesar. Un alt lucru de reținut este că epilogul cel mai probabil nu va fi procesat de alte aplicații XML.