You are on page 1of 408
qald39 Lee Anne Phillips Traducere de loan Bledea si Eugen Sipos HIN Teora © Copyright © 2001 Teora Toate drepturile asupra versiunii in limba romana aparfin Edituril Teora. Reproducerea integrala sau partialé a textului sau a ilustratilor din aceasté carte este posibila numai cu acordul prealabil scris al Edituril Teora. Authorized translation from the Enghlish language edition entitled Special Edition Using XML, published by QUE Corporation. Copyright © 2000 ts reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from the Publisher. Romanian language edition published by Editura Teora Publishing [transiator]. Copyright © 2000 Teora Calea Mosilor nr. 211, sector 2, Bucuresti Fax: 01/210.38.28 ‘e-mail teora@teora.kappa.ro Teora — Cartea prin posta CP 79-30, cod 72450 Bucuresti, Romania Tel: 01/252.14.31 e-mail: cpp@teora.kappa.ro Coperté: Gheorghe Popescu Tehnoredactare: Marius Stuparu Director Editorial: Diana Rotaru Pregedinte: Teodor RADUCANU, NOT 4845 CAL XML, TOTUL DESPRE ISBN: 973-20-0604-8 Printed in Romania | | | | Cuprins PARTEA I Fundamentele XML 1 Introducere in XML Sintaxa XML... a Definite ipurlor document XML... Extinderea definitiel tipului documencului prin modificiri locale Crearea unui DTD pornind de la zero Zone de sume XML Scheme XML, XPath 9 XLink si XPointer « PARTEA AII-A Manipularea XML 10 DOM (Document Object Model) ~ Modelul document obiect SAX (he Simpl API for XML) ~ API ipl pentru XML 42. CSS1, CS82, DSSSL, XSL . ope 13. Foi de stl in cascada si XML/XHTML 14 Usilizarea generafiei urmatoare de foi de stil extensibile XSL PARTEA A III-A Integrarea XML cu alte tehnologi 15 Obsinerea informatiilor despre utilizator 16 Securitate si confidengialitate : 17 Utilizarea facilititilor server-side —Java - 18 Utilizarea facilitiilor server-side ~ ActiveX 19 Utilizarea brokerilor de obiecte comune 20. Planificarea resurselor pentra intreprinderi i PARTEA AIV-A Alte aplicatii ale XML 21 RDF (the Resoures Description Framework ~ deserieri resurselor) 22. XHTML indetaliu ...... - 28 Utlizarea SMIL (The Synchronized Multimedia Integration Language ~ limbajul de integrare multimedia sincronizat) 24 Usinares MathML (The Math Markup Language ~limbajol cde marcare matematic) 25 Accesibilitare ... : 26 — Cooperarea in domeniv gi resurse ..... 27 Coneluaii- viitorul in Web Anexa A Referinge XML/XHTML XML AnexaB Instrumente pent eae vansformarea XMLXHTML « AnexaC Entiiticaracter .- Anna D Refeige CSS CSS? Glosar ; Index 183 12 30 61 93 an 129 143 169 206 226 257 283 304 = 332 347 379 405 423 448 460 1481 500 = 539 582 610 626 639 678 687 709 750 762 Despre autoare Lee Anne Phillips a fost interesati de prelucrarea datelor side retele ined din feric in care, la primal curs de programare, la UC Berkeley, profesorul a convins-o e% are talent pentru aga ceva gi ar trebui si renunte la planurrle sale pentru o carieri in psiho- Togie lingvisticd gi, in schimb, si ,aranjeze" big, De Ia UCB a trecut prin mai multe stadii ca programator de sisteme mainframe, proiectant firmware, administrator de refea, athitect software, manager de proiect $i programare sin final, consultant, pin ‘ind a simpit nevoia si imp&rtigeascé toate acestea cuiva. Locuieste in zona Golfului San Francisco ~ locul ei de nagtere ~ este licengiad in informatica si are un deosebit simg al umorului, Pucesi vizita pagina sa Web, la nttp://wva. eeanne.con/. INTRODUCERE In aceasta introducere Cui ii este adresaté cartea Seruccura cir Convengii utilizate in carte ‘Aceasti carte este dedicat ingelegerii noianului de standarde si propuneri concurente (si ‘uneori contradictori) legate de XML care plutese pe marea posibilititlor oferite de XML. Molte dintre faciitgile cele mai dorite de utilizaror (dumneavoastrd, stimate eft tor) sunt furnizate cu ajutorul a mai multde sase qstandarde" diferite, cu grade de suport ‘atlate, provenind numai de la mind de furnizori, Este suficient pentru a vi face si va smulgeyi pirul din cap. Dar conceptele XML sunt aproape la fel de simple ca si cind ayi lua un creion rose si agi face adnotiri la un text in timp ceil citti. Spre deosebire de HTML, care are un voca- polar foarte restrins, XML vi oferi o libertate aproape nelimitatd pentru a vi descrie documentele in modul dorit de dumneavoastri XML devine rapid limbajul comua al Web-ului, noi furnizori alieurndu-se zilnie grupislipline de succes a XML. Aceasti carte este proiectati penteu a vi ajuta si vi ali- turapi lor Multe corporagii importante, cu resurse semnificative, au investit deja in XML, printre ‘care sunt $i uniidintre greii din domeniu. Microsoft, IBM, SAP, Netscape, Oracle, Sun Microsyscems, guvernul SUA, armata SUA ~ lista seamind cu topul celor mai bogate 15000 de companii gi agentii guvernamentale majore pe care putini dintre not isi pot per mnite si le ignore, chiar daca nu avem de a face cu cle in mod direct. Santem intron moment critic in deavoltarea XML; standardele sunt propuse si pro- snulgate atat de repede inedt nimeni nu le mai poate urmiri, Exist uneori propuneri de Ia membrii Consortiului World Wide Web (W'3C), alternative venite de la persoane fir eto afliere, inifitive ale unor grupuri de utlizator sineercari de a le impica pe toate. ‘Aceastd carte vi ajutd s¥ ordonati toate acestea, vi'spune unde si ciutasi mai multe infor- sat care s1 vi ajute si tinetipasul cu noile dezvoltiri pe misura aparitici acestora si va ajutdla construirea unei scheme conceptuale pentru a va permite si incadrafinoile infor Imai Inu-o structur existent, pe misura ce vei inainta. Distracie plicuts. 8 Introducere functioneze este suficient de dificilt chiar dacd mu se iw in caleul sutele de sisteme par ticulare provenite de la diversi producitori individuali. Dow’ abordiri principale sunt deja prea multe. Asemenea instrumentelor metrice $i SAE, mesele noastre de lucru sunt suficient de aglomerate cu componentele necesare chiar fard sine mai batem capul dacit pentru o piulipd avem nevote de o cheiefixi de 19 mm sau de una de 3/4 inci. Prin promulgarea de standarde; W3C asgurexienja unos nivel de inceropeabili- tate de bazd intre aplicatile Web. Producitorii care se abat de la standarde riscd si pari ridicoli pin la urmé, orieat de mult ar incercas¥ igi impuni dectzile sau propeiilestan- darde asupra celorlaly Deci XML i standardele legate de acesta sunt toate compromisuriintre unele metodo- logit ideale, platonice, si incercarea curajoasi de a supravieyui pe Web. Multe grupuri fucra din cadrul W3C au avut uneori trasce diferite introducind incompat inconsecvente chiar in standarde, iar acestea au fost sau au eliminate la analiza fi Intre timp, noi trebuie si perseverdim sisi facem aplicariile Web si functioneze. Ele tre- buie si functioneze si asta vor face. Deci haideyi si ne apucim de lucra. Dupi ce vom Tua viteza, vom fi gata pentru o calitorie palpitanti. de Cui ii este adresata cartea Aceasti carte este destinat® proiectanilor Web profesionigt, programatorilon, spe | cialigtilor in baze de date si consinut si tuturor celor implicati in publicarea sau dist buirea de informarii prin orice tip de rerea. XML si standardele legate de acesta ofer’ ‘comunititii Web un mad valoros gi flexibil de organizare si partajare a datelor. lati citeva comunititi de utilizatori potentiali >» Furnizori si autori de consint > Utilizatori de baze de date > Programatori > Proiectanti Web > Oameni de stiinga gi studenti > Cercetitori si analisti_ » Burnizori de motoure de obutare gi indenare > Oricine doreste si inveye mai multe despre XML gi viitorul Web-ului Structura cartii Cartea este formati din sase sectiuni importante: = Parcea I, ,Fundamentele XML*, vi prezinti conceptee si facilitate necesare uilizis cficiente a XML si a standardelor legate de acesta Partea 2 Il-a, ,Manipularea XML", examineazi instrumentele utilizate pentru con- trolul structurit $i aspectului documentului XML in sine, modelul document obiect (Document Object Model), foile de stil (Style Sheets) si SAX (the Simple API for XML ~ API simplu pentru XML). ww Parteaa Illa, ,Integrarea XML cu alte tehnologii, studiaz’ aménuntitaplicatile eu baze de date gi server-side pentru care XML se potrivesce perfect. Exemple din lumea fn prezent, toi cei care sunt on-line depind de W3C. Crearea de aplicayii Web care si | Introducere 9 reali peezintd aspectele esengiale ale aplicaillor care functioneaza in mediul de afaceri de ti In plus, problemele importante ale confidenyalitigi si securitigi on-line sunt dis- cutate in contextul practicilor si problemelor actuale din domeniu. mParteaa IV-2, ,Alte aplicaii ale XML", completcaza golurile cu discusii despre modul de integeare in XML a documentelor Web existente, prin utilizarea XHTML, despre tile de a crea vocabvlare descriptive standard utilizind cadrul de deseriere a ayallor (Resource Description Framework) si limbaje multimedia si stinyfice care erimodul in care XML si standardele legate de acesta pot simplifica sarcinile existente abi [cd posible interactiuni noi la care niei nu afi visat. fn incheiere veri cerceta cum sate KML si fack Web-ul mai accesibil pentru oricine si veti vedea incotro este posibil repre dezvoltarea Web in viitorut apropiat. cle oferi.o referinya rapid, aflata la indemin’, despre fundamente demontate cele mai clementare piri, alcituind astfel un memorator rapid referitor la modul izare a unei anumite acyiuni sau la aspecrul unei anumite caracteristii. Conventii utilizate in carte “Aceasti carte utilizeazi convengii speciale pentru a v3 ajuta si beneficiagi la maximum de ea side XML. Conventii de text : Tipurilediferire de caractere din accasté carte identified termeni si alte obiecte speciale, ‘Aceste tiputi de caractere speciale includ urmétoarele: Tip Semnificatie Cursio "Termeni noi sau expresii definite pentru prima dari. Un termen scris cursiv si urmat de un numar de pagina indica pagina la care termenul respectiva fost definit pentru prima dat. Worospatiat ‘Codul, iyiile i adresele Web apar cu acest font, indicind faprul cd acestea sunt lucruri care fie vor fi introduse in cal- culator, fie vor fiafiate pe ceran. “Anumite intrie pe care se presupune c& utlizatorul webuIe siile introdued apar cu acest font. Wonespatiat alain 10 Introducere Elemente speciale | Partea | LLee/Anne.com din domeniu, pe care altfel s-ar putea s& le omit). Acestee V8 vor ajuta $8 Wooriowee!®scrietj in XML repede gi eficient. Toles Siblilaad clemante Grora vebule ob le scandal ate, altel este pos “38 trecei peste ele atunc cand v8 grb. In general, ntelereprezintd pent | gumneavoastra un mod de a obtine niste informal suplimentare despre un | sublet far8 8 VB oboe eee | Fundamentele XML Introducere in XML Sintaxa XML Definitiile tipurilor documentului XML Extinderea definifei ripului documentului prin modificéri locale Crearea unui DTD pornind de la zero Zone de nume XML Scheme XML ‘XPath XLink si XPointer 1u ,Studii de caz*. O wea XML. O sectit~ i dezvoltirii XML De asemenea, fiecare capitol se incheie cu o sectiune ,Depana sectiune »Depanare" v3 ajuti si depisiti problemele wzuale in util ne ,Studii de caz vi arati modul in care subiecrul capitolului se api zilnice sau furnizeazd informarii suplimencare interesante sau utile, Introducere in XML CAPITOLUL st capitol Cu XML totul devine posibil Limitarile HTML Redefinirea modalititilor de dezvoltare Web Relagia intre SGML, XML si XHTML XML in teorie gi practic’ Exemple practice in XML Dezvoltiri viitoare © deseriere concisa a originilor XML Cu XML totul devine posibil Comunitates Insert invests o cate enow de energie, bani efor tn de voltarea unui set vast de standarde legate in jurul XML (Extensible Markup Language ~ | limba) de mareare extensibil, generaia urmatoare de metode de transmitere a docu- mentelor pe Web, Numai in 1999 au fost publicate sau propuse mai multe standarde gi proiecte de standarde, aproape toate legate de XML, decit in toatiistoria Consorjiului World Wide Web (W3C), grupul responsabil cu standardele Web. In 2000, vor fi publi cate mai multe zeci de standarde legate de XML, dublind numarul de standarde W3C gi extinzind puterea de coeziune a XML in toate colfurile World Wide Web. XML si sandardele legate de gests vi permit si plocui su si evtndey sistema de stichetare brevetate, cum sunt Cold Fusion de la Allaire si Active Server Page (ASP) de le Mirosofsculimbae independent de patormnt caress posse porta s probloos spatiului din pagina dumneavoastra. in loc de (sau pe lingi) inserarea de etichete spe- ciale sau comentarii care si explice semnificayia unui anumit cimp, cimpul in sine poate deveni mai sugestiv ata pentru aplicayi, cit si pentru cititori, Deci,o list de prequri cu comentari, care in HTML poate arita astfel < > tes Feuet ==> | | Introducere in XML 13 ies Pret > <1) poate fi ficuta si arate astfl: cListaPreturiFructes -Fructoileres/Fruct> sPrets2sciPret ‘Mai sus avem tun mic exemplu al accesului mai ugor la date care poate fi realizat prin uti- lizarea XML. Nu numai ci informatia este mai putin dezordonatd si mai clar prezentat3, dar si campurile por fi identificate de citre un motor de civtare. Deci, merele de mancat pot li deosebite rapid de Marele Mar (orasul New York) sau de maul discordiei. In timp Ce in HTML trebuia si potrivim datele in patul procustian al unei defintii de listi HTML pentru ca aceasta si aibi aspectul dorit de noi, in XML putem lisa structura de date si Invorasci chiar din date, iar pentru formatarea paginii si utilizim standarde legate de XML, cum ar fi foi de sti in cascada (CSS ~ Cascading Style Sheets) sau limbajul exten- sibil al foilor de stil (XSL - Extensible Stylesheet Language). De asemenea, versiunea XML ne permite si pistrim informayii despre tipul datelor introduse in fiecare cmp. HTML ne permite si identificim doar sase tipuri de date: abrevieri, acronime, adrese, citate, enumerlri si variabile. $i chiar si acestea sunt cel mai freevent utilizate (in mod ‘resit) pentru a modifica formatirile decit pentru a identifica un camp logic. Limitarile HTML O dati cu dezvoltarea Web-ului din ultimii 10 ani, utilizatorii au descoperit din ce in ee mai multe moduri de a comunica intre ci, Temelia acestor schimburi reciproce a fost HTML (Fiypertext Markup Language) ~limbajul de marcare hipertext, HTMLa fost uti- lizat pentru a prezenta orice, de la lucriri stiingifice la cataloage on-line gi poezii. Totus, structura paginilor Web bazate pe HTML spune putin despre continutul efectv de infor- raf, Exemplul de defingie de lisek prozentat anterior ilustreaza faptul ef majorit ctichetelor oferite de HTML influenseaz8 numai macheta bruti si prezentarea textului pe pagini, si chiar si informayia de machetare est inflexbili. Etichetele sunt utlizate descori pentru a reprezenta informagii in moduei care forgeazd sau incalcd chiar ingelesul ctichetelor. Lista HTML prezentaci anterior nu contine, de exemplo, defini, ci a fost uti- lizati numai pentru a ingira inte-un anumit mod fructe gi preyuri Deci, au fost multe paliative fa testarea si impunerea unor genuri de ordine flexibilé asupra datelor continue in paging. Multe dintre aceste solutit ad hoc, cum ar fi ASP sat Cold Fusioa, au fost destul de reugite. Totusi, in cele mai multe cazuri ele au reprezen- tat abordiri brevetate care trebuie reinventate pentru fiecare domeniu nou de probleme sau cer utilizarea de software si hardware al unui anumit server, care s-ar putea si nu intr ia planurile dumneavoastel de achiziti and acum, probabil eX v-atilovit deja de limitirile HTML. Poate ci ati simi frastrarea de a nu fi capabil si descrieti exact ceea ce doriti si faceti utilizand structurile disponi- bile pentru dumneavoastrd ca proiectant Web sau autor. Poate ati fost forrat si 14 Fundamentele XML mecanisme inaccesibile, cum ar fi cadve sau tabele, pentru a constrnge pagina dum- neavoastti la o macheti tipografick nesigur’, sau poate ci api utilizat etichete urdte de preformatare
 sau de text scris la masing  pentru a alinia corect datele. XML.
‘ste un standard nou care v3 permite si extindefi puterea descriptiva a documentului
dumneavoastri aproape oricum $i si il modificafi pentru a se potrivi diverselor scopuri
XML face posibile multe lucruri care inainte erau doar dorinte vagi.

 

 

 

 

imbunatatirea preciziei cu XML

XML va permite si descrieyi exact documentul dumneavoastri intrun mod care poate
Fi yingeles” de un calculator. Cu toate ci oamenii nu au probleme cu studierea unei pagini
sideducerea semnificafci unei anumite machete, cum ar fi de exemplu o facturi, ealcu-
Incoarele nu sunt chiar ati de inteligente, Ele su nevoie de ajutor. Etichetele XML
descriptive, cum ar fi cvanzator> sau  au mult mai mult ingeles pentru caleulatoare
decit etichetele macheti anonime furnizste curent de HTML. XML furnizeazi un
tmecanism, definijia de ip pentru document (DTD ~ Document Type Definiior
“4 permite si pari informatie despre srucrara dar dumesvoused cu
dori

 

   

Validarea structurii documentului cu XML

XML vi permite si foryafi validarea structurii documentului dumneavoastra. Puteri
impune prezenga anumitor clemente in timp ce altele le faceti opfionale si si legal o
reat a sled Gu ake cuvine, das dongs includep Flemene ABC. pute obliga o
insula Element XYZ sl isfet St ek ABC et presen, stuns XY2 poate fi

Flexibilitatea machetelor cu XML

XML face posibila modificarea reali a prezentirii documentelor in concordangi cu
scopul pentru care sunt create. In loc si vi constringd si decideyi acd un set de date este
reprezentat mai bine ca o lsti sau ea un tabel, 1! puteti reprezenta in diferite moduri
pentru scopuri diferte. Pe o pagind tipirici, un tabel este folositor ia hiperlegituile
sunt inutile, dar intr-un browser audio pentru orbi, un set de liste navigabile prin hiper-
legituri poste fi mule mai aecesibil, Introducerea acestor date intr-o bazi de date poate
necesita normalizarex acesteia i alte transformari care ar fi inutile in alte situayi. O sin-
igurk sursi XML poate asigura toate aceste utiliza

 

 

Obtinerea independentei de platforma cu XML

XML este complet independent de platforma si este extrem de robust. Aceste ceringe nu
pot fi satisficute de nici un alt mecanism de transport de date sau de procesare dis-
iribuitd. XML este bazat pe text. Puteri studia datele neprelucrate sisi le ingelegeyi per~
fect. Deoarece XML deserie 0 simpli baza de date cu fisier plat, orice aplicafie care uti
lizeaza orice tip de accesare a bazelor de date poste utiliza XML ca numitor comun
pentru transportul, generarea si translatarea de la XML pentru transfer si, in acelagi timp,
poate utiliza intern formate brevetate sau normalizate. Aproape toate aplicatile cu baze
de date au deja capacitatea de a crea fisiere place delimitate prin virgule, echivalentul
Ingegitrir bazcor de date des extinders inglelor in ctchete SMI este aproape

 

 

Introducere fn XML 15

Descrierea documentelor orientate spre obiecte cu XML

Cu toate od succesul pe termen lung al tchnicilor orientate spre obiecte este ined in dez~
fatere, XML se dezvolti in moduri care, in cele din urm’, vor suporta ca optiune pro
gramarea orienta spre obiecte si metodele de proiectare. Cu toate cf standardul acto
ae putin imbunitifis {ayk de modell standard cu blocur secventiale, iifiative eum ar
SOX (Schema for Object-oriented XML) ~ scheme pentru XML orientat spre obieete,
tetaitele echivalente vor furniza acces deplin orientat spre obiecte pentru elementele
gen bazi de date si alte elemente ae structurilor XML.

Redefinirea modalitatilor de dezvoltare Web

HTML opereazi acum ca si un fax virtual complicat si sofistcat, care la inceput a fost
projectat cu intentia de a permite oamenilor de sing3 st impart inte ci a cerere copii
Ti luctitilor stinyifice. Etichetele machetelor HTML reflecta structurafizicd a unei astel
de locrir, iniial 0 schigd simpld avand asociate texte si imagini, Se eticheteaza anteturi,
paragrafe, liste tabele si ilustrajii. Macheta preseabilit este linia, cu vexeul eontinuind
Jn mod obignuit in josul pagint

Cele citeva etichete semnificative, <1TE>,  gi altele sunt destinate si scoaté in
tSidenté lucruri precum citate din articole sau cir, 0 preocupare de studi sau adress
Stnoruluis Celelatte elemente care alcituiesc o lucrare stingifica, cartelele 3x5, caleulele
jl elasficiile, ingelegerea adn a strvcturi tem, sunt aruncate la gun in drurmal spre
sea arsificiali eu hiperlegituri. Nu prea avem cu ce si lucrim, Toate celelalte,intrea~
gastructuri a Web-ulii actual, au fost ingrimadite peste acel design iniial. Este un trib-
Be dus primilor proiectanj faptul cl torul mai funcrioneaza gi chiar destul de bine
“Totusi, diferenta dintre text gi date este ci datele au structuri si context, Fiingele umane
pot recunoagte sau extrapola stuctura si contentul din indieitvizuale, deci pentru puss
Fireractiune umand, HTML este suficent. Dar caleulatoarele nu gindese in acest mod.
Side fapr, nu prea gindese.

   

   

  

Structura si granulozitatea datelor

XML este proicctat si permiti ea orice fmpirire semnificativa a unui document si fie
Jearifceed fird ambiguititi ca parte a unei structuri arborescente coerente care poate fi
dutzatdatit de om, eit side calculator. Dect o nsreagi masind poate fi descrisa caw lisct
‘ompleti de piese, tol incepind de la motor si pind la ultima piulits iind desficut in
Tisedde componente. Sau, 0 carte poate fi descrisi ca 0 colecyie de capitole, paragrafe,
note de subsol,ilustragi si toate celelalte elemente care 0 aleituiese. Este un concept
luton eu toste cf au poate confine ine structuri de date care nu sunt arborescente.
Multe abstractiaaei nu pot fi reprezentate ca arbori. Ingelesul conceptului ~onoare
poate fi elar pentra tn puscas marin, dar nu il puri desface in plryi componente ca pe
Srmazind, eu toate c& exist concepte corelate care fae cunoscut conceptul de onos
Deel sonoare” este fird indoialé legat de ,fidelitate" fnts-un anurit fel, dar relayia exace
1 dispare in atat de indrigita ceapl a proiectangilor de reyele pe care filozofit 0 pot
extrapola in cirti interminabile

De asemenea, Web-ul in sine nu este un arbore, ci o retea extrem de complexa de noduri
independents, legate intr-un graf orientat, firi un anumit punct de pornire sau 016 Fundamentele XML.

ridicing, (Figurile 2.1 si 2.2 din capitolul urmitor poate ci vor clarifica acest lucru.) Un
atbore are o Singur ridicind gi fieeare ramurl este separatd

Aplicatiile gen baz de date ale XML, cum ar fi descrierea pirtilor componente ale unei
masini, sunt de obicei mai directe decit descrierea obiectelor complexe, cum ar fio carte.
Poate pirea ciudat si vA ginditi ci o carte este mai complicati decit 0 masini, dar este
adevirat. Problema este una de excludere, adie asigutaceafaprului ci un obiect nu poate
‘i apart, in mod necorespunzitos, ea unuldintre proprii sli descendengi. Desi o masind
are de obicei un singur motor, iar un al doilea motor nu este de obicei o parte compo-
nenti a primului motor.

“Torugi,o carte poate consine referinfe la alte cig, poate si fie parte aunei seri sau poate
filo carte in mai multe volume. Aceste city pot sf se refere la randul lor la cartea origi
nali. Designul tipografic al unei cirti poate contribui la text in moduri subtile.
Structure individual eare alekeuiese o carte pot fi legate intee ele in forme estetice com-
plexe sau convengionale care sunt intercalateneliniar in agezarea tipografies, Notele de
subsol si notele de final sunt doar dou’ exemple,

Un text medical poate contine, de exemplu, pagini transparente suprapuse, cu scopul de
a putea fi vizuaizate ati individual, eit si simultan. O carte pentru copii poate avea piryt
destinate decupirii si manipulirii bi- sau tidimensionale de citre cititor.O carte poate
congine ilustrafi care si post i vizvalizace cu uguringS numai cu un aparat stereoscopic.
Un cuprins sau un index nu constituie, strict vorbind, parte a textului liniar al unei ciryi,
ci mai degeabi un instrument atagat pentru trimiteri utile la continutul citi. Un glosar
poate fi necesar pentru ingelegerea completi a textului dar rarcori este citit secvential,
Sau chiar niciodata, © bibliografie sau o refering’ bibliografici pot face referiri la
aproape orice tip de document sau obiect, inchusiv la filme, inregistrari audio, articole
din ziare sau reviste, ca sila cary, nici unul dintre acestea nefiind conyinut in text, dar
putind fi atasate cirti

Pe scurt, o carte in utilizarea efectiva s¢

 

    

 

  

 

3 mind mai mult cu un graf directionat decit cu
un arbore, cu toate ci ar fi posibildeserierea sa sccventala pentru a putea fitipérita. Nu
existd un punct de pornire definit atunci eind o eitiis puteyi trece de la 0 pagind la alta
nerespectand 0 anumiti ordine gi fri si aveti in mince un anumit scop. Este 0 parte a
tunel rejele formate din alte carti si necesiti o adaugire metafizici, cultura, Ie obiectul
Tieie pentru a putea fi fngeleast. Nu pute crea o bad de date care 38 eovespunndd roma-
ulus , dn cdutarea timpului pierdur* de Marcel Proust firk a pierde mult la conversic.

maging, pe de alti parte este in mare misuri suma pirtilor si subansamblelor sa
comportamentul ei este definit complet de legiturile si componentele incorporate

Conceptul de descendenti

Un descendent este un subansamblu sau 0 parte, daci sunteti mai obignuit eu obieetele
concrete decit cu exemplele abstracte. O masina este formati din gasiu, motor, ror,
transmisie si o multime de alte componente, toate conectate intr-o ordine strict multe
dintre ele iind la rindul lor construite din alte piese. Un motor are un bloc, pistoane si
multe ake dispozitive cum ar fi cerburatoare si distribuitoare staate la acestea. Orice
sectiune sau component a intregului ansamblu, eare poate fi desert, este un descen-
dent al obiectului fizic ,masina. Fiocare poate aves sau nu deseendengi. Un gurub, de
exemply, este o frunad terminala a arborelui maging.

e de alts parte, intr-o carte, un paragraf este posbil si nu ail

   

 

 

 

   

un paragraf ca descen-

Introducere in XML 17

 

dent direct, dar poate avea o noti de subsol, iar acea noti de subsol poate fi at de mare
fneit i aiba paragrafe in interioral ei, Dar pot fi permise notele de subsol in interiorul
paragrafelor din note de subsol? Probabil cd nu. Un paragraf dintr-o notd de subsol este
altceva decit un parageaf dintr-un text? XML are dificultiqi inevitable cu excluderea,
deoarece a fost eliminatd special din definigia limbajului.

XML trebuie si se bazeze pe o constructie atenti a DTD-ului pentru a evita plasarea
telementelor copil in locuri unde nu trebuie si apari, dar in anumite exzuri aceasta strate-
gie esueazi, Uneori trebuie si vi bazagi pe bunul simy al utilizatorului pentru a evita
problemele.

 

EMD |p cs vs ml neo prem LEE i i
[trebute $§ se sjurio$ la un echo intre puterea expresiy8 al limbajulu gi ©
FUsurinka Gu core poate ublizat si implementat, Excuderea fecurs\8 este 0.
| problems diicid. Prfectunea descriptiv8 este probabil mposbil in toate situs
tiles in parc dé vedere teretc Teotéma lui Goede), dea alegerea nul nivel <
{de imperfectune fap de atl este'o decize Ge prolacare. XML a fost prlectat
‘penta ff ast utl ct let, ambele find citer inginerest! solide, sb ca orice
‘Greate umeng, este un compromis inte doringa pentru caraceristicl abundente si
“realitates economics 5 4 ‘i

Relatia intre SGML, XML si XHTML

XML este un metalimbaj, un limbaj special care vi permite si descrieti complet o clasi
de alte limbaje, care la randul lor descriu documente, Este ca o insuli in marca SGML,
un alt metalimbaj, mai puternic. XML este definit ea 0 ,submulyime a SGML, ceea ce
inseamni ci pentru a crea XML nu se adaugi nici o componenti la SGML, dar sunt
climinate componente pentru a face limbajul mai usor de analizat, ineles gi utiliza.
XHTML este 0 productie 2 XML, aga cum HTML este 0 producyie a SGML.
Deoarece XML este proiectat si fie extensibil, imbajele create cu XML sunt gi ele extensi-
bile, Ca in SGML, descrierile limbajului create cu XML se oumese DTD-uri, definitile
de tip pentru document (Document Type Definitions). Vesi afla mult mai multe despre
cle mai tirziu, Dar pentru inceput, aruncay o privire asupra SGML, izvorul XML ial stan-
dardelor legate de acesta,

SGML

SGML (Standard Generalized Markup Language), limbajul de marcare generalizat stan-
dard, este un strimos mai puternic al XML si, de asemenea, un metalimbaj uelizat pentra
adescrie limbaje aplicatie. Cu toate ci are multe caracteristici utile, complexitatea limba-
jului il face extrem de greu de utiizat si invirat. Nu este pe deplin adevirat ¢& nu a fost
adiugat nimic la SGML pentru a crea XML. De exemplu, cind in XML a fost nevoie de
declarapile multiple ATTUiST definind acelasi ELEMENT, cle au fost adugate la SGML si
poi reprelucrate in XML, astfel incit puteti iae¥ numi XML o submulfime a SGML.
Proiectangii de limbaje sunt uneori ingenios
{in ciuda utiizarii in multe corporatii importante si organizayii guvernamentale, costul si
dificaltateadeinvifare si vtlizare a SGML, Hy Time, Text Encoding Inative (TEI) 3
a altor limbaje complexe de descriere a documentelor au ficut dificil pentru amatori si18 Fundamentele XML

conganizayle mai mich decesarea imensei puteri a acestor limbaje pentra formacsees
ee tinicturate: XML este o incercare dea face accesibil nespecialigtilor eft mai mult
‘din puterea SGML gia celorlale limba. Un alt obiecty este crear simpli de iempe=
gin Bent stbile ale unui limba} document struecurat, astfel incSt costul editoazelos, val-
iMatoarelor si al altor instrumente sé devind accesibil oamenilor obignuigi.

tie acd profectl damneavoastd XML este legat de un domeniu important
‘LeeAnnecom  interogarea firmelor si asoclatilor importante in legBtur& cy nevoile acell
Hiecrumne™ domeniy poate dezvalui DTD-uri SGML existent in aceasté situate, acestea
‘Yor putea fi utiizate ca 0 baz’ pentru OTD-urlle XML si vor permite proiec=
tulul dumneavoastrd s8 se adreseze unel audiente mal mari dec&t dacd 2
fi pomit de la zero. Merit SB cercetaj in detaliv segmental durmeavoastrs
Ge pietd.

TBM, unul dint cei mai mari edtori din lume, eu documenta de sute de milioane de
agin necesare pentru calulatoarele i celeste sisteme ae sale a wlizat SGML din
Emel sale zile ca depozit de date gi motor de machetare inaintesspicii,
Bouvernal federal al SUA utlizeazi SGML pentru procurarea de componente, manuals
Stenntizarea licitagilor pentru contractele guvernamentale, inventarire gi multe alse
sacra de baze de date sofisticate. Fortele armate, programul spatial si Imprimeria
Gavernului SUA utilizeaz’ SGML pemtru a asigura interoperabilitatea si accesiblitarea
datelor.
Deourece XML este 0 submulfime a SGML, multe aplicaii codate iniial in SGML au fost
poate in XML In cele mai multe exzuri modifiirile necesare sant mai mule su tal
afin mecanice, cu toate ef exist unel dificult, Din motive tehnice, mule dintre sees
Prtbleme vor rezolvate prin simpiicareadesrirlor i reprezentares lor mai exact: Ca
sroiectant XML, poate va veqi trezi lucind cy DTD-uri SGML, deci obyineres unor
DirD.url SOME inceligibile vi va ajura in modificarea gi utiizarea acestora cu succes
“neji minte cl SGML a fost prezent de o lungs perioada de timp, cel putin comparatiy
aintiata de via a programelor de calculator. Multe probleme au fost deja rezolvate 3
Se Gnealate imense baze de utilizare. Aptitudinea de comunicare cu utilizatorti si sis-
au nals exisiente poste insemna diferenta dintre succes si eyee pentru incepitoril care
sis a pia. Cu toate cf XML poate fi riizat pentra accesarea bazelor de date SGML,
necesith totusi ceva mune’ de proiectare DTD.

 

 

  

 

‘Dacd segmentul dumneavoasi de plats congine agent sau contractor!
‘guveramentall, exist probabil OTD-uri SGML care s8 se potrveasc exact
fndcar cu 0 parte cin problema lor. in acest caz exist probabil rupur din
‘Gomeniy core 2u transiatat deja acele DTD-ur la KHL. Merits s8 v8 fecet|

temele de cas8 inante de a VB apuca de dezvotarea unul OTD XML. Poste

este deja dsponibil un DTD corespunzbtor

‘Sugestie deta

Nes

Cu toate cd nu trebuie si stti SGML pentru a invita si utiliza XML, se intémpls destul
oidesin vga de 2i cu 21a unui expert XML si mogifice DTD-uri SGML mogtenite sau

ce stente in DTD uri XML. Vefi invija suficient despre acest proces pentru arl realiza |

cu destuli

 

Introducere in XML. 19

  

( atenijonare este binevenitd Sc) Mute DYD-uri SGML sont imense debarece 17T

"poblerle coral se asesead cunt mar, NU V8 pity otepia natal

"Gras pron DTD SGML de 900 de papi pert dervtiren cra oechips ©
Se 20 de exper alucrt cnc nig s8 convert la XML into GupS-ariaz&.

| Sat patea 3 duteze un pc mal mut Pate un 9 sa chiar al mul

  

  
  

 

  

XHTML

XHTML (Exenible Hyparest Matp Language) Hino de matears rere

cextensibil este un limbaj de marcare asemanator lui HTML, definit ca un DTD XML.

{Hii eae definica un DTD SOME deci redtiniraca oplcaie XML ete Rad

ull stro lume XML. In particular, aceasta inseamni ci limbajul XHTML est exten-

Sil, pesmitind utlizatorilor si gropurilor de vilizatori si extinda limbajul ia modus

eficience. Implicaile aceseiextensibiliiti cuprind:

i Documente cu 0 singuri editae care incapsuleaza baze de date, manuale pentru uti-
lizatori tiparit si functionalitigt Ge afigare Web tateun siogur fisier, aaones
1 Oportunitii imense pentru tranzacyi extinse de comert electronic si automatizarca

schinbul informa wii vocabularele XML standardizate,

Un mod simplu de reutilizare sas conversie a multora dintre milioanele de pagini Web
HTML exisente, mentinand compatibilitatea cu browseree existente, dar permitind
exact open eae last asco bi XML-

sibiiateavalidSeii automate a paginilor Web XML, eliminnd complet mule erori
obignuite de codare, dar menginnd compatibiltatea cu browserele mmogtenite

1 Furizare de mec simple are pet We ae denvale pot st

face nevoile diverselor comunitiyi pe care le cuprinde, fri sk necesite addugiri paren-
ae ier tae bees daha na As ascetic diodes

 

 

 

‘Asemenea definigilor HTML actuale, exist versiuni strite, ranzitori gi eu cadre ale
DTD-urilor XHTML, XHTML este proiectat si se adceseze unui anumsit ip de proble-
me: cum se creeazi pagini Web XML care pot fi vizualizate cu browsere HTML obis-
nite, fir a renunga la avantajelefurnizate de XML.

‘Totusi, XHTML este aumai unul dintrelimbajele XML proiectate si se adreseze anu-
mnitor tipuri de probleme, Pe parcursul acestei cirti veyi cerceta alte exemple, limbaje
proiectate penttu a simplifica producerea de documente multimedia, de exemplu, eau,
texte cu conginut matematic.

 

XML in teorie si practicaé

XML este atét de logic incit va vei intreba probabil de ce a durat asa de mult pind si
fie inventat. O parte a spunsului este c& nogiunile de baza exist dE ec vein dar
au fost aplicace doar recent fiserelor de date ale calculatoarelor O listd azati pe com-
ponente, de exemplu, este o cerint’ obignuita pentru asamblarea oricirui dispozitiv
rmecanic complex. Dat ideea extinderit acestul instrument de hartie la unul clectronie gi
generalizarea conceptului pentru a putea fi folosit la orice obiect alcituit din parti com-
ponente, inclusiv la obiecte non-fizice, a fost o scinteiere de perspicacitate reprezenta-
tiva pentru progresul uman de-a lungul secolelor.

‘Oamenii organizeaz’ aproape totul in ierarhii, Este singurul mod de a aborda sarciniFundamentele XML

devir complexe, de la achizisionarea de proviaii pentru Departamentul de Apirare
si pind la conattutes de navete spatiale. Orice steuctu’ irarhici poate fi descrisi in
SIM, dela lista de componente care alcituiesc un avion si pan la structura corporatiei
IBM. Dar XML are si unele limitiri. De exemplu, nu este pe deplin orientat spre obiecte,
deci utilizatorii cu seturi de probleme eare necesitd 0 abordare complet orientati spre
obiecte (O-O) vor avea unele greutiti cu aplicarea XML la sarcinile lor. Totusi, exist
{nigiative fn plina desfasurare pentea extinderea domeniului XML in moduri orientate
spre obiecte, deci este posibil ca aceasti limitare si fie rezolwatd in cele din uemi.
aun exemplu ci nu sunt orientate spre obiecte, documentele XML nu pot mosteni pe
deplin de la strimosii lor gi nu sunt pe deplin Tneapsulate, deoarece interiorul lor este
complet vizibil, Ele isi manifesta polimorfismul si alte comportamente orientate spre
bicete, deci au facut un pas in directiacoreeté din puncval de vedere al lumii O-O.,
Intre timp, exist multe lucruri care pot fi facute cu XML, Pentru inceput, si analizim
tunele mai simple. fncr-un fel, ai coda deja de mux vreme in XML. HTML este att de
propia de o aplicatie XML init mule pagini Web codate corect vor fi citite de un pro~
cesor XML fri probleme sau comentarii, Standardul XHTML 1.0 de la W3C refor-
inateazd DTD-urile HTML 4.9 existente, toate constructii SGML, in DTD-uri XML
corecte, Aceasta va permite ca multe dacumente HTML existente si fie vizualizate ca
documente XHTML. Deci este posibil ca paginile dumneavoastri existente si nu necesite
nicl un pie de muncd pentru alle transforma in XML, Muhte dintre acele pagini care nece-
13 pugind reformulare pot fi convertite in siguranga prin programe de conversie simple,
cum ar fi Tidy al lui Dave Raggett dela W3C.

MODEM Flichetele de maaveare au sant singurcle mecanisme care pot afecta contextul si
Feprezentarea textulu, Exist dverse mecanisme pointer utilzate pentru creates
‘Une! baze de date de caracteristi scare Indic& apotfiecare instant a sa din
‘documentul dumneavoastrs. Microsoft Word, ca si Tagged Image Format Files
(TIFF), utiizeaz’ aceastS tehnicS. Partee slabB a acestor scheme este aceed cd

[nu sunt robuste. DacS orice parte @ antetulul care confine pointerl este alteret,

‘tuna intregul document este distrus, Unul din motivele cresteri rapide si ab
uecestlul pe Web este comportamentul robust al matcajelor bazate pe text,

 

 

 

 

 

 

 

Exemple practice in XML

Deci, aplicarea cunostingelor dumneavoastri de HTML este un mod bun de a incepe
invigarea XML. Este un limbaj de etichete si atribute, la fel ea HTML, si utilizeaz’ multe
dintre convengiile acestuia. In HTML, majoritatea continutului este incadrat de perechi
de etichete, o eticheti de deschidere $i o eticheta de inchidere, ca mai jos:

 

WML: 
XML functioneazi in acelasi mod. XML incurajeazi verbalismul ceva mai mult decit

HITML, dar nu il impune, deci inr-o aplicarie XML real codul precedent poate aritaast-
fel:
va: Tstivernt>
care este identic, exceptie ficind faprul ci XHTML uiilizeszi doar etichete serise cu

Introducere in XML 2

litere mici. HTML nu este sensibil a tipullterelor, deci usilizarea conventilor XHTML
face acceptabile etichetele dumneavoastri in ambele medi

Poste ci acum este momentul si subliniem fapcul ef, spre deosebire de HTML, toate
mbajele XML sunt sensible latipul lterelor. Asa cum este definitd cticheta din punctal
de vedere al tipuluiliterelos, aga va trebui si o uslizayi, Deci, multe aplicayii XML uti-
Hizeazi numailivere mici i niei una nu accepts diferite scrieri cu majuscule ale cuvintelor
cheie sau ale atributelor lor.

Atcibutele sunt utilizate exact in acelagi mod, exceptie ficdnd fapcul cd de fiecare dati ele
trebuie incluse intre ghilimele. Deci, cu toate cX in HTML pute serie


Agi observat slash-ul din capitul drepr al etichetei ? Acesta subliniaz3 o alti
diferengi a XML. Chiar dacd HTML permite ca anumite etichete si fie utilizate fara
etichetele de inchidere, XML nu permite acest lueru, Fiecare etichett trebuie inchisi,
chiar gi atunci cind este 0 etichetl vidi, ca eticheta HTML <1u> sau eticheta XHTML
«ing>. Cea mai buni modalitate de a realiza aces lucru este de a plasa un slash la sfirgtul
exichetei, separat printr-un spatiu de restul atributelor si conrinurului. Acest Iucru nu
pare si intrerupi nici un browser HTML si fi spune lui XML ci eticheta este inchisi

exenple conpatibile WL/HTUL: 
Corect: imcpottalics Bold Text/o> Sugestie deta Ordinea eticheteior este important Ph LeeAnnecom ‘Context este un alt termen pentu domeniu de valabiltate, deci dac8 aseménati etchetele cu ferfurile intro stivl de farfuril dintr-un bufet cu autoservre, atunci nu gresi. Dac8 deschidet o etichetd in Interiorul domeniului de valbitate sau al con textull unel etichete , ea trebuie inchis8 in interorul aceluiasi dameniu de valabtate sau context. Nu putet s& 0 facet dup8 Tnchiderea etichetel . Ea trebuie s fie inchis8 inante. Distanga dintre etichete nu conteazs. Contextul etichetei se comporti ca o stiva de far- furii dintr-un restaurant cu autoservire. Etichetele trebuie si iasi din stiv in ordinea 22 Fundamentele XML inversi a intririi lor in stivi. Cu alte cuvinte, nu putetitraversa arborele structurli docu- ‘mentulvi sarind din creangi in ereangi asemenea unei maimuge. Trebuie s4 il parcurgeri asemenea unei furnici. ‘Sugestie de la Primul intrat, utimul iesit. Aceastd regulé simpl8 este usor de urmat, iat Busshomecern_ doch ssa ste iit runs ete foarte vai eae nivel de im Wiese mse care trebule sig inchid& toate etichetele nainte de iesire. Si toate aceste rmetefore sunt insinuate de structure arborescentd a documentelor XML. Vorbind de arbori, majoritateslucrurilor pe care le uilizat zilnie au paryi componente mai rule sau mai putin invariant, care pot fi organizate into ierarhie arborescent’. Un flax con de aspiring, de exemplu, are ca parti componente un recipient, un capac sau un dop de tun anumit tip, una sau mai multe etichete care deseriu conginutul si consinutul insusi. Dact ‘visea repartizat sarcina de a ambala flacoane cu aspirin’, veti observa cd pentru a evita risipirea tabletelor existi o ordine de efecruare aactiunilor. Prima dati se lipesc etichetele, apaise pun tabletcle $i apoi capacul. Ordinea capac, eticheti,tablete mu va funetiona deloe. Grdinea tablete, etichets, capac poate ci va functiona, dar in cazul risturniii flaconului riseati si risipti tabletele: Deci,o descriere XML poate fi cea din Listingul 1.1. CUistiigal VL Un acon de aspiring destecut pe componente 2 top> ‘type 3 childsate “ count 100 ceantent-tyne> aspirin XYZ brand generic HY directions and warning « Introducere in XML 23 Fiecare subelement este imbricat corect in interiorul elementului care il confine si existé exact un singur element ridicini,flaconul, Aceasta este ceringa principal pentru ca un fisier XML si fie considerat construit corect. Existi desigur multe moduri de descriere a unui flacon cu aspirin, iar fiecare deseriere este mai mult sau mai putin arbitrard. De exemplu, un anumit flacon poate fi introdus inr-o cutie si poate avea un text tipirt. Sau, pentru anumnite pie, abletele pot fi ambalateintr-o folie. Sau, flaconul poste aved m: multe etichete in limbi diferite. Posibilitifile sunt nesfargte, ca si lumea mérfurilor gi serviiilor. Oricum, flaconul ca intreg este format dintr-un recipient, etichete, capac si aspiring. Un lucru care poate fi injeles usor este ci tabletele de aspirina sunt conginute fn flacon. Mai puyin evident poate fi faptul cd flaconul in sine este aledtuit din compo- nente care sunt imbricate din punct de vedere logic in conceptul de .flacon" utilizat Cao concluzie, deoarece este un recipient, un flacon de aspiring este cel mai intuit gi mai accesibil exemplu de imbricare. Sugestie dela —Dacd flacoanele de aspirin nu sunt destul de sugestive, incercayisB va Blaeoncear gre a vice at obiet sau io idee care ae oiearhe, C2meni foc ows texens > tot timpul astfel de clasiicri, de la organigrame de firme (F8r8 ln punctate) pand la casiicrisuingifice ale plantelor sau animalelor. Orice lucru care contine o listS de componente este o ierarhie. Pépusile Matriosca sau un set de castroane de diferte dimensiuni sunt de aseme- nea exemple sugestive. ‘Taxonomia este stinga dificil a impiryiri lumii analogice in clasificiri digitale. Diverse ‘grupuri de firme s-au adunat pentru a hotiri cum si creeze nume gi structuri standard pentru produsele lor si pentru componente. fn acest mod, un fabricant de flacoane fi poate spune unui producitor de aspirina ce tipuri de flacoane sunt disponibile in cata log si edt costd acestea. Sau, un producitor de aspirin poate si comunice unei farmacii ce tipuri de ambalaje sunt disponibile, Instrumentele prietenoase cu utilizatorul vor tjurtereaea de dovumente dears in acest mod si vizble in Figura 1. FIGURA 1.4 imagine 2 Mutidoe Pro Pubisher edna documenta XML al presu- pusul nos facon do splint, avdnd afte scl de dale XML 24 Fundamentele XML Definitiile tipurilor documentului Un DTD (Document Type Definition ~ definitia tipurilor documentului) XML este la un anumit nivel doar 0 inregistrare a modului in care este utilizat XML int document, Nu este obligatoriu si aveyi un DTD pentru a face lucruri interesante. Dar, jen a avea aces [a intreaga putere a XML, un DTD este un pas necesar ‘Consideraii un DTD ca find un plan de prolec. El represintS cadrul organiza TLeeinnecom toric pent proiectele mai marl. Nu avetl nevoie de el pentru o utizare Nese to me yr, dar da dori $8 partajat informal cu oriine atcineva, sau dacs proiectul este mare, ar trebui s8 avefi unl, ‘Sogestie dela Fitd un DTD, au pores! utiliza cu upuringi seturi de caractere extinse sau codified. $i nu putetifolosi nici cele mai puternice instrumente de eveaye, care valideazd xi impun Structura adeevati pentru document, pe misuri ceil scriegi, Entitiile parametru, o purer- tied facilitate macro care ugurcaza viaja deevoltatorilor XML, sunt si ele inaccesibile. In Cele din urma, va trebui si furnizayi valori pentru fiecere atribus, deoarece pentru a seta valori prestablite este nevoie de un DTD. ‘Gu toate aceste motive pentra a avea un DTD, singural motiy pentru a nu avea until este dificultatea de +l crea, care, dupd cum se sie, este o sarcini ineleitd pentru sistemele complexe de documente, Dar nu trebuie si fie car are de dificil. XML a fost proiec= tarpenerua fi usor de utiliza ide igeles. Trebuie invigate doar citeva cuvinte cheie, iar structura limbajului este simpli, Nu este stiinga rachetelor. DTD-urile sunt discusare tai aminuntit in Capitolul 3, ,Definpile ipurilor documencului in XML*. fn aceasti carte vet inviga cum s8 modificati un DTD existent gi chiar eum si constru- igi unul pornind de la zero, sau cum s8 transformagi un DTD SGML simplu inte-unul XML. Dup! ce aveyi un DTD care functioneazd, putes utiliza instrumente de progra~ ate pentru a manipula automat datele din documentele dumneavoastrd in aproape rice Mod la care vi puteyi gandi. Vey studi aplicait care rescriu codul dumneavoastra XML in HTML obisnuit, pentra ca orice browser sil poati vedea in modul dorit de dumneavoastrs. Veti face experimente analizind structura propriului' dumneavoastr3 document pentru a demonstra cit de usor pot fi accesate datele dumneavoastri cu Java, er, JavaScripts aleelimbaje de programare, Ce veyi face eu aceasta aptitudine extraor~ dinar’ depinde numai de cumneavoastr Dezvoltari viitoare XML este un standard in migcare, desi proiectantii de la W3C au divizat cu ingelepeiune, in multe pitti componente, intregul care ar putea fi numit XML. Aceasta garantes2d c& in loc ai ge astepte si se cadi de acord asupra intregului, pArtle mai mici asupra chrora iversele gropuri de luera W3C au ajuns Ia un acord, pot fi emise ea Recomandari W3C. Chiar si in acest moment se fac comentarii finale la o diversitate de extensii ale Recomandirii XML fundamentale iar pentru altele au loc dezbateri energice. Poate ci, fo vreme, vor coexista mai multe solutii concurente, aga cum se fatimpla deseori in dis- Cordantul $i evasi-mnarhicul mediu al Web-ului, Furnizorii comerciali propun solupii pe tare le-au aplicat deja, sperind si fructifice faptul ci sunt primli pe piatd, cu toate c& fgrapuride uilizatori propun altel, peeare le vid mai mari, mai bune, mai rapide sau mai alrfel. Este un adevirat circ. Introducere in XML 25 XLink gi XPointer Prinere cele mai interesante deavoltiri exist’ dou propuneriinrudite, prezentate pentru prima dati ca limbajul de legare XML (XLL ~ XML Linking Language), dar desficure Eeum in componente mai mici, numite XLink si XPointer. XLink si XPointer rezolvi o problema importants a Web-ului, Hiperlegiturile HTML etuale sunt strict unidirectionale, avind o sclectvitate redusd. Obfinerea unei granu- fozitigi mai bune in legarea la un document necesita acces la scriere in codul siu sursi Pugin probabil ci acest lucru este satisficitor intr-un mediu dinamic si mai purin decit benign cum este Web-ul, unde accesul este apirat cu grijé impotriva rauficitorilor si a idiotilor. Ca exemplu, iatr-un document HTML obignuit, o hiperlegitur’ poate con- dduce numa la inceputul documentului sau numa Ia locagi eu nume din acel document, unde este posibil sk existe 0 eticheti ca aceasta Daci acea eticheti nu existi si dacd au puteti convinge autorul documentului si 0 plaseze unde dorisi dumneavoastri, atunci nu vd putegi lega la ea utilizind HTML. Dac bricheta exist’, vi putey lega ugor la ea astfel: ca hrof=*docuentURL#unNure >Links/a> Daci nu, trebuie si gi curcagi fird hiperlegitura 3 cineva care are acces la seriere in document sau si vi des- : See ee eis poms aie errs [Ei iinet scetnmemanesen conmuses XLink extinde aceasté apritudine elementari cu aptitudini complexe de transcludere, sau de includere in documente gazdi a unor copii de la distant a unor portiuni din diverse Socumente, de modificare « prezentirii cau a destinayiei logiturilor in funcyie de eriteri definite de utilizator gi de a face alte lucruri distractive cu date distribuite. Prin adiu- garea XPointer, puteyi accesa chiar modelul obiect al documentului pentru a permite ca face-un document la distangi si fie definite oriunde inte virtuale. {n viitorul apropiat, este posibil si se implementeze redarea dinamici a paginilor personalizate bazate numai pe eriterii de legare. Se ajunge la punctul in eare nu vor exista dou persoane care si vad aceeagi pagini Web fark si aleagd in mod deliberat acest lucru, XSL — foi de stil cu steroizi XSL (Extensible Stylesheet Language - limbajul extensibil al foilor de stil) este 0 alté inigiatvd pe cale si dea roade, Recomandirile CSS (Cascading Style Sheet ~foaie de si in cascada) si CSS2 actuale se marginesc la retuguri cosmetic ale aspectului unui docu- ‘ment existent, bazat pe etichete gi atribute HTML sau XML. Modificarea radicala a unui document se putea face doar utlizand Dynamic HTML, cu problemele de compatiili- tate si durerile de cap aferente. Dar XSL permite, prin utilizarea XPath, accesul de 26 Fundamentele XML seriere si rescriere la intregul document, o descriere standard a structurli documencului, inclusiv pari tanscluse aduse de XLink si bazate pe intregul model object al documen- tului, Vey stadia in detaliu XLink si XPointer in Capitolul 9, .XLink si XPointer*. Puteyi, de exempl, si codatio foaie de stil XSL pentru a genera automat un cuprins prin traversarea arborelui documentului, recnd cuprinsul generat ca un prefix al documen- luis! apot afisind documencu insusi Sau puteyi rearanja pagina in sine, stergind stirle Sportive fi introducind in locul lor rezumate despre noi descoperri astronomice, sau liminand stirile nagionale in favoarea celor de interes local. Dow dintre cele trei sub- Componente ale. XSL, XSL Transformations si XPath, au fost deja publicate a Recomandiri. Ultima piesi este XSL propriu-zis, limbajul de formatare. Atentie, DHTML! lar pentru majoritatea seripturilor, La revedere"! Aceste lucruri le vefi stu- dia mai indeaproape in Capitolul 12, ,CSS1, C852, DSSSL, XSL“. Una peste alta, 0 mulyime din luerurle pe care acum, in Jocul dumneavoastr le reali- zeazd portatuile Internet, vor fi posbile acasi. Furnizorii vor vinde sau vor oferi foi de stil care pot fi personalizate pentru ca dumneavoastra si puteti accesa informagile care ‘vi intereseaza sisi aruncagi la gunoi intervengile aleatoare nedorite. Semniturile XML vor permite ca paginile Web si fie semnate de citre autor inte-o mani- fed care nu va putea fi negati, permitind incorporarea unor misuri de securitate intr-o rejea ale cirei informatii par uneori cit se poate de suspecte O descriere concisa a originilor XML Maresjele a fost alituri de noi aproape de la apartia limbajului scris. Egiptenii, care 2 folosit unul dintee cele mai vechi sisteme de scriere din lume ~ hieroglifele -, marcau rnumele de persoane cu un cartus oval pentru a le distinge de cuvintele obisnuite Unllzau, de asemenea, culori pentru a evident frazele importante, un fel de aldine egiptene. Deoarece egiptenii puteau sere, in functie de contest, fic de la stangs Ia deeap- ta he de la dreapta la stanga, ei prezentau imaginile animalelor sau oamenilor cu fata spre Jnceputul line, ea un atribut sau marca} bidirectional anti, Ki considerau cd este mai politicos ca, pe masuri ce citi un rind, si fgi imtimpinat de personaje. Ar fi fost Fepolitieos dacd personaele ar fi stat cu spatele spre dumneavoastri, Figura 1.2 prezint& © portiune de pe Piatea Rosetta, una dintre cele mai importante pietre de hotar in fngelegerea comuniciri ga istoriei. ume eat Nume cada oun cartog ume incatat 6 0 crug wear riauna + | Tease cod gal apronimativ dn 196i, ‘exemple utitzerea catelor de marcare penny rume ga mareaeor Di rectal. ener apg EO antenaerns De | Introducere in XML 27 Conventii de marcare in ebraica veche Ebraica veche, in care a fost serisi Tora, nu contine aproape deloc marcaje, exceptie Ficind doar ,coroanele* decorative agezate peste gapre litere si doua forme de litere finale. Asemenea multor sisteme de scriere, in ebraica veche a aparut tirziu ideea dea pre pai inte cuvine, una dnt primel scheme de marcare, da acum Tors contine MEEND Gy cose Seas ges eo Ino EOS srepney eb este prota sf suport tate Ibe omnes Ded ebraea (Gas doar in exerp simply penta o Gast de probleme cu cae e pote are (fart. un proletan 9 : Un fragment din Tora (tadus din ebraict) ar putea arita astfel ACEASTA ESTE O PROPOZITIE SCRISA IN STILUL TORA ACEASTA ESTE PROPOZITIA URMATOARE ACEASTA ESTE CEA DE A TREIA PROPOZITIE SI ASA MAI DEPARTE Doar ci ebraica veche nu folosea vocale, preferindu-se inlocuirea lor cu urt proces de sgindire, deci propozigile de mai sus ar arita de fapt astfel: CST ST_PRPZT SCRS N STLL TRH CST ST PRPZT RMTR CST STC D TR PRPZT SSM DPRT Citirea acestui text este intrucitya 0 sarcini descurajanti, chiar daci dumneavoastri ccunoastefi cuvintele pe de rost. Textul este citit de obicei cu ajutorul unui indicator pentru a nu vi pierde in cadral paginii. Nu vitafi, marcajul intradus de o.persoani este un ajutor esential pentru ca 0 alt& per- soani si injeleagi gi ea. Este destul de obignuit si se faci versiuni speciale pentru cititori Tora, cu vocale marcate si indicayii de intonatie pentru citirea psalmului, pentra a-iajuta pe cei cu memoria slabi sau mai puyin talentay Conventii de marcare in latina veche Istoria propriei noastre serier latine ste similar, cu spagierea cuvintelor, cu punctuatie retoried, cu introducerealterelor mici pentra a face o distineye mai claréintre cuvintele Obisnuite si cele imporeamte wi ste inovatit aseustodtoate, destinate 5% fack sericren msi usor de injeles gi de utilizat. In timpul Renasteri a fost introdus caracterul punct gi vir- guld pentru a marca o anumita relaie subsilé inte ide, dar ne-am chinuit destul de mult timp pind acum folosind acest sistem de marcare vechi de sute sau chiar mii de ani. {i utilizam zilnic, sublinind cuvinte, folosind semne de punctuatie in fraze, seriind eu rmajuscula numele propti si primul caracter al fiecirei propozitt pentra a face mai clare pe hire idlle owe. Propoaes Totus, sistemul nu a fost suficient de bun pentru formatarea cirrilor tiparite. Tipogeafi au dezvoltat un sistem de marcare inteligene pentru a identifica gia aplica modificari de Formatare la parti ale unor ciryi sau ale altor tipSrituri. Marcajele tipografilor se numese chiar marcaje, iar numele provine de la faptul cd ele au fost adaugate manual, ,marcate* pe paginile dactilografiate sau pe manuscrise. Toate trucurile din domeniul ipografic Includ marcaje speciale cum sunt aldine, cursive, majuscule reduse, indentari $i diferite tipuri de spagi, schimbisi de fonturi,tratamente speciale pentru titluri,tiluri de capi- 28 Fundamentele XML tole, subsol, antet,casete, numere de pagini si multe altele. Figura 1.3 prezinté o pagini dactilgrafintd, mireté de un edison cv mentun ceferitoare Isl pograi pre FIGURA 1.3 Un exert de document Actograi, marcat cu rotafile extol acresate tomnoredsctorut, Abramam [@ Be seBarnere eouane cofhen ents eflpinantya new sation, concfgyed in itberty and dasiontea ae | pow we ve oncnned In a grant civit ws Teetiog whether shat aattoajor any nation 0 conceived and a0 dastefeeegcne one se on «Boron porsagfiai of that vars we ave come to dedicate » YORTGH ot that fet. Marcajele in istoria recent (dati cu incepurul erei calculatoarelor era nevoie de un model now care si permiti realizarea de harti si documentatiiformatate, Unul dintre primele, Runoff, a fost codat de Jerry Saltzer pentru sistemul de operare CTSS pe IBM 7094 la inceputul anilor '60 si portat apoi pe Multis, un alt sistem de operare timpuriu. Runoff a fost primul inseru~ ‘ment important portat pe nou inventatul sistem de operare UNIX de la Iaboratoarele Bell. Runoff si toyi descendenti sii utilizau etichote de mareare speciale pentru a con- trola aspectul formatat al textului, aga cum facem noi azi, Din multe puncte de vedere poate fi considerat strimosul lui HTML si al XML, cu toate ca aplicatile moderne au depisit cu mult scopul pentru care au fost proiectate aceste programe incipiente. Un canadian, William Tunnicliffe, a cerut in 1967 separarea in media electronic’ a infor ratilor de formatare de informayile de consinut. Aproape simultan, Stanley Rice, un tedactor din New York, a propus un sistem de etichete universale cu structura editori- ali. O idee excelenti se nistea si lua avant. Pe baza acestor idei a apirut conceptul de codare generali (Generic Coding), iar din acesta GML (Generalized Markup Language ~ limbajul de marcare generalizat) creat in 1969 de Charles Goldfarb, Edward Mosher si Raymond Lorie de la IBM pentru codi- ficarea si publicarea cu succes a milioane de pagini de documentayie IBM. Dupi o perioadi de dezvoltare, GML si Generic Coding s-au reunit din now in 1978 sub forma unui comitet pentru dezvoltarea unui nou limbaj, bazat pe GML dar extins ew idei noi, venite de la mulyi oameni. In 1980, SGML (Standard Generalized Markup Language ~limbajul de marcare generalizat standard) a fost publicat ca schigi. In 1983, noua schiti de standard a fost publicavi ca un standard in domeniu, GCA 101-1983, 31 adoptat de Fise si de Armata SUA, Introducere in XML 29 {ntre 1983 si 1987 s-a lucrat la un standard de publicare SGML pentru cirgi, publicaii periodice si articole cu componente optionale din matematics, lucrar stiinifice gi tabele complexe. El a fost adoptat ca standard ANSI, 239.59, in 1988 gi, mai trziu, intr-o forma revizuitd, ca standard international, ISO 12083. {i 1986, standardal international SGML, ISO 8879:1986, a fost publicat iar lucrurile au {nceput si se precipite. In 1988, Departamentul de Apirare al SUA a publicat standardul SGML CALS (Computer-aided Acquisition and Logistical Support ~ suportul logistic fide achizite asisat de calculator) ca MIL-M-28001 De atunci, multe proiecte mari bazate pe SGML au inflorit intro relativa obscuritate pentru cei din afara cercurilor stiintifice gi din domeniu ~ Text Encoding Initiative (TEI ~ initiativa de codare a textului), HyTime, ISO 10744, Hypermedia Time-based Seructuring Language, un standard foarte complex, cu suport multimedia sineronizat de toate tipuril, si multe altle “Toate aceste proiecte au fost imense, necesitind mult studiu pentru familiarizarea cu limbajul si pentru ca faciltiile si deving eficiente in marea lor diversitate de posibilitii. $i itd c& toate acestea ne-au condus la XML CAPITOLUL, Sintaxa XML in acest capitol Seructura XML Descrierea de vocabulare noi cu XML XML, doar un alt HTML? Starcul in XML_ Definirea unui document XML ca intreg Constrangerile construirii corecte Prologul: Declaratia XML Construirea prologului unui document XML: Declaragia tipului documentului (Document Type Declaration) Crearea corpului documentului Formarea structurilor logice in XML Studi de caz Structura XML XML este format de fapt din dout limbaje, de fapt metalimbaje, ambele des. XML SIcamone, Primal este un set de reguli pentru realizarea de documente XML SSseraite corect, in timp ce al doilea este un set de reguli pentru realizarea unel definitt a rpulut documentulad XML, 880 DTD (Document Type Definition), care permite 2 scrpetara documentului XML si se supuné unor constringeri si si fie validasa fayé de stale constrangeri, Distnetia dintre aceste doui limbaje este deseori neclari, deoarece a ocument XML complet presupune micar existenfa oprionali a unui DTD, indife- steed acesta este de fapt prezent sau nu, Pentru a complica si mai mult luerurile, un DTD poate fi compus din dowi piri, 0 submultime interna go submultime externa Acest capitol studiazi documentul XML firé a insista prea mult asupra DTD-vh eeevun document XML poate fi creat gi fied a face refriri la un DTD. Din motive de performanta, multe documente XML vor fi uiizate rd a le valida in raport cu DU Duh, chiar daci DTD-ul este disponibil. In cazul conexiunilor lente, citirea dints-un DTD nevituat pe sistemul dumneavoastr§ poate fi ingrozitor de inceati, iar datoritafap- tului cd un DID poate confine referinge la alte documente, rezolvarea raturor refe~ Sinyelor externe poate dura exagerat de mult chiar si in cazul conexiunilor de mare Sieh, Utilizator sunt obignuiti ca documentele HTML si fie incircate incremental, Geel pot cit inainte ea documenta si fie inedrcat in oralitate, dar analizoarele XML de Sintaxa XML 34. salidare nu permit afigarea documentului decit in cazul in care acesta este valid, deci documentul va apirea pe ecranul utilizatorului numai in momentul in care este incireat, intotaltate. Acest lucru poate fi sup: Totwsi, fiecare document este creat avénd in minte un DTD, indiferent dack DTD-ul este explicit sau nu. Chiar gi la crearea documentelor fara un DID, trebuie si aveti in tainte un fel de DTD empiric pe masurd ce creati documentul, deoarece un DTD descrie ostructuri de date. Detalii tehnice despre XML ‘Anexa A, ,Referinfe XML/XHTML", descrie (partial) sintaxa fundamental XML prin listarea notatiei Extended Backus-Naur Form (EBNF), forma Backus-Naur extinsi, utiliza chiar de standardul W3C XML 1.0 pentru a o defini, Regulile de productie EBNF selectate sunt completate cu descrieri concise ale constringerilor explicite de valuta de construire cores ce are W3C a modifi sa a exne anu i EBNF. Cu toate ci forma EBNF este nemaipomenit de compacta, permitind ca roduc legal intr-un limba} de programares& fe definite suceint cao serie de egal de transforméri gramaticale, pentru simplitate, W3C a lisat pe dinafaed destul de mult din descrierea EBNF a limbajului. Majoritatea pirjilor care lipsesc se refer’ la constr ger ila descriesi verbale ale criterilor aditionale pe care o anumita producti trebuie si Te respecte, dar unele se afl de fape in textul standardului EBNF este doar o metoda prescurtati de a spune lucruri despre limbaje de programare, iar dumneavoastti puteyi descrie la fel de ugor XML intr-un mod mai accesibil, uelizand ‘uvinte, cu toate cd EBNF este mai concis in comparatie cu echivalentul dia engleza obignuitd. Totus, unele Iveruri sunt dificil (sau obositor) de exprimat in EBNF, iar EBNF in sine este concis pana la limita obscurititi pentru majoritatea oamenilos, aga ci W3C a hotirit si combine in recomandarea sa cele doui tipuri de deseriere a limba lui. Unele reguli de producrie sunt descrise complet in notafia EBNF, iar textul insositor este doar 0 explicafie a ceea ce spune de fapt EBNF. Uncle reguli de productie sunt descrise complet numai printr-o combinatie a regulii EBNF si a comentariului aferent din text, deci regula EBNF serveste ca un schelet general la care trebuie adaugate textele cu comentarii pentru a caracteriza regula efectiva. In realitate, EBNE-ul Recomandarii XML 1.0 a W3C este si trebuie si fie suplimentat cu diverse constrdngeri rexwale, vonsinute ta corpul docurmentulai, pentru a | ingelege tu adevarat. Dar dupa ce af ingeles cum se potrivese toate acestea, regulile EBNF sunt utile ca fguici care i vi reaminteased modul de functionare al limbajului. WEED Gi toate i exit 0 Sntand EBNF pentru YL, acca descriere nu este complet. Ftd a lua In considerare numeroasele constréfiged tecute in Recomandare si “ParSclirea atents a textulu, infelegerea gresité si implementarea incorectd sunt | aproape inevitable. Acesta este motivul pentru care listingul EBNF vi sti la dispozitie in anex, nu pentru 2 fnvata cum si folositi XML, ei penteu a vi reaminti cum trebuie utilizat atunci cind ‘cutati o anumité construcfie i nu dorigi si risfoiti intreaga specificayie. Deoarece Recomandarea XML 1.0 este extrem de concisi, poate veti dori sa puneyi ua semn de carte la Recomandarea XML 1.0 adnotati de Tim Bray (Tim Bray's Annotated XML 1.0 Recommendation), la http://sine.anl.con/axl/testaxnl hte, deoarece explici mai clar 32 Fundamentele XML. uunele dintre concepriile care au intrat in specificayie, Reyineyi, de asemenea, ck trebuie si citigi cu atenge gi erata specificagiei. Au fost fcute multe modificiri importante si, cu toate ed aceste modificiri se regisesc in aceasta carte, este posibil cain viitor sf apara gi altel. Poate ci toate acestea suni complicat, dar de fapt nu este aga. Sunteti probabil obignuit cu respectarea unor reguli care se pot modifica in funcyie de context. De exemply, regula care spune cf trebuie si opriti Iz lumina rosie a semaforului arunci cénd conduceti 0 agin’ este o regulé simpli si universal valabil, deci atunci cind invagati si conducefi o reqineti rapid. Dar; in unele state, o modificare specialé a reguli luminii rosii va permite SS vira la dreapa dupa ce afi opety daci nu cusnva se specficdalteeva. Sr acess pare 0 reguli simpli, dar ar teebui si aibd atagacd o constrangere de validitate deoarece au in toate statele este permis acest lucru, O nota de subsol ar fi suficienta in majoritatea cazurilor. O alternativi arf crearea altor regulisimilare referitoare la lumina rosie, avind incorporate conditii speciale pentru tratarea excepyiilor. Astfl de lucruri sunt dificil de ficut in EBNF, aga ci W3C a rimas la o reguli simpla sia adiugat constrangeri, care sunt ‘mai mule sau mai putin ca niste note de subsol pentru regulile care au nevoie de ele. XML are o naturi dualés un metalimbaj care vi permite si descrie}i noi structuri de trebuie si fie imbricaté in inte- ‘ioral unui tablou si nu are, sau nu ar trebui sé aiba, sens in afsra acelui context Pentru majoritatea situatilos, acest lucru este suficient. Autorii XML nu mai trebuie si fie nigte guru ai tehnicii care s& poat extrapola instantaneu structura si scopul unci apli- ‘afi aruncind doar o privire asupra DTD-ului, la fel cum proprietarul unui zutomobil nu trebuie si fie expert in mecanica auto. XML este capabil si ofere autorilor suficient ajutor in inviarea modului de utilizare a unei anumite aplicaii, deoarece acestia sunt fncurajai si dea etichetelor nume sugestive, care si fie ugor de rerinut. Autorul unei apli- catii ar trebui si furnizeze un manual de ereare care si explice in termeni simpli model de utlizare a aplicatei, Teoria este ci orice viitor informatician va putea studia codul ‘dumneavoastri XML igi va da seama ce este si cum este structurat, fara afi nevoit si recurgi la documentatia de proiectare originali (probabil pierdutk in praful istorii), bazindu-se numai pe structuri si numele elementelor, Sugestie dela Cy toate cB orice procesor XML v8 poate spune despre codul dumneavoas- LeeAnnecom 113 dack este sau nu constrult corect, lar un marwal v& poate ajuta s8 con- oats strut un document valid, DTD-ul v8 permite s& veriicat fSr8 ambiguity ‘munce dumneavoastr3. Totusi in functe de tipu de instrument de creare utlizat, acesta poate fun pas difeit de procesul de ecitar. Codul dumneavoastri indeplineste acest ideal in functie de utilizarea pe care 0 dati umelor etichetelos, totusi intre anumite limite: WNumele de etichete care incep cu sirul ,xml", indiferent de tipul literelor, sunt rezer- vate; adicf, indiferent de situatie, nu vi este permis si le creayi. Nu le inventayi dupa voia dumneavoastri. Daci simtiti cX trebuie si aveti un astfel de nume de eticheta, propuneyi-l la W3C ea parte a unel ,Propuneri de membru” (presupunand, evident, ct Sunteyi un membru) 51 Yedep ce se fatample. @ Numele de erichete care contin caracterul doud puncte pot fiinterpretate ca identificatori avind asociati o zoni de nume, deci utilizarea celor dou puncte in numele etichetelor este puternie combituté si poate fi chiar interzisa. De ce si riscagi? Evitai-e. Un numede eticheté true si inceapa cu yliters*, caren acest context este orice liter sau ideogrami Unicode/ISO/TEC 10646, sau cu o liniupS de subliniere (sau cu dova puncte, pe cate stiti deja cl este bine si le evitai pentru a preveni confuafa cu zonele de nume). in continuare, numele unei etichete poate congine orice ,liters", ideograma sau cifed Unicode/ISO/IEC 10646, caractere de combinare, caractere de extindere, puncte, cra- time, spati sau dous puncte. De altfel, puyine limbi de pe glob au caractere cu care si nu poati incepe un nume corect in limba respectivi. Aceste caractere sunt excluse din lista de caractere daca se afliintr-o pozitie in care pot fi vazute ca ,primele dupi o cratimét sau um alt separator loge de cuvine, Dat in azul near cunts limbs, acest lcru 36 Fundamentele XML ’ z fu, aratt ul thalandex mai yamok (art a x f tore fr linia), de exempl, arath carer aa poare & folosit ca prima Herd unul covdnt deoarece el smal repetarea litereianterioare. ; ‘haw. aracterele de combinare sunt caractere speciale, folosite pentru a zecentua un SBE thule dine ele find normalizate lan singorearacter cu acent. Acesta ese Un 4vantaj pentru intrrile de la tastaturi deoarece multe limbi eare consi caractere accen- ‘uate vi permit si le introducer usilizind caractere accent speciale ,de ligime zero* care se pot ataga la orice alt caracter. . Garacercle de extndere sunt diverse seme de punctuate speciale cum ar fin Himbile europene) middle dot, triangular colon si half-triangular colon, Caracterele extinse suat Similare in alte scrier din fume; nu sunt exacte din punct de vedere alfabetic dar se potrivese pe undeva, Daci trebuie si utilizati unul intro alti limba decit engleza, veyi sti probabil ce este si deci va fi ugor de gisit. Dar daci nu vorbiti sau serie tn arabi, us- lizarea unui ,tatwell® arab in numele etichetei dumneavoastri este probabil un moft, cu toate ci este permis. Startul in XML 1-0 anumiti miisuri siti deja cum si codati in XML daci v-ati obignuit si scrieyi cod tata ficorect Poate ci va trebui doar si spay de unele deprinder ele Benin a deveni un autor XML priceput, aa cl aici vi vesi concentra asupra diferengelor dintre XML si HTML. Acest subiecr evidensiazi muljimea de deprinderi necesare pentru XML $i clarified numeroasele aseminiri dintre XML siHTML: XML este sensibil la tipul literelor deoarece majusculele nu reprezinti un concept ‘universal - Dack afi wrata litrele mari si mic ca fiind echivalente, ar trebui si faceyi la fel pentru mii de alte variante de litere in alte limbi, o operatic impoviritoare. Unele limbi nici micar nu au tipuri de litre. De exempl, in limba ebraicd mu exist litere ici, iar limba arabi face distncyieintre forma initial, de mijloc si finali a literelor. Pentru cei care prefer si scrie etichetele cu majuscule gi atributele cu litere mici, pentru a le evidentia, aceasta este o ste terbili. Dar editoarele de cod moderne nu Imai acordi o importangi aga de mare acestui lucra ca fnainte. De exemplu, precizarea anumitor culori pentru a marca eichete este un lucru obigmuit, deci utilizarea majus- Culelor et ftv un anssronsm storie asemenes mumerelor ds nik» COBOL este foarte precis cu privire la imbricarea corectd a etichetelor ~ Etichetele se pot nce turn contest diet de eal de Inspor, Deck ch dor cbold>citalice», trebuic si inchideri fraza evidenyiati eu , pentru a evita 0 eroare fatali. Deoarece XML poate refer si include documente XML i frag mente de documente oriunde pe Web unde dumneavoastra nu aveti control, fiecare ahora . —_ 1 XML nu este bine protejatimpotrivarecursiviti~ Cu cote c este posi sta biliti excluderi explicite la un anumit nivel, lao structuri complexi a unui document este dificil si mengineti acele excluderi la un nivel reds, fa a cand ulizay ichete care pot fi aplicate la orice nivel. Dec, interdicia HTML referitoare la inclu- Sess uel edehete cord «sin nterorl alte icheteancord extn XHTML, dar nu este impusi dincolo de includerea directs, document XML trebuie si se supund acelorasi reguli pentru a nu strica documentele | Sintaxa XML 37 = XML vA obligh s& inchideti fiecare etichet’, chiar i etichetele vide —Deoarece este posibil si creati un document XML care si nu utilizeze un DTD, un procesor XML nu are de unde si stie daci o etichetd este sau nu vidi. Deoarece toate documentele XML trebuie si fie construite corect, dumneavoastritrebuie si marcatietichetele cu o sintaxi speciali care spune unui procesor XML ci eticheta este vidi si inchisi. ‘Acest lucru il realizagi plasind un spatiu si un caracter slash la sfargtul eticheve, atfel: break [> Existd o sintaxi alternativa, care este la fel de bund pentru procesoarele XML ceale, dar blocheazd frecvent browserele Web atunci cind este utilizati cu XHTML; aceasta cere ca o etichetd vidi, cum ar fi , astfel
Din picate, este prea periculoasi pentru a fi utlizatd in sigurangi. Multe browsere actual sl majortates celor mogtenite mu recunose eticheta de inchidere non-HTML i fac lucruri ciudate cu ea, Navigator 47, de exemplu, poate zipici afigarea atunci {and se impiedct de o eiched som Comportamentul exace poste difer in fang de pozitia in cod gi de eticheta vids care se inchide. Pe scurt, aceasti sintaxd este pre dispusi la erori si ar trebui evit # XML necesitS incadrarea valorilor atributelor fie intre apostrofuri, fie intre ghili- mele ~ Acolo unde HTML este indulgent, mai ales in cea ce priveste numerele gi aproape orice sir irX spasii fn interior, XML trateazi torul ca gir de earactere gi lash aplicatia si fpi dea seama singuri de toate acestea. ‘= XML recunoaste mai multe limbi ~ Spre deosebire de HTML, seturile de caractere cextinse utilizate in multe limbi europene nu sunt pe deplin recunoscute in mod presta- bilit. Existd un mecanism simplu pentru includerea acestora, precum sia intregului set de caractere Unicode (cunoscut, de asemenea, si ca ISO/IEC 10646) care are peste un nilion de caractere, deci suportul pentru chinezi, arabi si multe alte limbi mai exo- tice ale lumi este un luccu ugor. In afard de diferengele mensionate fn aceasti list, XML este foarte aseminitor cu HTML din punctul de vedere al marc3ri etichetelor, al argumentiriiatributelor si al trecerli con- finutuluifntre perechi de exichete. Daci scrieyi HTML curat, atunci conversia HTML-ului ddumneavoastri la XHTML-ul bazat pe XML este atit de simpli incat este posibil si lagi tun calculator of fack acest lucra in locul dumueavoastra, Desigur, XML. au se limiteaz’ la limbaje care seamini eu HTML, deci structura documentului dumnesvoastri este limitatd ‘numai de structura arborescenti necesari si de propria dumneavoasted imaginatie. Sugestie dela LeeAnne-com Pentru sistemele Windows, sunt areu de depligit puterea gi funchonalitatea rogramului HTML-Kit, dela Cham.com (http: /wvw-cheni.con/), care \ttizeazd excetentul program Tidy al lui Dave Raggett pentru a curdta 5, ‘ional, pentru a convert codul dumneavoastré la XML cure. El insereazé toate acele etchete de incheiere piictstoare si sintaxa etichetel speciale de Inchelere EMPTY, aranjeazS etichetele care ne imbricd in mod corespun- itor 51 multe altele, Tidy este disponibil pentru Mac cu o portare @ ii Terry ‘Teague a http: / mm. geccities.con/Sisconvalley/1087/ tidy. html, jar pe Web existd multe alte variante pentru UNIX, Mai exist si o portare Java Pentru entuzlastii0-O (orientare spre obiecte) Pentru detail actualzate despre aceasta si despre alte versiuni, vzitai pagina Web a lui Dave Raggett de la W3C, a http: n.nd.org/People/Raggett /tidy 38 Fundamentele XML Folosind deprinderile pe care probabil c& le aveti azi, putesiincepe realizarea de docu- mente XML simple chiar dupa citeva ore de exersare. Limbajul a fost proiectat astfel Jnedt sf fie transparent la utilizare pentru a putea fi ingeles si utilizar cu suring Descrierile XML succinte sau complicate din majoritatea documentelor sunt greu de {nyeles in efortul de afi explicit fntr-un mod in care programatori si il poati translata con usuring’ in aplicail care sf functioneze. Mai este de invijat pentru obyineres unci adevarate perfectiuni, dar nu este chiar aga de dfic fnainte de a incepe dezmembrarea limbajulu, ar trebui si privii documentel XML e3 increg. Definirea unui document XML ca jntreg Un document XML este o colecyie de eatiiti care pot fi sau nu analizate, Datele care mu sunt fnjelese de un procesor XML, date binare sau date care au sens numai pentru alte fplicai,reprezintd dare neanalizate. Datcle ingeese de XML, fie casi earactere fie ca marcaje, sunt date analizat Un document XML trebuie si fie construit corect, In Recomandarea XML 1.0 a W3C, ‘ita aie cu exactitate,aceastisituaye este descrisi concis prin urmitoarele ceringe: Lust ea inteeg, corespunde produeici etichetate ea document. by Sutisface toate constringerile de construire corectd din aceastd specifieatie (Recoman- darea XML 1.0) am Ficcare entitate analizati,referiti direct sau indirect in cadrul documentului, este con- suruith corect. Prima consteangere spune ci pentru a fi construit corect, un document XML trebuie , sau nu are nevoie de aproape nici o eticheti de incheiere. Uncori, browserul poate detecta intreruperea, dar acest hucru nu este garantat. Aceasta inseamnd ci un document partial se poate deghiza fntr-unul complet, iar utilizatorul nu are de tunde sf stie acest lucru pind cind in text nu apare o eroare evidenta. XML previne aces~ te probleme, lucru care poste fi important in eazul in care un utilizator eeclami ulterior cio convengie de acordare a licen, de exemplu, nu a fost afisata in intregime. Insistind asupra unui arbore complet, un astfel de exemplu fiind prezentat in Figura 2.1, se eli- rina aceste probleme posi 40 Fundamentele XML Pe de alti parte, un graf care nu formeaza un arbore nu poate fi transformat intr-un docu- ment XML decit daci graful poate fi simplificat,eliminind toate caracteristcile care nu sunt reprezentative pentru arbori. In Figura 2.2, de exemplu, graful din stinga poate fi simplifiat prin eliminarea unci cai de la frunza de sus citre un nod. In acecasi figur’, grafului din partea dreapti trebuie si i se elimine o ridicini deoarece un document XML poate avea o singurd ridicin3. FIGURA 2.1 Frond Frunzi Frunzi Frunzé pceast fra repre on tore cst tore Da sctire represent co ed vee] toes aor pe reatza doe trent j vos | [rrmas | [moa Franz et [ce] ed not | Nod Ridin “Trebuie si figi atent gi la fapeul c& deseori arborii sunt reprezentati de sus in jos, cu ridicina in partea de sus si ramurile crescind in jos. Aceasta corespunde obignuingei rnoastre de a citi paginile de sus in jos, deci primul lucru pe care lintdlaim la acest arbore inversat este ridicina, aga cum ar face gi un analizor XML, iar parcurgerea in jos a paginii ne va duce tot mai adinc in ,frunzigul” arborelui Sintma xo 4 FIGURA 2.2 Frome Frunad yess hae rat cot Seoteae as ant Soon Benth =] atom hae wot} | _tet [Le ae wa va] [re] rama] [we] [roma | | Nod | Nod rat Constrangerile construirii corecte Pe lingi proprietitile de baz necesare intr-un document XML, prezentate in sectiunea anterioari, ,Definirea unui document XML ca intreg*, un document XML trebuie si fndeplineasci anumite criterii suplimentare, numite ‘consteingeri. Lista urmatoare descrie constrangerile de construire corect&: m Entitile parametru din submuljimea interna pot si apari numai acolo unde pot si apari marcaje, Ele nu por si apard in interiorul marcajelor. Aceasta este o regula complet arbitrara gia fost introdusi pentru a usura operatia de analizare a DTD-urilor interne (vei Capitolul 3). Numele din eticheta de incheiere a unui element trebuie si coincida cu numele din eticheta de pornire. Acesta este un lucra evident. Putini dintre noi se vor astepta si poati incheia 0 eticheti cu o ctichetd 1 O entitate analizata nv are voie si cousin 0 relevingd recussiv sinicl indirect. Cu toate ci este posibil ca autorilor de dicsionace si le plac si declare Exun steag este un drape iar un drape este un steag, XML nnu vi permite si faceti aga Referingele Ja entitigi parametru pot s4 apari numai in DTD. Cu alte cuvinte, nu pute{i include date de prelucrare in documentul final si si va agteptati ca acestea si Fosemne ceva, La fel, nu v& putesi astepta ca inserind o instructiune C, de exemple printt(*Hello, world" \n}5, in pagina dumneavoastri dactilografiats, aceasta si fie Folocuied cu o valoare si si se efectucze gi un retur de car, Pe de alti parte, cu toate ci tate o eroare de logick daca dumneavoastr vi asreptapi ca asta si se intimple, un astleL etext nu va strica nimic, la fel cum tipariea linet de cod C de mai sus in textul dum~ neavoastri nu va genera 0 eroare. Deoarece * este doar un caracter si nu trebuie si fle inelus in document prin seevente escape, e greu de imaginat cum poate fi interceprata 0 astfel de yeroare™. Desi este un fapt interesant, aceasta este o instrueyiune nul din punet de vedere al erorilor de prelucrare. In ea insigiy nick divece | | 43 Prologul: Declaratia XML Fiecare document XML ar trebuis5inceapi cu o declaraye XML cae identi ii cxfind un ie XML ions de Semnnes,sersunes XML arial is dastonee cul respectiv. Caracterul opfional este datorat numai faptului eX pe Web existd multe ficre HTML si SGML eae corespund pelect unui XML roma coree Dees stricim ceea ce functioneri deja? De asemenes,declarayia XML este locul unde declae gal coiienrendumnesvoust det docu ee saa no autnom. Oras gin fgets vendor ee cpr cu tate ature ese stone su , dar deoarece literele indice superior nu faa permise la inceputul cuvintelor in nici o limb3 europeand, nu putesi defini un element tare sf se numeasci (si si se pronunge ,ain’t misbehaving"), deoarece ar incdlea regulileTimbajului nostra. Inu-un mod interesant, eu toate ed nu putey utiliza cifre obignite la inceputul unui nume, pute folosi cifre romane, chiar daci cifra oman ,3* este definiti ca fiind un singur carscter, flI*. Aceasta face si funcyioneze construc elaine eum ar i gIVS Cutry” \ributul standatone vi permite si dezactivati, acd doriti, un DID extern, Acest lucru ate ava gi ake there dar este dificil de spus in citeva cuvinte care vor a ‘Veqi inviza mai multe despre acest stribut in secjiunea .Documente autonome” din acest capitol. Hanes -Dosumsny ‘ Codificari de caractere Este aproape sigur ei cea mai uzuala codificare de caractere pentru engleza american Garactere Unieode excins, tliat adeos pe ssemele UNIX, Este 0 codifieare de longime variabili, utilizand Sntre 1 si 5 octeti de date pentru ficcare earacter, fapt ce poate ridica probleme in Java si in alte medii. Dacd sistemul dumneavoastri cere Jungime de octetifixd, UTF-16 care utlizezad, ca gi Java, doi octyi pentru tn caracter, este 0 alegere bund, deoarece procesoarele XML trebuie si fie capabile si detecteze 44 Fundamentele XML fiecare codificare, fird a fi nevoie de nici o declarayie. UTF-8 si UTF-16 sunt singurele codificiti pe care analizoarele XML sunt obligate si le recunoasci si sunt suficiente pen- tru utlizarea general a oricirei limb de pe pimnt. Pe de alti parte, majoritatea sistemelor Windows nu utilizeazi UTF-8, ci ISO-8859. care este setul de caractere ISO-Latin-t utilizar pentru engleza britanici si cea american’ fi pentru majoritatea limbilor din Europa de Vest. Accasta nu este o valoare prestabilit, Geci ar trebui specificatd in declarayia dumneavoastra de codificare,astfel: ‘ete varsione*1.0" encodings "180-8859-1"> ltée, este posibil ca anumite earactere si nu fie mapate corect la UTF-8 si si product probleme delizibilitace in documentul dumneavoastra. In general, daci averi de gind si realizayi texte in primul rind in englezd, in care si averi intmplitor un cuvint sau 0 frazi intro alti limb& european’, cam aceasta ar fi tot ce trebuie si titi despre codifi- ccarea caracterelor. Informatiile urmitoare prezinti interes deosebit pentru cei a ciror limbX de baza este alta decdt engleza gi care probabil e& vor recunoaste codificirle produse de aplicagile lor de prelucrare de texte sau le vor deduce din context. Daci nu avesi de gind si reali zaji documente utilizind aceste codificir, puteti siri peste intreaga sectiune Alte codificiri*. Alte codificari ‘Alte codificiti obignuite sunt 1S0-10646-UCS-2 si 1S0-10646-UCS-4, care pot fi folosite pentru doud dintre codificirile Unicode/ISO/IEC 10646 utilizate cel mai des pentru unele limbi europene. Valorile 1S0-8859-1, ISO-8859-2 si celelalte pani la ISO-8859-10 pot fi iilizate pentru diverscle parti ale ISO $859 (fonturi pe 8 biti) utilizate pentru Latin-1 (Europa de Vest), Latin-2 (Europa de Est), Latin-3 (Europa de Sud), Latin-4 (Europa de Nord), Cyrillic "Arabic (arabi), Greek (greacd), Hebrew (ebraici), Latin-5 (tured) si Latin-6 {in aceast4 ordine. Valorile ISO-2022-JP, Shift_]IS si EUC-JP ar trebui uti- Hzate pentru codificrile limbii japoneze ale JIS X-0208-1997. Fiecare proceso: XML ar trebui si recunoascd micar aceste codifickr, dar este posibil si nu se intample asa, Pro- cesoarele XML pot recunoaste si alte nume de codificiri, cum ar fi ASCII, US-ASCIL Sau EBCDIC-US. Recomandarea XML 1.0 a W3C sugereaai ci acele codificari de Caractere inregistrate la Internet Assigned Numbers Authority (IANA~ Autoritatea de atribuire a numerelor in Internet), altele decat ecle prezentate mai sus, ar trebui referite utilizind aumele lor inregistrate ‘Sugestle de la Aceste nume fregistate nu sunt sensible la tipulitereor, deci proce LLeeAre.com soarele care incearcd si le recunoascd ar trebul 8 o faci intr-un mod care ers towene fr $8 nu depind8 de tipuliterelor Daci alegeti o anumiti codificare a caracterelos, alta decit cele prestabilite, UTF-8 sau UTE-16, care adreseazi potential intregul spatiu de caractere Unicode/ISO de mai mult de wn mition de eaactere, a webu de asemenes si vl asgurat cf stale deat importante sunt gi ele importate in documentul dumneavoastra, pentru clartate si pen trv uguringa vigil (dacd utlizaiun procesor de texte sau un medi de ereare in imbba Sintaxa XML 45 englez’). Acest lucru il veti face de obicei pentru 1S0-8859-1 si pentru caracterele spe- ile definite pentru HTML si XHTML. Pentru majoritatea sistemelor MS-Windows din Europa de Vest si din cele douk Americ, ar trebui si alegeyio codificare de caractere 1$0-8859-1, serul de caractere Latin-1 utilizat de obicei de Windows. Veyi utiliza decla- rafile ENTITY care arati astfel: cl-- Latin-t characters for XATHL => ‘ENTITY & HTULLat1 PUBLIG *-//WSC//ENTETIES Latina //EN//HTULY ‘http: /Jwow.n. org/TR/ahtndt/OTD/ shea -2att .ent*> seu atts cls+ Special characters for AHTIL --> ‘wrmspecial; ‘les Mathematical, Greek and Synbolic characters for xATIL --> suiTwc symbol; Despre declararea caracterelor vefi inva mai multe pe parcursul acestui capitol, dar din aceasthdiseufie ar trebuis4rimanefi cu ideea cl pentru documentele obipaute, tn limba englezi, ucilizand software de creare bazat pe Windows, veti dori probabil si declarayi explicit setul de caractere 1SO-8859-1 pentru a vi asigura ci setul de caractere ISO- Latin-{ va interpretat corect. Cu toate ci literele de pe tastaturile englezesti obignuite sunt echivalente in UTE-8 si ISO-8859-1, anumite caractere accentuate si speciale sunt diferite, iar serul de caractere ISO-8859-1 este mult mai mie. Daci utilizati un procesor de texte sau un software de creare pentru alte limbi decét ‘engleza si mai ales daci utilizati un sistem de operare care nu este european, atunci ar tucbui si v3 Limurigi care codificari sunt generate, pentru ca in declarafia dumneavoastri si pute apela la codificarea corespunzitoare, Probabil ci aici sunt mai multe informasii decit ar dori si afle majoritatea oamenilor despre codificirile de caractere, dar atunci cfnd va trebui si realizayi un document lizi- bil, de exemplu in rusi, veri avea foarte mare nevoie de ele. Situl Web Roman Czyborra confine legituri la mult mai multe informagi, inclusiv imagini ale celor mai uzuale seturi de caractere: nttp://c2yborra.con/chersets/s08859. trl, Documente autonome In conformitate cu Recomandarea XML 1.0 a W3C, ,Documentele autonome nu au declaratii de marcare externe care si afecteze informagia XML transferatd de procesorul XML unei aplicayi*. Acesta este un mod extraordinar de succint gi obscur de a spune ci standalone="yes* Tnseamn’ ci: Intr-un DTD extern nu exista valori prestabilite declarate ale atributelor care si nu fie setate explicit in document. Nu sunt utifizate alte entitii in afard de danpi, 8183, gt, hapos; si Squot; care nu au fost declarate local sau poate citite prin referinya dintr-un fisier. 46 Fundamentele XML Nu existi elemente care si aibi ca si conginut numai spayi albe de orice naturi. No existé atribute externe care trebuie normalizate, deci conginutul-atibutelor nu poate contine spatiialbe, caractere sau refering la entity ‘Aceasta nu inseamni ci documentul nu are nimic extern. Poate are. Aceasta inseamni in special ci, indiferent de locul in care un procesor XML care nu valideazi se opreste din citirea documentelor externe, se opreste prelucrarea tuturor declarapilor. ‘Toate aceste lucruri le pute face daca si numai dacé le punesi in submulyimea DTD-vlui Datele externe care nu sunt marcaje nu fac subiectul acesteiafirmasii. Deci, puteti avea fisiere graice,fsiere text incluse si orice alteeva, ait timp cit ele nu sunt mareaje sile-aji declarat in submulsimea DTD-ului intern, Dup§ toate acestea, procesorul XML nu trebuie si anunje aplicagia dack documentul este sau nu autonom. De fapt, procesorul nu trebuie si faci nimic cu aceast’ informayie sinici si se comporte fntr-un anumit fel atunci cind intilneste aceast3 informatie. Jn mod fundamental, proiecrantul DTD-ului trebuie 4 descifreze daci documentul creat utilizind acel DTD poate fi sau nu autonom si si comunice acest lucru oamenilor, inclusiv autorilos. Autorii care stiu e& DTD-ul a fost proiectat pentru a fi auronom sau, cei care au convertit un document care nu a fost proiectat si fie autonom in acest format, pot insera standalone="yes" in declaratia lor XML. ca o documenta a acelui fapt: 0 standalon Documentele care nu sunt autonome por fi convertite prin algoritmi la documente autonome, automat, presupunind cf este disponibili o facilitate care sf realizeze acest lucru, sau manual in eaz contrar. Construirea prologului unui document XML: Declaratia tipului documentului (Document Type Declaration) Prologul unui document XML confine mai multe instrucfiuni. Prima, declararia XML, firm’ ci documentul urmitor este XML. Cea de a doua, declarayiatipului documentu- iui (Document Type Declaration), este metoda pe care o utilizagi pentru a identifica definigiatipului documentului (Document Type Definition ~ DTD) folosité de un anu- mit document. Faptul ci acronimul DTD poate fi aplicat a Document Type Declaration este o colncidensS nefericit DTD se referd numaila Document Type Definition. fntr-un document XML poate exista 0 singuri declaratie a tipului documentulu, deci este intro~ dusi chiar in instanfa documentului, Deoarece pot fi combinate mai multe DTD-uri pentru a forma un singur document, aceasta permite controlul ineircarii DTD-urilor in fiecare document. Declaratia tipului documentului (00¢tvee) are dows pirgi, ambele optionale. Prima se referi la un DTD extern si utilizeaza cuvintele cheie PUBLIC sau SYSTEM pentru a identifi- ca o intrare dintr-un catalog, respectiv un URI. In cazul in care cataloagele nu sunt implementate ia procesoral dumneavoastri XML, pute specifica ambele pirti deodat3, {irk eel deal dotlea cuvant chee ed “:00CTYPE nune- Cea de a doua parte optional a declaratiei oooryPe vi permite si introduceyi submul- fimea intern a unui DTD direct in documentul dumneavoastri, Exist restricyii severe eu privire la genul de informatie pe care o puteyi introduce in DTD-ul intern, dar oricum pute face destul de multe. Submulimea intern a unui DTD este ineadratd intre paran- teze drepte,astfel: Pentru claritate, submulyimea intern este evidentiatS de obicei cu retururi de car ca mai jos: Manualul sau foaia dumneavoastri de codare vi indici ce s& trecegi in ooctyPt daca sun- tefi un autor. Dac sunteti un proiectant DTD, atunei ar trebui si furnizayi un astfel de ‘manual sau o foaie de codare fiecarui autor. De asemenea, putefi crea un DID master care apeleazi parjile DTD de care avesi nevoie, lucru care seaming cu comenzile dintr-un meniu, Atunci cid aveyi o combi- natie de funcrionalititi care vi permite si ereasi structura documentului de care aveqi nevoie, puteti publica DTD-ul rezultat si si seipagi de neplicerea de acl face iar gi iar pentru fiecare document nou, Putegiafla mai multe despre DTD-uri in Capitolul 3. Crearea corpului documentului Un document XML este aleituit dia text, care de obicei este format dintr-un amestec de marcaje gi date caracter. Prologul contine numai marcaje, dar nu aceasta este partea interesanté deoarece dumneavoastri avesi nevoie de date care si insoteascd marcajele care, altfel, nu ar fi decit niste cuti goale ce asteapti si fie umplute, Corpul documen- tului dumneavoastei contine aproape tot ceea ce conteazi din perspectiva unei aplicayii (sau a unui om), impristiat generos in eadrul marcajelor. Date caracter Un DTD poate declara multe tipuri de date care si poati fi utilizate in documentul dum- neavoastri, dar tipul de date prestablic este ntoxdeauna COATA, pentru date obignuite de tip caracter. Foaia sau manualul de codare vi indici ce tip de dati poate fi introdus in ficcare atribut sau cimp cu continut clement. 48 Fundamentele XML Presupunand ca tipul de date este COsTA, in cfimp puteti pune aproape orice dorigiatit timp edt na confine un marcaj in afara unei secvenge escape. Este pe deplin posibil si construiqi un DTD care sf nu conjind text in interiorul ele- mentelor. {n schimb, putegi pune datele semnificative in interiorul atributelor asociate fecirui element, care pot fi toate declarate ca fiind vide sau avnd numai confinut cle- ment, Acest lucru se face uneori pentru a converti un document utilizind un standard de codificare cum at fi MARC, care este in esentd un format bina, la XML. Marcajul Mareajul este format din ansamblul de date non-caracter dintr-un figier XML. Diverscle forme pe care le poate lua un marcaj sunt prezentate in Tabelul 2, Tipul marcajului etichete de pornire “nuneElenent fateibutel > — ‘etichete de incheiere d ‘nuneELesent [atribote) I> snureEneitate; sau SparenetrulumeEntitates S#nunarZecinal; sau Mfxnunariexes iz- conentariu > arele secjiunii DATA “iooara{ informatii cdata )> dleclaraille ipului documensului_ instrucfiuni de preluerare declaratia XML taml_version encooing standalone 7 Sintaxa marcajului zeferinge entitate referinge caracter "Toate celelate sunt date de tip caracter. Marcajul incepe intotdeauna fie cu caracterul c, caz In care se incheie intotdeauna cu caracterul > fie cu caracterul , caz in care se incheie intotdeauna cu caracterul ;. In secyiu- hile urmétoare ale acestui capitol vom studia diferitele tipuri de marcaje. Formarea structurilor logice in XML Imbricarea clementelor este singural mecanism utilizat pentru a arita structura logicé Dus-intorse/titiu> Scaménd mult cu etichetcle HTML standard si nu ar trebui si ridice alte probleme in clara celei de construire corecti, care cere ca ele si se imbrice intr-adevar wna in cealalré Nu puteti avea etichete care s¥ alterneze intr ele cain acest exempl greyitconstruitt bold>eitalicoTEXT AODENTUATe/BoLe> Cu toate ef este 0 eroare obignuiti in HTML, XML este cv mult mai pretentios si mu va permite aceasti constructe. Exichetele trebuie imbricare corect, dupa eum se vede in ‘exemplul urmator: sbolgeTEXT ACCERTUAT&/{teLic> (Observati ci acum etichetele se imbrici corect. Trebuie sb inchide) fiecare eichets care incepe. clichete (sau al mai mutor etchete) és ipo ‘ontetul unel anumite iderea contextulul ebchetel Erichetele vide au disponibil un format special, cu toate ci acccasi schem, eticher8 de pornire/eticheti de incheiere, poate fi utilizatdatita timp cit yinefi minke e& nu trebuie FP punei ici un fel de continut intr erchera de pornire a clementulai vid si etchets de Jachelere care urmeazi imediat dupi ea. De asemnenea, poate ci veti fi preocupat dack tere posibil ca documentul dumneavoastri XML, si fie vizualizat cu un browser Web isnt, eoareceetichetele de inchciere pentra elementele care aati caetichete HTML wide pot duce la blocarea browserului sau la un comportament ciudat al acesuia, Totus pentta utilizare general, formacul special este mnemonic in sine, un avantaj deoarece Rmneavoastrd putes: vedea ci eticheta este vids si mu bloches7i aproape nici un browser. ‘Sintaxa XML 5. De obice,etichetele vide le pornigi ile Sncheiai in cadral accleagi perechi de paranteze unghiulare, plasind dupa numele elementului si roace aributele tae posibile oa spayc un earacter slash si apoi paranteza unghivlar’ inchisa: ° image source="pozanea. jog" typer"JPEGt /> Desigur,tipul trebuie declarat ca notafie, dar toate acestea vor fi discutate in sectiunea _-Entitiqi neanalizate" Normalizarea Normalizarea este un cuviat excentrie pentru aducerea lucrutilor la cel mai mie numi- tor comun si punerea Jor intr-un fel de forma canonics. In contextul XML, el se refer la procesul rezolvirii referingelor Ia enttiti in locayii in care pot apirea astfel de refe- riage, la aranjarea rindurilor noi pentru a lua in considerare diversele metode de wratare a lor de citre diferitesisteme de operare gi la ordonarea altor lucruri care trebuie ficute fn anumite situa Sipeiece is poiarure de Hm ape ce emai, cla estoecn cate ete Prison ML nu ean tte rorluee tenor de ingle ene dn gnana Sooo Secon ns erin aca een ind rivewioa taze Sra orerestos casemate S.a dovedit i existi dou locuriin cate pot fi intinite sparialbe: in datele de tip carac- feet Socratic eco e In primul eaz, in enttitile anaizate este dificil i se fac3 distincyie intre sparile albe ssemnificative” si cele nesemnificative. Pentru proiectangi, cea mai bund cale pare si fle tansferul cite aplicaie al ruturor spatiloralbe impreund eu cea mai bund presupunere 4 procesorului, bazati pe DTD, referitoare la datele care sunt in mod sigur nesemifies- tive gla cele nesigure. Acest transfer de rispundere are sens deoarece aplicayia este cea mai in misurd si stie cum si procedeze cu spatiile albe suplimentare. - HEXEEID rrocesorul xt poate numa si presupun’ care Ssaho alb este sernnifica 91 Cor, banda pe cece a ot defn OTD can oie at nba de me uilizat. Aplicata cumneavoastr trebule s4 fle rt seat’ e's Re pregBth 58 trateze pre- Cu tatarea siegiturlor de line, 0 alk forms de spa albe, exist o ald i. de linie, 0 altd forma de spatii albe, existi o alti problemi. Linile no sunetratacedifert pe ssteme diferite. Alternaivele generale sunt wn nile no) lferite. Alternativele generale sunt un salt Is Tinie nova (UNIX), un retar de cer (MacOS) saat returul de ear cat saleal la Tinie novi (MS Windows). Un ale lucru obignuit pentru aplicayi este, de asemenea, inserarea de secvenge contradictorii cu oricare dintre acestea, n orice ordine, atunci cind intalnese un figier dintr-un sistem strdin, W3C a hotirit ci mu poate face totul gia ales un set rezonabil de reguli. Daca analizorul intalneste fie a6x00;84x04; (retur de ear, salt la nie oud), fie 8x03; (retur de car), elle inlocuieste eu 8rx0a; (salt la linie nous), caracterul de linie nous UNIX. Citiva programatori Microsoft Windows au fost oarecum emul 52 Fundamentele XML ‘Bferte pento soparares lor, Mics cost pera telemprinatote, zi n} THicrosoft # Apple all ales mecanis alegand tence scurea $i bretele” nato i eu deca $i apo! un sat la linie'nous pentru & indica o line 00ua: ADpIE 3 asl rn ing fet oy verge sense scares Inatribute, existi o secvenfi de transformare standard gi apoio prelucrare adiugatd spe- cial pentru orice in afar de COATA: tt Referingle la caractere sunt prelucrate prin adSugarea caracterului referit la valoarea de iesire a atributului. wm Referingele la enttiti sunt procesate prin prelucrarea recursivi a textului de inlocuit al enti 1 Spatilealbe, x20 (spayiu), #x00 (retur de car), #x04 (salt Ia Hinie nous) si #x09 (tab ori- zontal) sunt prelucrate prin adiugarea lui #x20 (spatiu) la valoarea normalizatd a iesiri, exceptie facand faptul ci se adaugi un singur #220 (spariu) pentru secventa *#x00#x0A" (femur de car, salt la linie now), care este parte a unei entitati externe analizate sau va~ Toarea enttitiliterale a unet entitii analizate interne. . Celelaltecaractere sunt prelucrate prin adugarea lor la valoarea normalizaté a iesir 1 Daci tipul de dati al atriburului nu este CoATA, cel prestabilit atunci se aplicd ined o twansformare. Spatile din fayi si din space sunt eliminate, iar spatiile multiple sunt comasate intr-un singur spat Diferega dine cele dout tipuri de normalizare const in apr e putes 8 wansferat fn mod convenabil sruri angi intr-un atribut, si restranget lini astel incit sé incapi in paging, iar in final conginutul elementului si riméni relat curat. Tipuri de elemente in mod surprinzitor, dacd validayi, nv este o eroare si utilizagi un element de un tip care hn fose dra ce wate chests posi ca snalizorl o8emité un avertsment De fps permitind in inteiorul unor elemente alte tipuri de elemente nedeclarate,indiferent de sea ce spune modelul lor de continut, vei fi capabil si suplimentayi DTD-ul unui docu- rent cu elemente din alte zone de nume. Deci, tot ce aveti de ficut este si utilizat ele: mentul nedeclarat intro manier& exacti, construiti corect, identficand pe cit posibil zona de nume de unde provine. Deoarece afi studiat deja ce inseamna construirea corect, fsruncati o privire asupra unei situaii mult mai interesante, un document valid. Tin lerien RHE Bf cons ores cle in alt mod de a spune c& cel element | pimeacd tn arbore sau 0 omur® a nul acbore cae este complet in si {luc este pecesar dearece XML vB permite 8 construti document mai mad) | din unele mal mic si éste un element-cheie pentru a fi capabil $8 utiizal! XML pe’ Web, Ae ep mal foal sunt deat nae sen le aces ota, Fiecare clement dintr-un document XML valid a fost definit in DTD-ul asociat aceli document prin declarajia 00cT¥#E. DTD-ul declara urmitoarele: ‘Sintaxa XML, 53 1m Numele efective ale clementelor 1 Regulile utilizate pentru a determina care elemente se pot imbrica in alte elemente gi inecordine , ae 1 Atributele posibile si valorile lor prestabilite sau constante 1m Valorile caracter ale tipurilor enumerate ‘i Entitifile neanalizate utilizate in document si modul in care sunt referite prin nume § Codificarile de limba utilizate in document 14 Entitiyle caracter uilizate in document 18 Alte informagii importante pentru prelucrarea si redarea documentulai Respectind aceste reguli vet fi capabil si creagi documente in concordani cu sablonul pe care proiectantul documentului -a avut in minte atunei cind a creat DTD-ul. Int-un medi care nu valideaza puteti crea etichete si atribute pe misurd ce inaintafi. Foaia sau manualul de codare afigeaza toate acesteaintr-un format usor de ciit si ingles, deca autoru! DTD-ului si-a ficut treaba corect. Cand ereati un document XML sau corectati o eroare, este posibil si nu beneficiagi de avantajul unui mediu de creare complet. Poate ci utilizai vi prin telnet de la o distansi de mii de kilometri. Este intotdeauna important si pistrati la indeméni documentayia de codare pentru cazul in care sunteyi apelat in miez de noapte si sunteyi rugat s% reparayi sistemul de acces la baza dumnea- voastei de datejin valoare de un milion de dolari Figura 2.3 din acest capitol prezinta un mediu de creare care valideaz%; aceasta vi poate economisi mult timp si vi poate usura viata incapsulnd automat informayia DTD-ului care, altel, este posibil si fie prezentat’ intr-un document de codare intr-o forma pro- gramatic’. Totusi, astfel de instrumente nu sunt infailibile gi nici nu sunt disponibile pentru fiecare platforma. Cu toate ci ele pot genera mesaje de eroare ,utile* atunci cind se opresc din prelucrarea fisierului, mesajul efectiv poate si nu aibi nimic in comun cu eroarea facut de dumneavoastra. In cele mai multe cazuri va trebui si va bazaji pe capul dumneavoastrs, si nu pe un instrument. Reguli de denu: a entitatilor Numele entitifilor trebuie si inceapi cu un caracter, care este orice caracter din eadrul unui sistem de seriere dat care corespunde conceptulti general de caracter Latin, plus caracterele ASCII liniuy3 de subliniere si dou punete. Primul earacter poate fi urmat de carter ire go seed accent caacere de endere reprezentind combina le simboluri de un tip sau altul Instructiunile de prelucrare nu pot incepe cu literele [ASC XML, xml si once combinaie de majscle i minuscule a acestor tel tere. Utilizarea caracterului ASCH dou’ puncte este 0 idee foarte rea, excepfie ficind cazul in care flosit zone de mum, eu tote ee posi si face aceasta tn mod lesa in moment ce, intr-un nume, prezenfa unui sir urmat de dou puncte aratd ca gi cind svar referi la 0 zond de nume, chiar daci n-o face. , MEER 11 food Surprinnt, rte explcapi refetoare la WAL Gregan 2c Th rina, Fle expla refertoare la XML Grejese acne pring. th gud opt cto lumen ete de scard casa ty lea coc fick, foptul cS aceasts liberate se extine sila marcaje este mal red : [Tooth umes exe att de obit cu imide HTML nt ete il = ee eee ee 54 Fundamentele XML Singurul loc unde ceva ASCII este obligatoriu este Intr-un DTD, care este un document in culise pe care autorii obignuisi este posibil si nu il vada niciodata. Literele care formeaz’ sumele identificatorilor publici- caracterele care completeazA partea literals a eclaratiel IDOCTVPE PUBLIC “-/Sdentificator public* “uré"> ~ trebuie si fie caractere ‘ASCII deoarece acesta este un standaed Internet. Referintele la caractere numerice, com ar fi b#x00;, trebuie introduse utilizind un set de numere ASCII foarte restrins. Codurile pentru limbi ISO 639 si codurile pentru piri ISO 3166 utilizate in xiu:tang si atributele KHTML tang trebuie si ele si fie in ASCIT, din now datorith faprului ci acestea sunt standarde Internet. Mai exist citeva locuri unde este nevoie de ASCII, cum ar fi ghilimelele (care tebuie si fie ghilimele ASCII), caractere de marcare speciale, cum ar fi fotz, cuvinte cheie, ca sau TOREF, si aga mai departe, dar in general nu tre- buie sa vi faceyi griji dacd uilizagi caracterele echivalente din securile de earactere ale Inbit nationale, definite in standardele Unicode/ISO/IEC 10646 {In rest, XML este prietenos cu vorbitorii de alte limbi decét engleza. Chiar si semnele care in Unicode #1 in ISO sunt numite ,caractere de combinare* sau ,caractere de extindere™ sunt permise atitin etichete, cat si in conginut, Acestea sunt in primul rnd Gecentele care pot fi trecute in nume pentru a semnala motoarelor de afigare ci un cent ar trebui combinat cu caracterul precedent, indiferent cum se realizeaza acest ucra, Dect francezii, germanii si mulyi algi care utilizeazi un alfaber latin pot vedea ctichete ortogeafiate corect in propria lor limi, cu accentele si umlaut-urile potrivite, ga cum si vorbitorii de hinduss, ebraii, araba i multe alte limbi pot si uilizeze astfel de caractere, Dupé ani de dependensa eurocentric’, chiar anglocentricd, pe Web de ASCIL si de ‘ASCI excins, XML a egalizat oarecum terenul de joc pentru toi jucttorii de pe Web, inchirand nenumirati utlizatori care vor fi capabili si acceseze informaile in limbile Jor inaterne. Avand un singur mijloc standard de comunicare in, si zicem chinezay in care exist tei ystandarde” principale si un numér de variant, se va imbundtapi cu sigu~ ranfd disponibiltatea motoarelor de redare si in acelag timp, li se va reduce costul. Liste si tipuri de atribute {n foaia dumneavoastré de codare XML vei gisi o list de atribute pentru fiecare cle- ment, Daci utlizatiun editor care valideaz3, cum ar fi XML Pro 2.0, vei avea probabil tun meni de atribute disponibile ori de cite ori veti pozitiona cursorul pe un element in mnodul de vizualizare a arborelui documentului, De asemenea, avesi gi un meniu de ele- ‘mente care pot fi inserate in fisier in acel loc. ‘Un astfl de editor vi poate economisi o cantitate imensi de timp deoarece elimind o parte din povara invijiri unei foi sau a unui manual de codare. Toru, o foaie de codare bund pose oer o privre generals mul mai aceesbil i poate expla rjionamennl din spatle Feructori documentulu, hcru pe care nick micar un editor care valideaza mal poate face. Sintaxa XML, 55 Figura 2.3 prezintd citeva dintre punctele tari ale unui astfel de editor. Struct frborescenth « documentul este ayatd lar, eu toate ef un document mare si com plex poate depisi rapid, pe un ecran mic, limita de liibilitate, Cursorul scos in evident viarati unde vi aflay in document la un moment dat. Pe eeran mai este vizibll go lista de atribute disponibile pentru elemental evidentia, Puteyi derula lista de atribute si si le deg ele pe cre dr si folosi penn ae element La nivelul procesorului poate fi ficuti numai o verificare foarte sumari a val aributelor dumneavoastri. XML in sine nu oferifacliiyi de validare a atributelor confinutului clementelor in detaliu, in afar’ de faprul ci verifici dack opyiunile enumerate au fost sau nu introduse corect, cru ficut automat de un editor care validesz’, precum sialte citeva detalii minore. XML Pro gi alte medii de creare vi pot oferi o listd autode- rulanti cu valorile enumerate, pentru a evita si facefi o greseali, dar cam asta ¢ tot. Solusia pentru aceasti dilem sunt schemelé XML, despre care vei invita in Capicolul CChiar si sumara verificare a cimpurilor poate fi modesti in uilizarea efectiva. Daci vi indi, de exempla, ci numerele de telefon trebuie i fie valori numeric, arunci v5 ala in faa diverselor conven dependente de limba care, pentru reprezentarea numerelos, pot folosi puncte, cratime, virgue, slash-uri, paranteze sau chiar cuvinte pronunjate liter cu literé, Pentru unele scopuri, armata S.U.A. utilizeazi o tastatur’ de telefon hexazecimala care la obignutele 09, * si # adaugi cifrele" A, B, C si D. Standardele Telephone TouchTone™, numite oficial tonuri DTMF (Dual Tone Multi-Frequency), permit acest Iucry, deci pute face si dumneavoasted asta. Codurile postale dia multe fri contin atit litere cit si cifre $i numerele mari, precum gi facile zecimale, pot avea semne de punc- rust in interioral lor care si varieze de lao fari la alta, deseori o virgula, respectiv un punct, dar destul de des un punct si o virgull, exact eu semnificaie invers8. In genera, totul este mult mai complicat decit ati erede, iar adiugarca de restrictii necugetate pentra intrii va cauza mai mult ca sigur probleme si va afecta imaginea dumneavoastri." FIGURA 2.3, Xie Pro 2.0 este utzat ent edtara unu filer NTL. Odseraiista de atrbute sponte pent un oloment ancers fancied poz cursor, 56 Fundamentele XML Tun meals global, meek =A fH foricare imp de date..Cu toate 3 ea fn tech ncep apr mute scheme Cre petit = onatingetereleteare scp eke deo web v5 a ite atent la ces ce este permis 91 CO nu i. Numerele de telefon pot arSta astfel: O11 41 09.23.44 230.9, ie eerste Je 8 nu ne cont de veriicaea inte Fedocerea frus lientilor, at sis dru numa de tlfen, = Se sa Intraduck once dorese, 10s at NaS eae ae Cu toate cho aplicatie XML poate impune constringeri numai intr-o bazi de date subia- cent, inainte de finalizarea analizei dumneavoastri ginditi-vi cl este posibil ca baza de date 53 fi fost proiectatdintr-o manierd insulard sau limicati sisi nu indeplineased cerin- tele reale ale unei pieye globale. Uncle date au in mod firesc 0 naturi regional, ir 0 per- Soand maturi este constienti de acest fapt. Daci o persoani mindnci tinind furculita in ‘mana dreapti sau in mana sting, este o chestie de gust si nu cere verificarea erorilor. In cazul diferengelor cosmetice, gandit erorilor sau de stocare. fnainte ca intrarea sa si nail pentru care un utilizator britanic ar trebui sau in Canada prefixele telefonice se incadreazi fe acceptati, nu existi un motiv rezo~ 3 ghiceased faptul ci, deseori, in SUA intre paranteze, Entitati neanalizate ( entitate neanalizati este orice lucru care nu poate fi recunoscut de un procesor XML, fie date binate, cum ar fi un fisier imagine sau audio, fie text care trebuie si fie transfe~ rat unei aplicafi fri a fi prelucrat in vreun fel. HTML utlizeaza comentarii pentru a ascunde un astfel de text de browserul HTML, dar XML are citeva mecanisme care fonetioneazd mult mai sigur. De fapt, XML nu trebuie si transfere deloc comentarii unei aplicatii, deci ele nu pot fi utilizate tit de liber ca in HTML. Aceasta a fost, cred, 0 mick revoltd din partea unor proiectanti care detestau ideea de a utiliza comentarii pentru date reale, ln HTML, confinutul unei etichete este definit si fie POOATA, care poate confine orice. Indiferent de situafie, ar trebui si utilizati noile eguli ale XML. O eentitate neanalizati trebuie mai inedi si fie declarati ca NOTATION, o declaratie specialé care numeste o aplicatie de asistengi care stie cum sf lucreze cu entitagi de un anumic tip. Notatiei fr dati un nume, un identificator public oprional si apoi numele mai pusin optional al aplicagiei de asisteng, ca in una din variantele urmitoare: NOTATION nune-arexonic PUBLIC “identificator-public* “nune-aplicatic.exe * > “INOTATION nune-nnenonie. SYSTEM “nune-aplicatie.exe * > Prima optiune functioneaz’ numai dac3 averi un catalog. Cea de a dous si cea de a treia functioneaz’ indiferent daci aveyi sau nu un catalog, Nu vi puteyi baza pe un catalog, deoarece acesta este un instrument SGML pe care multe procesoare XML actuale I-au ‘mostenit implicit de la predecesoarele lor SGML. Studierea catalogului nu este specifi- cati in recomandarea W3C gi nu se poate conta niciodati pe ea. Daci este posibil, uti- lizati ultimele dou’ versiuni. Pe de alti parte, codarea hard a informagilor despre locayia |a normalizarea datelor inainte de verificares , Sintaxa XML 57 i identitatea aplicasiei de asistengé tn absolut fiecare DTD este un anacronism predispus [reror pe Web. poe Dupi ce afi definit 0 notayie a unei entititi neanalizate, ea trebuie si fie declarati ca 0 centitate,astfel: IENTITY nuve-anenonie NOATA nune-nneronic> si apoi trecuti ca un atribut intr-un element pentru a 0 putea utiliza: ‘IATTLIST nane type NOTATION ounennenonsc* Numele mnemonice nu impart acceasi zona de nume, deci nu are importangi daci ele dunt idence, ceva ce eu incuraje numal de dragul elartgi Porant {In acest moment vi intoarcet la foaia de codare si puteti utiliza tipul de date define astfel Tipul de date poate fi utilizat numai ca atribut al unui element declarat ca fiind de ace! tip sau avind acel tip disponibil int-o enumerare, Celelalte atribute aduna informagile de care are nevoie aplicayia de asistengi extern pentru a fi capabild si prelucreze datele aplicaric tipic& poate fi un fsier imagine: rephic description” types"gitega'> ‘Acest element va necesita in DTD urmitoarele declaratii -uENTITY gif898 NOATA gif60a> “\ATTLIST sage source COATA #REQUIAED ut GUAIA #lUPLIED type NOATA gif@sa > Pentru majoritates instrumentelor, nu va avea importangi daci formatul il specificagi ca sita7a sau ca git8%2, deoarece aceleasi instrumente manevreazi ambele formate. Este oricum lipsit de logicd si asteprag ca persoana care codifick fisierul si cunoasca diferenta dintre cele doui. Notatiile vor fi mult imbunatitite 0 dati cu adiugarea facilitiilor oferite de XLink/XPointer care ajuti la urmarirea locatiilorasistentilor. Cu instabilitatea general 4 Web-oli la nivel siu actual si cu larga varietate de facili si arhitecrari de pe sis temele utilizatorilor, orice ajutor care poate fi obtinut de bietul utilizator va face mai Uusoard configurarea instrumentelor XML. DTD-ul, in forma sa actual, necesiti mule prea multi ajustare in stil UNIX a figierelor pentru a fi pe placul utlizatorilor obignuiti. sieage sources*uri* 58 Fundamentele XML CN Saris reaared © gd ine Wehvcogid pater aetale: Permit toate | site de relai, inclusiv pointer inversi care s& fle generat pe loc In docu! mente fEr8 acces la serie, realzéndus! magia chiar asupra coplelefjate, si nu g [nteeaesigrconcdnome Sea Cringele XML pentru notati, in forma actuals, sunt extrem de severe. Posibilitatea de 4 indica locafia unde se aflé aplicatia de asistenti poate fi comod’ pentru notatii neobignuite sau foarte specializate. Totus, este de asteptat ca agentul usilzator si stie cum sh afigeze multe dintre tipurile mai obisnuite, cum ar fi GUF-uri, JPEG-uri, PNG- tor, WAV-uri gi alte tipuri de fisiere binare mai mult sau mai pusin standard, utlizate pe Web. lati o listé a notatilor obisnuite: INOTATION eps PUBLIG "4//198N 0-201-18127-4::Adobe/ NOTATION “rostscript Language Reference Wanval//EN" > “INGTATION cgnbinary PUBLIC *280 8632/9//NOTATION Binary encoding! /EN* > INOTATION oprclear PUBLIC “180 8532/41 NOTATION Clear text encoding//EN* > INOTATION tiff PUBLIC "180 12088:1894/ ‘NOTATION TIFF-1//EN" > ‘INOTATION jpeg PUBLIC “IS0/TEC 10918:1969/ NOTATION Digital “compression and Encoding of Continuous-tone Still inages (JPEO)//EN* > Desigus, va trebui si adiugayi un ID sistem pentru a le putea utiliza, fie ca pointer lao aplicage de asistengi local, fie in fisierul catalog care centralizeaza locatile acestor apli- ati, daci este disponibil pentru instrumeniele dummeavoasti Aplicat lumea real& Agivizuc deja, mai sus, uncle dintre instrumentele pe care este posibil si le uilizati pen- tru crea un document XML, dar unde gisiti DTD-urile dupa care vei erea? Bi bine, pute si citqi aceasta carte in continuare gi si scrieyi propriul dumneavoastr4 DTD sau puteti utiliza unul deja existent. Multe DTD-uri se afli in domenii publice sau sunt disponibile ca standarde de la 1SO, ANSI sau de la alte organisme de standardizare, La sfarstal acestei citi exist 0 listt cuprincatoare, dar ac vol minions ea dite ‘aplicagile mai importante ale XML care se afirm’ in lumea de aziz Health Level-7 (HL), Standardul informatie de sinitate (Health Informatics Standard) a fost introdus in anul 1987 pentru a dezvolta standarde pentru schimbul clectronic de informati clinice, financiare si administrative intre sistemele de calcul din domeniul sinieayi. HL7 s-a concentrat asupra utlizirii SGML 3i XML ea meca- rnisme de transport intre diferite sisteme informatice din domeniul sini Sintaxa XML 59 8 Real Estate Transaction Standard (RETS ~ standardul de tranzacyii imobiliare) este 0 metodi bazata pe XML pentru schimbul de informasii referitoare la tranzactile imo- biliare, Un standard concurent este Real Estate Markup Language (RELML ~ limba- jal de marcare pentru domeniul imobilia) care utilizes DTD-uri XML peotra a prezenta listinguri cu spajii pentru locuinge, spait comercale gi terenuri virane, pentr publicarea lor pe Web. m RosertaNet, limbajul comun pentru afaceri, este o inigiativa EDI/E-Commerce desti- nati intermedierilor in domeniul calculatoarelor. MathML si CML sunt dowd standarde XML stintfice care permit matematicienilor i editeze ecuati, iar chimistilor sf prezinte formule c MSMIL, the Synchronized Multimedia Integeation Language (limbajul de integrare qnultimedia sincronizat), este HyTime for Everyman (HyTime pentru flecare), un Timbaj de marcare multimedia care permite furnizorilor de conginut si realizene prezen tri audio si video complexe. ICE, Information and Content Exchange (schimb de informati i conrinut), cu toate cd nu este chiar 0 aplicatie XML, fiind de fapt un mecanism de transport, permite Schimbul de investifi on-line si de informayii personale pe Web. SAE J2008 este un sistem de comenzi si inventariere bazat pe XML pentru industria auto; MISTI, the Missile Industry Supply-chain Transaction Infrastructures, face acelagi lucru pentru industria spatial. Chinese DTDs furnizeaza structura specializatd necesara pentru publicarea in limba chinez’, DTD-uri similare exist pentru japonezi, coreeang, vietnamezi si multe alte limb m GedML, un standard XML genealogi, incurajeazi fluxul liber pe Web al datelor genea- logice. Existd deja programe pentru conversia fisirelor standard GEnealogical Data ‘COMmunication (GEDCOM) Ia GedML. lar lista poate contifua, Dupi cum puteyi vedea, gama aplicatilor este imensi, atingind aproape fiecare zond a preocupirilar umane. Putine firme pot ignora linistte XML, cw toate ed sunt atat de multe standarde existente si propuse in atét de multe domenii, incit {a mod sigur unele firme vor f eliminate, in timp ce competitor importangi se striduiesc ajunga in virf printr-un duel zgomotos de propuneri. Sageste a Gu stat de multe propunen paleitete pute & v8 Intrebol! care sunt LLecAnne.com diferente intre ele. De obicel, va trebui si ceretifurnizorior potential $8 Wows tewene gi deavalule DTD-ul, deoarece sunt pufine DTD-un disponibile pe Web. Exist dou’ depozite de unde putet incepe. Pentru platformele Microsoft, consoriul BizTalk, la http://www, biztalk.org/, dispune de o ist in care pute) Clute, desl aceasta ru este usor de folait gi vl cere s8 ghicit) care Sunt cuvintele chele potrivte pentru descrierea tipului de OTD pe core utatl, Organizaia pentru progresul standardelor de informatie structurat (OASIS - the Organisation forthe Advancement of Stuctured Information Standards), la ntp://wv.oasis-open.org/, plénuieste un alt depoztt, dar eocamdats ofer’ pentru accesul public doar DTD-ul DoeB0ok si 0 sub= ‘mutime a DTO-ulul pentru tabele CALS, numité modelul de tabel pentra schimburi (Exchange Table Model). Muli furrizori trateaz® proprile DTO-uri de parc’ at fi secrete de stat. 60 Fundamentele XML Fiecare producitor de browsere are standarde propuse, despre care ceilalti se pling c& sunt indreprate impotriva lor. Asa cum rizboaiele browserelor au dus la dezvoltarea unor ,extensii" patentate la HTML, care tindeau (sau incercau) si blocheze celelalte ere, erednd un turn Babel de metode incompatibile care ne chinuie si astizi, XML £-0 continu schimbare pentru o buni perioada de timp. ‘Totusi, bazele exist3 deja, iar 0 comunitate de utilizatori cerand din ce in ce mai insistent standarde deschise conduce diferitele propuneri spre convergenti. Multe din succesele majore au fost standarde ale ISO si ANSI, care vind documentatia pentru a-si finanga eforturile in crearea de standarde, dar asiguri un teren neutru pentru toti partenesi enna preal documenta de obs cite ute de dla, oppor concur a seca Studii de caz ‘Acum, cand stiqi clte ceva despre fundamentele XML, trebuie si decideti cum 34 il uti lizagi. Api invigac deja ci DTD-urile reprezinti o metoda de descriere precisa a conven- fillor referitoare la formatul si macheta unui document XML side ce ar trebui utilizate in unele situatii si evitare in alvele. Api inviga, de asemencea, despre uncle diferenge dintre XML si XHTML si despre faprul ed introdue o mare diferenga pentr intregul Web prin internayionalizarea seturilor de caractere si posibilitatea de utilizare a diferitelorlimbi ia etichete. In capitolele urmitoare veri invita despre unele dintre facilititie incorporate ia XML privind securitatea gi confidenialtatea, care il fc potrivit pentru comunicagile de ‘afaceri B2B — business to business. Unele dintre aceste facilitagi de securitate au fost deja introduse fntr-un hardware care implementeazi prelucrarea tranzacyilor, semnturi digitale si Secure Socket Layer (SSL) pe silciu, echivalentul XML al unui cip accelerator grafie. Aceasta inseamni ci infra- structura necesard pentru suportul prelucriri tranzactilor XML de volum mare devine intr-adevat disponiila. Definirea unui sistem de prelucrare a tranzactilor B2B necesiti abilitatea de a comuni- ca foarte clar aspectal inregistritilor care vor fi transferateintre sisteme, deoarece acele sisteme pot fi pe platforme diferite sau pot fi implementate in limbaje de programare diferite. Un DTD XMT. este ideal pentru comunicarea acestor informatit, deoarece ppoate figarantat fapeul ci nu este ambiguu si cX este independent de platformi. Dupi ce tranzacfia este implementad intr-o aplicatie, nici unul dintre sistemele implicate intr-o tranzacfie nu va avea nevoie si acceseze DTD-ul, deoarece toate cunogtintele despre DTD necesare pentru orice cerere de prelucrare vor fi captate in codul programului care smanevreaz’ tranzactia Ia fiecare capit. ‘Acest scenariu este general pentru orice aplicatie de comunicare intre procese care uti lizeazd XML; etapele initiale necesité acorduri mutuale asupra DTD-ului care serveste ca parte a documentatci sistermului si ca facilitate de testare, dar nevoia pentra un DTD dis- pare dupi ce sisternul este gata gi ruleaads aceasta spre deosebire de documentele care pot Servi oricui fird un proces prestabilic si pregitit pentru tranzactiaflat la celilale capt. ‘Atunci cand un document este vizualizat cu un browser obignuit,informatia conginuts in DTD poate fi necesari pentru prezentarea corecti si manevrarea informatiel consinute acolo, Deci DTD-urile sunt in mod potengial mai importante pentru utilizatorii ocazio- nali decat pentru comunicarea intre parteneri care se afl intr-o relaie neintrerupt | Definitiile tipurilor CAPITOLUL documentului XML {in acest capitol ‘Analiza definigiei ipului documentului XML ‘Utilizarea notagiei gi sintaxei definitiei tipului documentului Valorile literale Declarayia norars0x Crearea declaratiilor ATTLIST Utilizarea construcyilor de tipuri de date XML speciale Diferenga dintre un XML construit corect si un XML. valid Modul de utilizare a DTD-urilor externe si a fragmentelor DTD. Modificarea unui DTD XML Studi de caz Analiza definitiei tipului documentului XML Un DTD (Document Type Definition ~ definitia tipului documentului) defineste forma gi sintaxa constructilor din limbajel XML. DTD-rile le creayi utlizind reguli simple, fare por pirea mult mai complexe decit sunt in reaate. Creand sau modiicind un DID gificindu-| disponibil pe Web, facetica un limbaj nou sau extins si fie inteligibil gi usilizabil de citre oricine are un browser care suporti XML. Majoritatea paginilor XML utilizeazi DTD-uri publice, ceca ce le permite si schimbe date cu alti utilizatori, intr-un format standard. Extensile locale la un DTD standard permit utlizarea extensii- Jor structurii proprii, care nu sunt relevante pentru alfi utilizatori Un DID nu este necesar pentru a realiza un document XML construit corect. De fapt, 4m exzul in care codul dumneavoastra XML a fost generat automat, putefi si optati si Siri peste acest pas. Torusi, pentru a profita de posibilitatea de a verifica validitatea documentului dumneavoastri XML, veti avea nevoie de un DTD. $i, penteu a partaja cu uuringi datele dumneavoasted pe Web, un DTD este un pas necesar spre universalitate. Un DTD va permite si captati si si validati posibilicrile complete ale structurii dum- neavoastri de date in locul unor improvizari spontane atunci cind doriti si rece intr-un domeniu optional. 62 Fundamentele XML. fowr-un document complex, orice document particular poate si uilizeze doar un subset al posibilitiilor complete definite de desigaul documentuli, Prin identificarea partilor Optionale dintr-un DTD, pisteagi controlul asupra locajilor lor din strucrurd chiar daci fu sunt utlizate in fiecare situatie. In acelasi timp, cu ajutorul uoui DTD vi asiguragi ck Arle obligatorii sunt intotdeauna acolo, chiar daci documentul este construit corect si Firtel, Un DID va permite si partajati stuctura documentolui dumneavoastri gi infor. rmatia intruchipaci de acea structuri cu o audienti mult mai mare decit era posibil Nu trebuie si utilizayi formate de date patentate care cer ambelor piri si dispuni de acelayi software, o cheltuiall enorma daci lucrati cu muli colaborator, client sau furni- ori. in schimb, putesi publica structura datelor dumneavoastrd acolo unde poate fi ‘Sizualizats gi utilizaca gratuit, sau putes schimba un fisier cu fiecare furnizor/client, ceca ve furnizeaza o cheie pentru ingelegeres modula in care fiecare cimp se leagi la docu- smentul ca intreg. HITED [Un OTD este o descriere precisd a structurl de date care poate fi transferats ‘unui instrument automatizat. Aceasta mreste posibiltatea automatizaril conver- sel datelor ditr-un format in atu, sau dint-un fmba) in aul, cu o Interventie lumen minis; XML a fost proiectat intrun mod care permice procesoarelor XML si aplicaiilor si vizualizeze gi si utilizeze documente XML fari a accesa un DTD, chiar daci acesta exist. Dack 0 legiturd se intrerupe, la urma urmelor, nu dorigi ca datele din document Si devina inutile. Deci un DTD este doar o parte a imaginii de ansamblu ~ 0 parte importanti, insi doar o parte. Utilizarea notatiei si sintaxei definitiei tipului documentului fa general, majoritatea DTD-urilor profesionale grupeazi declaragile lor dupa tip si inuco ordine logicd, ceea ce le face mult mai ugor de citi si de ingeles. Ordinea exact cate ented in uncle cazuri, dar nu gi in alcele, dups cum informayia este necesari sau nw [a moment in care este realizatS o intrare intr-un tabel de ciuare. Unele extinderi de entitiqi se realizeazd doar in momentul usiizarii, Entitigile parametru sunt necesare aproape intotdeauna, deci ar trebui, de obicei, sf apara primele. ‘Sugestie de la Pentru a evita gifle privind lucruile care sunt necesare gi care nu, 0 Bgcromecen epindere bun este ecvaren oredr wen re de wise ocmmene'y Acegsta ugureaz’ putin sl gasitea lucrurilor deoarece, de obice, pute Buta spre inceputul DTO-ulul pentru @ gBsio declaratie anteroar’, “Ar trebui si facegi ca ridicina arborelui documentului dumneavoastrd si fie primul ELe- text, deoarece multe procesoare presupun cf primul element este chiar ridicina. Aceasta oglindeste intr-o oarecare misuri structura unui XML construit corect, deoarece prima ctichetd inedlnied este intotdeauna ri Ca o regula gencralé si pentru upurarea utilizar, dectaragile ENTITY ar trebui faeute fnainte de declaratiile ELEVENT si ATTLIST care le utilizeazd. Declarayille ELenENT trebuie Definitile tipurilor documentului XML. 63 realizate inainte de declaraiile ATTLIST care le modific3. Declarapile TATION trebuietre- fore inaintea oricarei usiliziri a notasiei respective. Figura 3.1 prezinti un exemplu de eodare corecti XML. FIGURA 3-1 ° oe ‘cesta esto um oxompla ‘aut de cod DTD XL bine oganzat ‘Observati ci fiecare sectiune afigeazi diferitele declarayii DTD Snts-un grup logic, iecare ATILIST urmand imediat dup§ accl ELEUENT pe care il modific8 ir restul este aranjat dup tip. Aceasta ugureazi gisirea fiecdrui fragment atunci cind il ciutay Valorile literale O valoare literala este orice sir incadrat intre semne de citat, care nu contine semnul de citat utilizat ca delimitator pentru acel sir. Aceste marcaje pot fi fic ghilimele, fie apos- trofuri, dupa doringa celui care serie codul. Daca dorigi si facetio valoare litera dintr-un sir care confine atit apostrofuri cit si ghilimele, puteti si le includeri in secvente escape pecele cu care dori si delimitayi sirul. Valorle lterale sunt utilizate pentru specificarea [Onsinacului unc! entitle interne, a valorilor stributelor sa a identificatorilor extern fin continuare sune prezentate cateva exemple de valori literale: ‘§Valori literale: *Sprinten vulpe maro sari peste cainele ene.” Forma alternativis “Gaine lenese cotcodaceste “fericita” din cuibarul dezordonat m Forma cu secvenfe escape: 'Acun este tinpul pentru citetul 20i taticusapos; “socru ares! Prinvul exemplu utilizeaz’ ghilimele, ca tn Statele Unite. Cel deal doilea utilizeaz3 apos- trofuri, ca in Marea Britanie si in multe alte locuri din lume unde se vorbeste englezs. Cel de-al treilea exemplu congine atat apostrof cat si ghilimele, deci apostroful este introdus intr-o seeventi escape utilizandu-se o entitate carscter. 64 Fundamentele XML Declaratia NOTATION (© notatie este orice lucru care nu poate fi infeles si analizat de un procesor XML (nota flile se mai numese gi entizdpi neanalizate). Cu toate ci aceasta evoci ideea de date bina Fe, notafia poate fi gi un text care nu este ingeles de XML. Un fragment de JavaScript, de cexemplu, poate fi pistratintr-un figier extern sisi fie referit cao notayie. Po tele doar ere oten in nterional unui document ae wansfera unl agent blizator pent jelicrare specbld, deca dace punel in intviorul une etichete XML =~ Soul agent 8 fe8 ceva cu cOnbiutl ches. Dac dori 8 included document date de tip text contd earecere special, or vebul se rece in, jescris in séctiunea wJrecerea Unul. Siac tks aa Problema cu notatile este ci ele necesité acces la DTD pentru a putea fi utlizate. In cciuda faptului c& puteyi utiliza submultimea interna a DTD-ului pentru a face disponi- bili local in document informayia notatici, analizoarelor care nu validesza mu lise cere 4 citeasc’ submultimea intern @ DTD-ulvi. Sintaxa NOTATION este simpli: Identificatorul este o intrare din catalog, asa cum se utilizeazi in SGML. Mulke proce- soare XML sunt procesoare SGML reciclate, deci suporti un catalog in mod prestabilit. Este un pic mai sigur decit indicarea spre o aplicayie de asistengl care este posibil si mu se giseasca in acel loc, dar XML cere ca aplicayia de asistenti si fie rotusi referit, fape care poate duce la comportamente contradictori. Putey si refer Adobe Photoshop, de exemplu, ca aplicagie de asistenzi pentru vizwalizarea unel imagini GIF, dar este foarte probabil ci browserul gtie si singur si afiseze GIF-uri, De asemenea, este mult msi probabil ci browserul este capabil si integreze corect imagine in documentul redat pe lun dispozitiv de afgare sau la imprimant’, 0 operate pe care Adobe Photoshop nu prea poate si 0 facd, Usilizarea ati a identificatorului cit sia jnumelu asistentului v8 per- ‘mite si faceti un compromis intre comunicarea citre agentul utiizator a tipului de fisier care va fi transferat si comunicarea expliciti a modului de afisare a fipierului, negtiind hnimic despre mediul ia care va fi afigat documentul Cu toate cf unele persoane vi pot incuraja si vi comportati ca si cind Microsoft ‘Windows ar fi centrul universului sisi serieti ceva de genul INOTATION gif SYSTEM “gif "> care, intr-adevir, funcyioneazi pe sistemele Windows, eu nu sunt una dintre cle. Utlizati aceasti sintaxd pe riscul dumneavoastri, Exemplul de mai sus presupune existenga lui Registry pe sistemele Windows care rezolva referinga, registra care nu este chiar univer- sal valabil si scurtcircuiteaa complet sistermul standard de identifica. (O conduiti mai siguri este st introduceyi acit intreaga intrare din catalog, cit gi seeventa identificatorului, Aceastl metodi oferi o sugestie mai putcrnici, despre ce poate fi facut cu acest fises, aplicagei care va era cu figierul XML prelucrat, dar nu prelucreazi efec- tiv referinta notafici. Identificacorul sistem “git” funetioneari pe sistemele Windows, deoarece Windows cunoaste deja GIF-urile. Dar un dispozitiv portabil sau chiar un cal- Definitile tipuritor documentulul XML 65 culator care utilizeazi un alt sistem de operare este posibil si nu aibi la indemand infor- matii despre manevrarea imaginilor GIF. Deci ar fi mai bine si refaceyireferinga prezentati anterios, astfel: Notaiile nu pot fi folosite izolat, Ele trebuie declarate gi intr-d entitate, O secvensi de declarasii completi poate arita aste!: “INOTATION gif89a PUBLIC *-//CompuServe1 (NOTATION Graphics Interchange Format wase//eN" *gif*> SIATILIST Sage source COATA REQUIRED alt COATA #IWPLIED type NDATA gif@da > tn documentul dumneavoastes,etichera va arita astfel: rit fo dnagine)> Puteyi de asemenes, si creatio listi enumerati de tipuri de notati, care utilizeard o sin- taxi ujor diferité pentru a descrie tipul notagie “INOTATION 93f898 Seoae/sen" “oit"> “SELEIENT Anage ENFTY> ‘UATTLIST Anage source COATA #EDUIRED alt COATA #INPLIED type NOTATION (gif872 | gif89e) ‘aifesa’ > tn documentul dumneavoastra, eticheta va arata astfl: sinage sources*uri* t=[0 smegine]> ddar putesi si nu gineyi cont de tipul prestabilit ofert in lista de atribute, astfel: nit {0 imagine] types itera > Aceasta permite agentului utilizator s& stie c& imaginea este in formavul GIF87a, dack aceasta are vrco important PUBLIC *-/ JConpuser\ NOTATION Graphics Interchange Fornat Notapile sunt mecanisme interesante deoarece vi permit si izolayi atat datele binare, cit si ee aibi de lueru procesorul XML. Din acest punct de vedere, ele sunt un lucru bun. Dar speci~ Ficitatea necesari devine repede obositoare. XML. este utiliza aici ca un dispecer care trebuie si aleagl inte alternative care se invechescrepede, pe misura apatite nolor tehnotogiibinare, 66 Fundamentele XML hts, 5 Sintaxa lui NOTATION este un fel de anacronism rimas de la SGML, care o urilizeazd ade- sea, Este posbil si fi fost inclus8 pentru compatibilitate cu un standard mai vechi, dar pe Web este aproape inimaginabil c3 pute sti locayia permanentd a ori lucru, chiar Sipe propriul dumneavoastri sistem. Sistemele de fipire evolueaza gi se modified; fu este constant. Declaragile NOTATION peesupun implicit un mediv care riméne reschimbat sau care se modifici atit de incet incit ajustarea unel intriri din catalog mu este o sarcin’ dificil, ‘mul plug-in utiizat deja de browsere si fie un mod poate cX am putea numai si declarim notatie plug-in. Ar fi chiar mai bine si browserul si serverul si negocieze asupra celui mai bun format pentru o anumicd s Din pieate, metoda cea mai bund urmeazi si apard. Deci pind atunci, tillzarea metod: oficale este o solutieinterimara. Se speri c& orice mecanism nou care va fnlZcura aceasté Soluyie improprie va fi capabil si uulizeze metoda mai veche pentru a extrapola de la Jocatia codati hard la Jocul in care poate fi gisit un procesor corespunzator. In orice caz, ar wrebui si vi gandifi mult si bine inainte de a include notaritintr-un document XML gi Sift pregitt pentra ceva mai bun care, in viltoral apropis, sia locul notailor. Declaratia ENTITY Declarafia ENTITY este una dintre cele mai simple, in ciuda faptuluic& exist’ atét de multe tipuri diferite de entiiyi Lista restricillor referitoare la entiiyi este oricum confuzé gi teste descrisi atat de suceine in Recomandarea XML 1.0 inet trebuie si 0 citii eu atentie fo dati sau de dou’ ori pentru a o ingelege. Vetiinvata mi multe despre enti si veri Svea prilejul favorabil de a compara si opune variatele lor uilizri in seegiunea ,Tabelul de entititi W3C* din acest capitol {in cazul in care considerayi un document XML ca fiind o colectie de entitifi care sunt, in linii mari, obiecte, in sensul orientirii spre obiecte, declaratia unei entititi este o imetodi dea indica o instangi a unui anumit obiect. Nu exist multe opsiuni gi declarayia nu este foarte greu de inviat, Formatul de bazi este urmitorul: Parrea rune are doua optiuni, una fara modificawor, dup cum vedey aici, gf una eu un ‘semn procent (8) care preceda aumele, urmat de un spajiu care marcheaZd o entitate parametru, Partea valoare are trei optiuni de baza fie un gir incadratintee ghilimele, un Fdentificator care indicd o intrare din catalog sau o locagie externa fisierulu, fie 0 refe- ringi de notafe, In continuare sunt prezentate citeva variante pentru entitii analizate: ‘ SIENTETY nune PUBLIC “inteare catalog’ “uré* > SIENTETY une SYSTEU ‘uri* > “ENTITY rune *6#9000;" > SIENTITY % mune PUBLIC *intrare catalog" “urit > ‘SJENTITY © nune SYSTEM *urs* > “HEATITY 8 nure *4#0000;" > Definitie tipuritor documentulul XML 67 Enttifile parametru se comporti difert fapi de enttitle generale, deoare proiectate ent Scopuri dferte. ee Tice lez ee ° ae a fievidenta atunci cind dumneavoaste, sau procesorul XML, vedetio declaraie. Modul in care le refevgi este gi el difert, O entiate general se referd astfel aoure; Jaro entitate parameteu se reerd astfel ‘smunes Aceasta este o diferenga relativ minori care mascheazi o diferent’ imensé la utilizare. Entit&ti parametru Entitatea parametru seamini un pic cu o mactocomand’ C proiectati i util Entitatea pars ; ° -omandi C proiectati pentru a fi utiliza ti chiar de cltre DTD, deci puteti identifica obiecte ~ colecti de rare pentru utilizarea lor in timpul procesului de construire a DID-ului, Dupi ce acest Iucru este ficut, centititile parametru nu mai au nicfieri nici o semnificatie. Deci daca se intimpli ca do cumental dumneavoastré si conting un fir care rata ca numele unel entvii parametr al va ignorat, sau mai deprabi tratatea‘un text simpla, ceca ce iste, : Totus, in interiorul DID-u, o eattateparametru are o mare wilitats. O pote utliea pentru a stoca pentru o utilizare ulterioari fragmente de text marcat sau, pentru como- on sh indice la colectii externe de text a oe seat sa Pens : In submultimea interna a DTD-ului, entitagil f , entitajile parametru pot fi wtilizate numai pentru a insera marcaje complete. Deci, urmitorul exemplu de declaratie si utilizare este cc ‘e1D0CTYPE une [ : — a "> sounede bel i . Exemplul urmitos, utilizand referinge indi intr-un UI ; infe externe indicate printr-un URL entitate, un ID public (sau intrare din catalog), este Be eae ‘corect: <1000T¥PE une | Sruseteneu; ‘Soumeleneu; ween * bel I Totusi, acest exemplu care incearci sK defineasci parti de marcaj ulterior nu este legal in submultimea intern’ a DTD-lui TS <1006TYPE use { SUENTITY § partessea “AbY'> *> conn s NENT @1 Sparteanea} Gel 1 Observati ck acest cod ar fi corect in i i i Ob eval id ar fi corect in submultimea externi a DTD-ului sav intt-o enti- 68 Fundamentele XML fner-un procesor XML care nu valideaza, referingele externe pot sau nu si fie preluate si corporate in document, dar aceasta nu este o eroare, indiferent de situafie. TDCEMIND [Difcrenta dnt procesoarcle WL care vaideasd si cele care nw valdeand prea minor’, dar aproape toate browserele sunt si vor fi dintre cele care {valideaz4. Pe Web, va fl posibll ca un DTD sf refere zed de | ‘ele find capabil Ia sea saa Un rower cae al Sy | pretezefotu in mod poteijlintregul We, poate devenlcbostoare, Soe ‘Acest fapt ridicd 0 problemi subrili, Daci submuljimea interni a DTD-ului contine un Amestec de referinte de entititi parametru interne si externe, un procesor care mu Yalideand trebuie si opreasca prelucrarea lor imediat ce nu a interpretat una dintre ele, fapt permis de altfel. Motivul este ci referinga poate deveni nedefinicé: <100CTYPE mune [ ‘CLENTITY % nuneleney “"> Suneleneut; ENTITY % nuneleneu2 SYSTEM *urd"> "> Definitile tipuritor docummentutui xt4L, 69 FIGURA 3.2 ate prezentata ierefa cine vavezerea unui ‘document XML d0 ctr un ‘avalizr care valdeaz8 sun analzor caro ny valiieazs MDEERRD [exe cusprtalle: Gt de rll arte infeeg ores entaple porametr pl aceasta” “este una dinte problenéle cv EBNF cae formeazs o parte a standarculul XML. “So pgemaurt su omar cl CONF 5 consort ch Use #8 cles /totul, oa 9 mare pares ‘specificatiel este deja continutd in textul deseor| nec Gore’ isotese: Tebuie sb ct) att EBNF cSt text pena a intlege pe (os earned ier ens eee Entitati generale O entitate general poate apirea in documentul insui, cel p este identifieat’ prinitr-o sintaxi particular’ in declarat Marea diferenta intre entitiyile generale este ci sunt fie interne, caz in care snfornatii este tun sirincadrat de ghilimele, fe externe, reprezentind fico intrare din catalog, fie un URL. ENTITY nane “un fel de text” > Entitats generale interne --> SIEWTITY mune PUBLIC *-//Leeknne.con/ My Xa Stuft//EN* > SIEMTITY une PUBLIG *-//LeoAnne.con//My YUL Stuff //EN" vay-dtd=stutf ote" > SIEMTITY nano SYSTEU "http://www, leeanne.con/xnl/ay-xal-stutt ota > Entitigile externe pot si nu fie incluse in document daci procesorul XML nu validea2i Entitiile generale interne pot apirca in DTD, dar numai ca valori intr-o lista de atribure sau inte-o entitate. In mod fundamental, zeasta inseamni ci ele trebuie si apard ca giruri Incadrateintre ghilimele. in mod potential. Ea Entitati neanalizate Entitatea neanalizaté a fost deja tatatd anterior, la explicaile despre notapi. Encitigile neanalizate pot fi numai externe, dar externalitatea entitatii cade in grija declaragici 70 Fundamentele XML notatiei referitd ei ine-un atribut NDATA, Usilizarea lor, a si cea a notatilor in general este intrucitva controversati. Nu exist’ nici un motiv pentru care proiectantul unui DTD ar tebui si sti ce tip anume defisier multimedia va fiin ineriorul unui document siapoi si dirijeze pe nevizute agentul corespunzitor, In loc si fie un sablon de docu. ‘ment general, atunci DTD-ul va fi limitat la tipurilefisierelor neanalizate previzute de la inceput gi de care se va gine cont. Acest lucru este in contrast cu cazurile existente in HTML. In eadrul limitelor, indicayi spre un fiser bina, iar aplicagia igi di seama de ce tip este si cum sii afigeze. Este altfl decit in cazul mediului UNIX, de unde provin marea majaritatea a proiectangilor XML. In cadral imielor in UNIX wiliai dour un fier. Fierce executable se aoiden- ic si se comporti corect pe cont propriv. Dup? umila mea parere, aceasta pare o abor- dare mult mai robusti. pep " space Indiferent de sieuafie, rimaneyi cu dificila sarcina de a actualiza DTD-urile dumnea- voustri ori de eite ori este inventat un nou format grafic sau audio. Altemativa este si Hsaji DTD ulin paces sf mine in umf, pe mlsurd ce pozle sunt inoeuite de co, video este inlocuie de video interactiv si simpla interactiune 2D este inlocuita de realiatea virtualé 3D. ae 7 retro Declaratia exT1TY pentru o entitate neanalizata functioneaz’ mand in mini eu entitatea noratin Notaia (NOTATION) erebuedeclaratéTnainte de utlzarea e into delaratie ENTE. ‘Aci vi este prezentat cum va arita declaratia uneientititineanalizatein DTD-ul dumnea- ‘voust, impreuni cu declaratia elementului care este necesari pentru ainstanfia intr-ade- vir un anumit exemplu: - SIATILIST nage source COATA #REOUIRED alt CDATA ATMPLIED type NOATA gifaoa > in documentul dumneavoastri,eticheta va arita astfe!: ‘ Puteqi crea, de asemenea, o lis enumerati de tipuri de notaii, care utilizeazi o sintaxi gor dferth pentru a deserie pt] aotaiel uplicum afi invdjat in diocoia despre deca: rapile NOTATION: TATION i) asayseNn" “oit*> LENTETY gLf87a NOATA gif87=> “SIELENENT nage EUPTY> In documentul dumneavoasti, eticheta va arita astfel: a ; ‘oss este un mic exempl care evidentiani absurditatea acestel abordiri, Cite persoane ffs pe nepregiitecirui format din cele dou i aparine fsieral for gif? Citor persoane fips XML in forma sa actuali face din aceasta i din multe alte lucrailipsite de Itmportangi o problemi de o importanyé covirsitoare, In cuvintele nemuritosre ale lui Fin Bray, unul dintre membril echipei de proiectare a XML. 1.0, ,Estein intregime fal. Declaratia ELEMENT Declaratia elementelor este acea parte a XML pe care o vedeyi cel mai car in produsul foal Ea reprezint’ cticherele efective pe care le veti utiliza in documentele dumnea- coasted, gi tebuie si avefi cel pufin una pentru ci, in caz contrar, documentul dum- Teavoatrd nu este un XML valid. Un procesor XML care nu valideazd nu va vedea Maiodatd DTD-ul dumneavoasir3, dar ctichetele $i atributele conginute in documentul dumneavoastra ll vor descrie, oricum, suficient de complet. Impreuni cu o foaie de stil Gsociatl, puteyiafisa corect documentul, fari a avea nevoie de vreun DTD. Dack aspectul documentalui nu va intereseaz’, poate ci nici nu veti avea nevoie de o foaie de stl. Aceasta poate fi situatia pentru un document care a fost in esentd o baz de dace sau a fost proiectat ca un mecanism de transport pentru transferul de date struc- turate incre dou aplic Declaragia Eveuent arati astfel rune este numele etichetei utilizate. content-nodeh (modelul de consinur) este locul unde fucrurile incep s& devind interesante, : content-nodel poate congine un amestec arbitrar de elemente terminale si neterminale. Elementele neterminale sunt numele altor elemente, in timp ce elementele terminale sunt texte sau alt conginut. Aceasta este sintaxa care formeazi nodurile in documento dumneavoastrs. Existd dou modele generale de continut, Primul model deserie conrinu- ful secvengial ~ sau ordonat ~ care utilizesz’ o listl separaté prin virgule pentru a indica faptol cf un clement erebuie si urmeze dup aleul pani la sliesitul listel ordonate. Cel deal doilea model utilizeaza o bark verticala ,sau” ca separator al listei pentru a indica DO selecsie dintre alternative. Cu aceste dowi mecanisme puteti construi aproape orice. Continut ordonat Numele de entitifi separate prin virgule sunt ordonate seevengial. Primul din list este primul, eel deal doilea din ist8 este al doilea gi aga mai departe, Elementele liste trebuie, pentru claritate, incadrate intee paranteze, in ciuda faptului ci mu este strict necesar pentru o lista ordonata corect: {ELEMENT rune ( sud-elenentt, sub-elenont2, -sud-elenentS, Continut de selectie ‘Numele entititilor sune separate prin bare ,sau" (\), bare verticale care ar trebui si fie disponibile pe tastatura dumneavoasted specific imbi: nationale, deseori deasupra caracte- ye 72 Fundamentele XML rului backslash (i), Ele wrebuie si fie incadrate intre paranteze, fn uilizare, ele rata astfe: Repetarea elementelor de continut XML Numele de conginut, sau grupurile de nume de continut incadrate ntre paranteze, pot fi ‘urmate de un semn de intrebare (2), un semn plus (+) sau un asterise (*) pentru a arita ‘un factor de repetii, numit uncori indicator de aparti. Lipsa unui semn de repetare dick faprul c& elementul trebuie si apari o singurd dati. Un semn de intrebare sem- nificd fapcul ci clementul poate si nu apari niciodaté sau si apari o singura dat, Un semn plus inseamni ci elementul apare cel pusin o dati gi dack este nevoie, se va repeta Un asters inseamni ci clementul se repeti de eite ori este nevoie, dar este optional. Cu alke cuviate, un asterise inseamn zero sau mai multe aparii. Aceste semne pot fi com- binate eu paranteze gicu secvente ,sau" alternative pentru a forma structuri de o comple- xitate arbierari. Modelele de conginut sunt atit de importante in XML inet poate c& merit sile serieti undeva pind le veri memora. Tabelul 3.1 prezinti simbolurile ulizate pentru a arita fac- torii de repetitie si cele doua tipuri de modele de conginut ‘CTabelil’3/1 indicator de aparifiutiizettin DTOAle XML Sintaxa Semnificatie 7 Zero sau 0 singurk aparifie * ‘Una sau mai mulke aparitit —_ Zero sav mai multe apariil _ ere 5) aurmat ded Dack suntesi obignuit cu expresile regulate din Vi, Emacs salt editoare stil UNIX, sin- taxa vi va fi destul de cunoscuti, Exemplul urmitor prezintS diverse utiliza ‘Acesta spune ci elementul confine una sau mai multe substructuri confindnd fie subelenentt fie subelenent2, urmat de o instant lui subelenant3 sau contine o instangi alu subelenent, Deci, urmatoarele producpii sunt toate corecte: csubelenentd> “nure>-subelenentS> “snune> “nune>ctubelenent2> CChiar gi acest exemplu simplu poate genera un numir infnit de producti, in ciuda fap- tului cd scrierea lor poate deveni plictisitoare. Modurile in care pot fi combinate aceste clemente simple pot deveni repede neclare. Una dintre utilizirile cele mai prietenoase cu utilizatorul ale entititilor parametru este incapsularea submultimilor eu astfel de com- portament, pentru ca dumneavoastri si vi puteti ocupa separat de ele. Definitile tipuritor documentulul XML 73 ee CLD [aia nena me ORE RT | pur si siriplu c& analizorul poate priv nainte in luxul de intrare si 8 revin8! ag a {sh revi a.ambinute, Deserere acezsia Im ones ete peceta ntegul document, aie deptseste 2 nS de bn a i ete entra rezova token a fost eiminat dit deta ll Evlarea nivelurorarbitvore de antspare inseam c& un analor tl poate fie de categorie usoars, pote penta un dspoctv hanchelé Pent alte cispozitve cu memorie si putere imitat.2, 9 if APSE SPS Sas SS Mae Deoarece procesoarcle XML nu anticipeazi, trebuie si garantati ci modelul dumnea- voastri de continut poate fi analizat cu succes, iri reveniri,inainte de a-| transmite in continuare. O strategie bund este de a strucrura un model de conginut cu multe elemente optionale, ca 0 alternativa intre modelele in cascadi cu elemente opfionale eliminate de la inceputul submultimii modelului: (a,dyerd) | (b,0,8) | ted) | (8) Nu puteti indepirta elemente de la sfarsit sau si puneti alternative in mijloc, deoarece atunci analizorul ar trebui si revini pentru a le analiza. Deci modclele de consinut care seamiini cu urmitoarele exemple ambigue probabil ci nu vor face ceea ce ar fi dorit proiectantul lor: (20.6.0) { (2,040) | (2,0) | (2) {@,0,e,d) | (ayds0) | (and) |) tn ambele exemple, atunci cind analizorul fntélneste element a este aleasi prima alter- nativl, (a,b,¢,)- Celelalte alternative nu vor fi iuate in considerare si pot fi ignorate. Unele analizoare XML pot genera o eroare atunci cind intalnese un model de continut nedeterminist, deci vi se cere si garantayi ci toate modelele de continu sunt neambigue. MEEEMND [bi punt de vedere tain modelee de conjnuk anbigue prexantae aa sunt = | nedeterministe: cosa ce Inseamnd c& ni este posibil x8 construit un automat cu | sti finite care’ 8 fe procesene. Poste cB ste posb convert un riadel de {conpinut heeterrinist fa unul care esta determinit din punct de vederaalgori- Lime, Gor acest lac nu este carentat. Prin imbricarea fragmentelor cunoscute de logica combinatoricd in unele mai mari, cea ce poate fi intimidant arunei cand este vizualizat in intregime poate fi destcut in pit componente, Din nefericire, din cauza limitirilor submulfimii interne 2 DTD-ului, aceasti facilitate este disponibili numai in DTD-urile externe. Continut terminal Frunzele arborelui documentului dumneavoastré sunt reprezentate prin continut termi- ral, din care avem un singur tip: #PC0ATA, Datele caracter analizate (Parsed Character Data) sunt formate din continut combinat care poate conjine atit text, cit $i marcaje Este cel mai general tip de frunza. Atunci cind utilizagi un model de continut combinat nna puteti controls ordinea sau apariille elementelor, cu toate ef putesi constrange ele- rmentele si fie de un anumit tip. 74 Fundamentele XML fnt-un element va fi utilizat ca sau ca mai jos, dar fara avea control asupra tipului clemencul: Este destul de simplu Sugestie dela Puteyi utliza acest tip de conginut de element pentru a inclde etchete XML BpbeeAmecom dintr- alté zon8 de nume, de exemplu, intr-un document XML, fér8 a viola ‘uals one DTD-ul documentul de baz8. Cu toate cS DTD-ul documentuiui nu ve avea filo idee despre ce inseam’ etichetele inserate, este de presupus c DTD-ul care administreazS zona de nume si prolectantul paginl vor sti. Continut EMPTY Daci elementul este declarat ca fiind vid (every), arunci el au are consinut. Deci dac dumneavoastri usilizayi icheti de pornire ~eticheti de incheiere, atuncitrebuie si garantagi ci eticheta de incheiere urmeaz’ imediat dup eticheta de pornire, ca into declarayie DTD: <1ELewent oricenune S1PTY> instangl dintr-un document XML: sau, in caz contra, epi genera o eroare de validare De asemenea, probabil ci veti bloca orice browser care int rumele s§ semene cu o eticheri vidi HTML. Deci acest Iueru, toate ci este perfect legal: in el dack se intmpla ca in XML, este nesigur cu < La urma urmelor, probabil ci este mai bine si utlizayio sintaxa specialé pentra etichete Vide, ca aceasta ‘Observayi c¥ exist un spaziu intre numele elementului si caracterul slash, iar acesta este ‘urmat imediat de paranteza unghiulard inchisi HEUIERRID | Gecarcéc clamsenisle vide sunt prin definiie vide, singural conlinet post pe ‘are il pot aves sunt atributele asocateflecdrui element vid, De obicel, orice ‘ontinut text poate finlus cu usuring inr-un atribut. Singur limitare reala este, ‘cB nu putetl extinde in mod tiple documenta in sine pein intermediul unul about. Existd dou8 except importante: din punct de vedere teoretic, 0 notate poate ‘pela un proces care s8 insereré mai mult continut, la fel cum se poste face uti= liz’nd Dynamic HTML, si este posbl s§ se transciud contnut cint-an fig extern utiizénd atrbute la un element ancor’ XLink. Pentru mai mule informati despre XLink, XPath si XPointer, stuiati Captcul &, . XPath’, si Capitolut 9, XLink si XPointer’, Indirect, ar fi posbil s8 utilize XSLT pentru a Gansforma un docu Tent bazat pe valoarea continut8int-un atrbut, dar aceasta va trebul sf mai astepte pind cind vom descoperi XSL in Capitol 13; Fol de sti in cascad8 si XLT 2 Definitiie tipurilor documentulul XML 75 Continut ANY Dintre toate declarariile studiate, aceasta este de neegalat in generalitate si inseamnd ‘exact ceea ce spune. Un element definit astfel poate congine absolut orice: Este echivalentul trecerii fiecirui clement in DTD-ul dumneavoastri, in orice ordine, dar salveaz mult timp necesar pentru introducerea datelor. Conjinutul ty este comod in primul rand pentru dezvoltarea unui DTD sau pentru depanarea unui DTD stricat, daci aveyi un document exemplu, dar nu si un DTD. Daci aveti erori de validare, 0 primi incercare ar fi sx modifieayi modelul de conginut Ia avy in locurile probabile pind cind DTD-ul este valid si il putegi incirca intr-un instrument de proiectare DTD. In acest punct puteyi incepe restringerea modelului dumneavoastri de continut. Dupi aceasta veyi avea un DTD valid. Cu un model de document mare, acest lucru poate fi obositor, dar este echivalentul tricoratului pentru un proiectant DTD; dupé un timp, procesul devine atét de mecanie incit nici nu vi mai gindiyi la el Crearea declaratiilor ATTLIST ATTLIST este un container pencru atributele asociate unui clement. Are o sintaxa simpli, dar alternativele pot fi complexe si grew de urmarit: «Cod davaScript . [A spune ci va trebui si figi atent atunei cénd faceti acest lucra este aumai pe jumitate adevirat. Observati ci nu este o eroare daci un agent utlizator extern esueaza in incer- carea de a ingelege o notatie, deci JavaScript-ul poate fi redatca un simplu text sau poate fi ignorat complet, in funcyie de combinatia analizor si agent utilizator. m(attet | attr2 | -) ~ O list enumerati de valori posibile pentru atribute. Multe ‘medi de ereare XML le afigeazd ca liste de selecgie aucoderulante sau pop-up pentru afi utilizate mai usor. Deoarece intr-un singur element pot exista mai multe aribute, un ATTLIST poate deveni complex. Oricum, toate se supun accluiagi set de reguli, deci print~o studiere atenté ar trebui 8 vi revenisi dupi orice confuzie nial. Subseefiunile urmitoare studiazi mai detaliat continutul atributeloy incepand cu sintaxa valorii prestabilite Specificarea datelor prestabilite dintr-un atribut Pozitia de completat cata-prestebitite din sablonul listei de atribute prezentat anterior in aceasti sectiune poste fi #REQUIRED, IMPLIED, o valoare prestabilitd sau #FIXE0 gio val- Acestea sunt exemple care funcfioneaza: “Ait waequrreD cit si #TUPLIED au au valori prestabilite deoarece ar fi fri sens in acest ‘context. Dacd atributul este #RE0UIRE0, el trebuie si fie acolo fie cd avem sau nu o valoare prestabiltd. Dac atribucul ete #1UPL18D,atunci atribunul nu este necesar si nu teebule si fie prezent MOQIEMD [Dac esat vecodatd Un termen confor, eruPLit0 este acela: El sund aproape | cag prestablit, Poste cB ab crezt in mcd nav c& valoarea.impicts" (implied) [este cea prestabiit8. Dar este. Znpl ed éste acolo pent & spune’ proceso- ‘Tului cS nu tebules¥ ii bath capul cButénd un atibu, deoarece este posi s& (fe gse, Assos carter ooo referee ow carte gre: tipurilor documentutui XML 7 ‘woLteo este o relicvd din zilele SGML-ului,cind descrierile simple erau uneosi sacrif- ‘IMF pentru un termen logic’, precisa ciruiorigine zac ascuns in mintes prafuts a cae Perogramator din primele zie ale informatii. Dup% pirerea mea, cuvancal este un plo paronim deoafece un termen oarecum inrudit si deseori confundat, infeed (debas) deserieprecis cee ce ar tebui sack procesorulcu un atribut ,implct' adiek eeredvcd existenga sau inexistenja unui atribut bazindu-se pe prezentarea elementului fn documentul XML insusi. Atribute de tipul CDATA ‘Acesta este foarte simplu, Este un sir de caractere. Exemplul urmitor defineste un ASiut numit sir, a cirui valoare este ODATA, gio valoare prestabilité pentru acel gir: ‘Observati ci, aga ca de fiecare dati, analizoarele care nu valideaz nu vor citi definitia sau valoarea prestabilité a DTD-ului extern. Atribute de tipul ID cestea se referi Ia ID-uri unice din documentul dumneavoastrd si furnizeazi o metodi et dga vd anigura cl exstd un nume disponibil pentru a forma celal eapat al unei Tegatud, Cu toate ef este un luera inteligent s% faceti aga, in practich, majortarea baswserclor probabil ca nu vor valida si mu vor vedea aiciodaei definiia {D-ului, Majo aretes instrumentelor pointer actuale cer prezenfa unui atribut de tipul ID numit £4 sau ane indiferent daci este sat au in DTD, lisindu-leastfel si genereze liber legivori Codul urmitor defineste un atribut 10 numit nod gi apoi prezints cum poate fi uilizat stributul inte-un document XML. declaragie DTD: ‘ani dintr-un document XML: ale mai sigurd at fi si defini atributul 10 cu numele io, aga incSt analizoarele care pu Oman si pow ‘sii deduci intengia, asa cum fac browserele HTML cu atributul nare. Ta sectiunea urmatoare veqi vedea dou’ moduri de face acest era Atribute de tipul IDREF “Aceasta este o metod’ de a vi referi la celilalt capit al unci perechi to/ddref. 1oneF indicd spreid declarayie DTD: <1ATTLIST ordcerune pointer IOREF #AEQUTRED> jnstanga dintr-un document XML: in termeni HTML, acesta este echivalentul brut al atribueului hret care indies spre © {Dare Sink sat de cards Tne este o rosine ol trebule 3 le ueceh pests te Ih special atund cand nu aveli aces la sclere tn document surs8, Genera | UrmBtoare de mecanisie de legate, XLink s XPointer XML, vl vor permite 8 Ut | faa automat structure docursentuli pentru a obfine aprospe aces fexutat sf Fin document afgat a 78 Fundamentele XML fntr-o lume ideala, ID-urile sunt articolele care aproape sigur e& vor riméne stafionare, micar aproximatiy, intr-un document. Din acest motiv ele sunt 0 finté bun’ pentru pointeri. Fragmentul de sintaxa UaLnanevalve utilizat in HTML pentru a indica loca din document funcyioneaza si in XML, singura excepsiefiind aceea ci sina trebuie si fie un ID. Corolarul la aceasta este ci ambele atribute, 10 si nane, trebuie declarate pentru fiecare sinti posibila, deoarece agenpiiutlizator mosteniti vor gisi clementul confinand atribu- tul nano indicat, iar agentiiutilizator cu suport XML il vor gisi pe 10. Puteyi, din punct de vedere teoretic, sf comasafi cele dou fntr-un singur atribut prin declararea unui atribut nane ca fiind de tipul 10, dact stti ci documentul va fi vizualizat utilizand mumai analizoare XML care valideaza. Din picate, eticheta 10 este de asemenea utilizati in HTML, intr-un fel de schizofrenie rezultata din incercarea de a pistra sintaxa veche gi de a crea una novi, care si fie mai sugestiva, Deci, este mai bine si declarayi doug atribute cu aceeagi valoare. Atributele de tipul 10 trebuie si fie unice fn cadrul unui document, iar atributele nane ar trebui si dubleze atributul de tip 1. Deci, in mod ideal, ar trebui definite atributele urmitoare in orice element care ar putea fi utilizat ca jintd a unci hiperlegituri SIATILIST oricelegatura id 10 fnupueo nave WUTOKEN FTHPLIED slte-atribute > Dack dorigi si fortati prezenta celor dovs atribute legitur la un element, le puteyi defi- ni dupa cum este necesar, astiel: Va rog si observati ci atributul nave nu poate fi de tipul 10, eu toate e& ar trebui si dubleze continurul aribucului ie, din moment ce analizorul va impune unicitatea atribu- tului 1, impiedicindu-vi si declarayi oa doua instangé a unui atribut de tipul 10. In uti- lizare, puteyiinstangia finta unei hiperlegituri astfl: continutoricetintac/oricelegatura> Daci s-a ales ca mumele elementului oricelegatura si fie a, atit browserele exclusiv HTML cde gi cele eu suport XML vor gisi aeceayilocasic, 1294" nanes
continutartcetintac/a> Aceasta este strategia utilizati de XHTML, deoarece este proiectat, in parte, atit i fie accesibil pentru cit mai multe browsere HTML mostenite, cit si si furnizeze avantajele extensibilitipii pentru browserele cu suport XML. Atribute de tipul ENTITY Iatd cum veti utiliza un atribut de tipul enr2Ty pentru a referi o notagie: fote-un document XML bun veri utiliza etcheta picture definits in DTD astfl: Definite tip lor documentulul XML 79 picture sro='gifpicture's ‘Aceasta este inci o metoda prin care XML cere ea dumneavoastr’ si fiti un guru multi- media, Cu toate ci sunt sigurd cf existi diferente importante intre diversele metode disponibile pentru a face acest lucru, intrebarea reali este daci trebuie de fapt ficut. ele comencarle mele efertoar ln nota in general prezenae anterior in acest cpl MDCERRD Wei place SS ris Seba acest ory Fl provik SS o fal Fae Cups acest capitol, dat asi procesorul XKL s8 ste despre toate tpurile multimedia posibile nu este 0 metod8 robust d& realzare a (ucruilor. in primul nd, Inseam cS ‘pute insera o imagine sau un fsier multimedia int-un document decst dacd puteti garanta c& tof cel care 7 vor ubliza vor folosi analizoare XML care val deazi. Aceast8 condi pare excesiv de restrictv8. Grupul de lucru XML al W3C._ pare s8 fi ignorat exemplele de plug-in-url pentru browsere si redirection&rile™. < ‘server-side, care arf facut posibils8 negosat\ cu agentul uilizator pentrUla sta bill aptitucinile sales s§furnizat, eventual, un fisier multimedia corespunzstor ‘Dac nu, agentul utitzator va sti cS trebuie $8 gBseascd de unl ingur Un asistent ‘orespunzstor, 25a cum se intémpls acum cy tipurle de continut MIME nerecu oscute. Trebuia furizat un mecanism mai bun, Negacierea conginutulu intre browse sf serve ar f metoda modems de furizare a acestel embitS}, deoarsce _Medile diterite ale utizatorlor pot necesta formate de figiere total dferte, Acestea flind zise, conventia functioneaza, chiar daci este incomodi, si poate va fi inlocuitd in viltor cu un mecanism simplu care jgnori maginatiunile existence in favoarea unei alte metode de identificare a tipului de conginut. Standardele W3C pentru URI-urile petsistente descurajeazi cu putere legarea locatillor de tipul de date si de metodele de acces, care sunt violate de sintaxa existentd a notapilor, Deoarece este posibil ca tipurile de date si se schimbe in viitor, W3C recomandi ca negocierea continutului si aibi loc intre server si agentul utilizator, pentru a determina ce tipuri de date sunt suportate si ce tipuri sunt disponibile. In acest caz, puteyireferi o inotatie ca un nume simplu, cum ar fi .pozamea', sisi lisayi serverul si igi dea seama ce gen de imagine este disponibili pentru acel agent particular si s¥ o furnizeze, spunind agentului ce a furnizat ca si nu apari greseli. Dupi cum se spune, totul se va rezolva pind la urmi, deci pute sta linistit deoarece in mod sigur situayia se va schimba cindva, in vitor. Atribute de tipul NMTOKEN Conginucal unui atribut este constrins si arate ca un nume simbolic, dup cum este definit in Recomandarea XML. Cu alte cuvinte, el este format dintr-o liter Unicode/ISO, o ideograma, o liniuyd de subliniere sau doui puncte urmate de litere, ideograme, cifre, puncte, cratime, liniure de subliniere sau doui puncte, repetate de cite oti doriti, in orice combinatie, Mai simplu, aceasta inseamni ci un nume nu poate incepe cu o cifra, un punct sau o cratima, cu toate ef le poate congine pe oricare dintre acestea, plus liniuje de subliniere sau dou’ puncte, dupa caracterul inital, dar nu si alte simboluri Tipografice cum ar fi asteriscuri, slash-usi, lini, ampersand-uri sau altele de acest gen. Expresia wlitere gi ideograme" congine caracterele pe care cineva le-ar utiliza de obicei pentru a scrie cuvinte fnte-o anumiti limb. De exemplu, in chineza acestea ar putea fi caractere simple indicind euvinte complete; in japone23, caractere indicind silabe com- plete; si in multe limbi,litere individuale indicand consoane si vocale eare sunt combi- 80 Fundamentele XML nate pentru a alcitui cuvinte, Combinayile posibile ale acestora extind ingelesul numelor pentru a include aproape intreaga populate alfabetizata a lumii, in orice limbi ome- Acestea sunt NUTOKEN-uri ‘une fume .sufix-nume tune. sutix sumed. parte_sutix punebaltele s9baloane Svaloare une funetie) Degi pusine texte in XML, cel putin in englezi, demonstreaza uiilizarea ideogramelor si a Serpt unio non-ltine int-un mum de element, printre alte motive din eauza dificult de scriere a lor posibilitatea exist gi va i utlizata considerabil in acele domenii unde este nevoie de ea, Figura 3.3 prezinti un exemplu de document XML in limbs japonezi, dispo- nibil pe Web, in situl FujiXerox la http://w. txis.co.jp/04S/sont/xai/charset /utt- B/weekly xn). FIGURA 3.3 Un exemplu de document In limb jeponeré, marcat cu tishete XML japoneze sugestive, ‘cem>a997 caR> Lesh > casac/a> name eS) esame/e> ee canneuars Seame> ABE KHLE? 6-08 OEE SS F39355-23¢/88— Legitura la acest exemplu a fost furnizati cu amabilitate de citre situl Chinese XML ‘Now! al Academiei Siniea, a hetp:/erw,asce.net xn. Situl congine mumeroase legituri Definitille tipuritor documentulul XML an la informatii de interes pentru dezvoltatorii de documente XML in chine2i, seturi de testare pentru a confirma aptitudinea de a manevra corect intririle in limba chinez& si exemple de documente XML in limba chinezi. Atribute de tipul NOTATION ‘Acestea trebuie si se potriveasc’ cu definiia miToken gi sunt date inte-o list simpls de alternative care defineste enumerarea tipurilor posibile, Dintre acestea poate fi ales unul si numai unul. O valoare prestabiliti poate fi specifieati, dar nu este obligatorie. In uti- lizare, acestea arati astfl: ‘Aceeasi enumerare NOTATION va arta astfel,atunci cand va fi d biliti: Toate notagiile trebuie declarate inainte de a fi utilizate intro listS de atribute. th cu o valoare presta- Atribute enumerate Atributele enumerate arati ca si cele din exemplele anterioare si sunt definite uilizind o listi de alternative, dar nu referd notapi. Ele sunt comode pentru crearea listelor de ‘opfiuni. Majoritatea mediilor de editare XML vi oferi o mica listd autoderulanté pen- tra alegerea valorii dorite. Codul urmétor prezinti un atribut enumerat simpla, asa cum este definit inee-un DTD: Asemenea atributelor noTaTron, atributele enumerate pot avea o valoare prestabiliti Fragmentul de DTD de mai sus defineste un atribut, chose, care poate hua valorile *yes* sau *no* gia cirui valoare prestabiliti este "yes". Utilizarea constructiilor de tipuri de date XML speciale Desi constructiile din subsectiunile urmitoare apar mai degrabi in document decdt in DID, functiile pe care le deservesc sunt destul de inrudite cu conceptele discutate deja in acest capitol. Instructiunile de prelucrare permis aurorului documentului in HTML, dar sunt mult mai generale. Observati in special fapeul c& ele ru folosesc etichete comentariu SGML pentru a ascunde text, Acest [ucru nu este reco mandat in XML deoarece analizoarelor XML nu li se cere si tansfere textul comen- tarilor agentului utlizstor. Sectiunile coATA constituie o metodi rapida de a trece inte-o secventi escape un intreg bloc de text, deci orice caractere de marcare incluse sunt tratate ca text, $i nt ca marca} 82 Fundamentele XML [Asemenea unei descrieri de conyinur co8ta ntr-un DTD, ele spun analizorului ¢& nu tee- bbuie si incerce si analizeze textul continut in element. Instructiuni de prelucrare O instructiune de prelucrare este transferati direct aplicapiei! fark a se incerea evaluatea i Ea incepe ou si nu poate contine earacterele xml in nici o com- binapie de tipuri de litere. Sugestie dela Dersoane au Lanjt dup un mecanism care s¥ incudd date Dinare GBbscAmecom retin eer XML, Ny al webu astptats nccares referee Nisrimest's' eytecne s nu ma trebul 58 vB ntrebati dacbdatele mai sunt acolo unde ‘e-a Vset ultima dat, Intregu ser este un glob mare de date. In teorie, aceasta este 0 dee bund, dar garentarea faptulicsirurle de inchelere nu apa in format bnar este o problem ciclsprobebt am cee prea mutt ca un procesor XML so rezoe Utlizind o instructiune de prefucrare, puteyitransfera date direct unui anumit interpreter 11> O eticheti CoATA este un avantaj. Puteati face acelasi lucru prin includerea in secvente scape a tusuror caracterelor speciale, astfel orice fel de text vechi Snclustv sennele Alt; si Samp; si chiar exemple de etichete ML SIt;IENTITY Lista — dar ar fi durat probabil mult mai mult si exista o mult mai Singura constrangere este accea ci datele dumneavosstri nu pot confine secvenga 11? izarea secyiunii COATA, probabilitate de a gresi care si incheie secjiunea, Figura 3.4 prezintl FIGURA 3.4 O pagina XML rezenting ular une! secuni GOATA, penty eva seovarele escape dntto secjune do marca, tn browsers! SGMLKH MatiDoc Po, This is a first level header Diferenta dintre un XML construit corect gi un XML valid Diferenga dintre un XML consteuit XML valid i pe li i it corect si un XML valid este simpli: pe Ling fapeul | CIENTITY 8 header PUBLIC *-//Leesnne con! ‘Header OTO//EN" Spetp:/ , deeanne.con ML /heeder .6t6">> ‘sneaders CIEATETY & footer PUBLIO *-//Leeanne..con//Footer OTDI/EN" “hetp:/ Imm. Leeanne,.con/ XML footer .até">> Mtooter > “Acest mecanism este foarte mult uriizat pentru a apela figiere de referinge enttate carac~ ‘ee dar poste fi lizat. si pentra alte scopuri. Fil aten,torusi, deoarece procesoarcloy ToonoTvalideazi le este interzis s4 interpreteze orice entitate analizati care urmeazi pf o referinga la 0 entitate parametra externd care nu este cit socal este ta steven fieciel enstiti analizate este nedefiniti dups orice referinss quiernd care nu este incorporati in document. De fapt, este corect ca un procesor care nu valideazi si ignore total enttiile externe. Defini tipuritor documentulul XML 85 Indicarea unui DTD local Cu toate ci un DTD local este, de asemenca, si un DTD extern, pentru referirea unui DTD local se utilizeaza o sintax’ ugor diferiti deoarece nu trebuie si includ de regulk co referingsinte-un catalog. DTD-urile locale pot fi indicate uilizind declarajia DDCTYPE astlel, dick DTD-ul se afli pe hard-discul local: “1U0CTYPE article SYSTEM ‘article.cta"> ( serie de fragmente de DTD-uri poate fi indicatd ucilizand referinge entitayi parametru camai jos: [ SIENTITY © header SYSTEM *hesder.cte">> seeders > Mooter; > ‘Acest mecanism este foarte mult utilizat pentru a apela fisiere de referinye entitate ca- acter, dar poate fi utilizat gi pentru alte scopuri. Fiti atent, totuyi, deoarece proce- soarelor cate nu valideazi le este interzis si interpreteze orice entitate analizat’ care ‘urmeaz dupi o refering la o entitaze parametru externa, inclusiv un DTD, care au este iit, Motivul este ci starea fiecirei entititi analizate este nedefinita dup’ orice refering externi care nu este incorporati in document, deoarece o valoare poate si fie sau nu serati pentru aceasta in entitatea externi care nu este cititd. Un analizor care nu valideaza nu are de unde si tie aceste lucruri. De fap, este corect ca un procesor care mu valideazi si ignore total entitigle externe. De ce ne batem capul, totus, cu procesoarele care nu valideaz8? Nu ar f mai bine $8 vaidim totu? fntrun singur cuvént, nu! inchipuit-v8 c&t de > srsolatt; Cella care tocmai ne-am uitat este definit ca <1-- Left single quotation mark, U#2018 1SOnun --> {n interiorul serului de caractere speciale gi este apelat astfel: > sumu.special; Daci vet face vreodati gi ceva matematicd, atunei veri avea nevoie gi de acesta: ENTITY & HTHLsynbo) PUBLIC *-//GC//ENTITIES synbols//EN//HTHL* "nttp: / ew. x ,org/TR/xhtnlt/OTD/ shen -synbol ent "> sera sybol; ‘care contine Iucruri ca <1-- approxinately equal to, Us2245 I8Otech --> SIENTITY asynp *AA57765"> SLENTITY ne ag60 ENIITY equiv “6#B80T;"» ENTITY Ye *4y08085"> ENTITY ge ause0s;"> SIENTITY sub °8#8694}"> SIENTITY sup "BHBE95;"> Sheader; IENTITY & footer SYSTEM *nullfile.dtd™> re nul, astfel: Definitille tipuritor documentulul XML 87 footers Atunci cind doriti si stlizati efectiv informaria antet (header) si informayia subsol (footer), puteti si suprascregi aceste valori cu uncle care fac efectiv ceva, de genul: > {In capitolul urmator vei cercerao alti metod8 de a insera etichete noi, sau rammuriintregi EntitSti parametru O enttate paramear ete o tod de soca date (sa da indica spe ele pens o wi izare ulterioar Entitigile parametru sunt valide numai in interiorul unui DTD gi au comportament diferie in submulimea incernd a DTD uli in submis xternds Aces compor= tament asimetric a fost ales pentru a usura analiza unui DTD intern de caitre un proce- sor XML care nu valideazi. * an MEER [Dud ce 2} petect atit lin dariicind aifertcle maduri in care pute tia entatie parometru pentri a v8 face vote mai uscar8, este darecim ironic cS! | majoitatea propunerlor de scheme XML aproape cB renunt la entitle pereretrd: it fovoarea nel sintaxe gen XML, in opozte cu una gen DTD. Aso se intB. Intr-o entitate parametra putefi si puneti orieite Iucruri dorigi gi si le utili ate parametn punefi oricite Incruri doriti sisi le utlizayi aga cum origi. O utilizar tipi este de a citi fsiere externe dint-un DID, fie din submultimea ‘extern, fie din cea interna, O alti utilizare obignuiti este de a stoca bucifi integrale din plrgi de mareaje pentru a putea fi utilizate intr-un mod mnemonic ca o prescurtare pen tprcprecomplse. Petia bucipile de marcaj care sunt utilizate ir gi iar, cAstigul in Poate veti doti si parcurgeti Capitolul 4, ,Extinderea definitiei tipului documentului prin modifies locale", pentru un exemplu complet de lucru cu enttii parametra Exemplul urmicor eninde un elemen defini, folosind ent parame deonrece © copie a saa fost ficutd in submalfimea DTD-ului intern: {ELEMENT blink SFlow;> > SIATTLIST Blink 88 Fundamentele XML ie ity awrite class ComTA —#TNPLIED style COATA —#TWPLIED ttle coATA. —SIHPLIED Jang husvoken erected xollang —MTOKEN #INPLIED ain (ite|re) HIMPLTED onclick GOATA.—INPLIED ondbiclick GDATA —#INPLIED fontousedoun COATA #TUPLIED fonmouseup COATA TNPLIED onmouseover GOAT FINPLIED onmousesove COATA — IUPLIED onmouseout | COATA IMPLIED onkeypress CDATA —ATNPLIED onkeydomn GDATA—ATMNPLIED fonkeyup—GOATA.—ATMPLIED ‘Aceastl extindere este in mod evident mai greu de citit decit echivalentul cu entityi ‘parametru, mai ales in cazul in care aceasti constructe este utilizati in mai multe locuri Tabelul de entitati W3C Tabelul 3.2 explick pe scurt comportamentul entitiilor. Chiar daci de fape nu este torul atit de clay, un tabel aseminitor este uilizat fa Recomandarea XML 1.0 a W3C in incer- cearea de a claifia regulilecirora li se supun enttatile in diverse contexte gi este repro- dus sau parafrazat aproape peste tot: Comiportament2le tipurior de" entity XML T: Neanalizate Caracter Tipul Parametru Generale Generale entitatii interne externe analizate - Relernfin Nueste Incluse __Incluse dactInterzise _Incluse recunoscut sevalideaa Noeste Inclusein Interzise __Interzise _Incluse valoarea unui recunoscut _valoriliterale aribut - ‘Apariica Neste ‘Inceraise _Imterzise Noe valoare a unui recunoscut recunoseut atribut Referinfiin Incusein_Derivate_Derivate Tnelase valoarea unei_valori literale Refering Tncluse ca _‘Interzise _Interzise Taterzise _Interzise DID PE ———————— Definitile tipurilor documentulul XML. 89 Haideri si incercim si clarficim aceasti picituri de informatie. Prima linie a tabelului se refer’ la locayile din documentul in sine. A doua si a trcialinie se refer’ la locati fie din document, fie din DTD. Liniile finale se refer numai la locayii din DTD. Tabelul fncepe si aibi sens numai atunci cind realizagi e8 informayia prezentati este concisi, Existd suficiente intriri care va spun numai ci un anumit tip de entitate poate si apari {ntr-o singuri locafie. Mi intreb daci tabelul este chiar atit de valoros, in ciuda faptului ci oameni il vor copia sau parafraza. In Recomandarea XML 1.0 actuali, aproape toate informagile reale despre tabel sunt trecute in textul care il refe Haideri si revedem cele eiteva fragmente de informatie conyinute in tabel, sub forma a sapte reguli simplificate: 1m Entitiile paramerru pot fi utilizate numai in DID. tn exteriorul DTD-ului, secvenga care le apelea23, Snane;, este tratati ca text simplu. win interiorul unei declarati,entitigile parametru sunt extinse, dar numai pentru sub- ‘mulfimea externd, In exteriorul unei declarati,entitiyile parametru por fi utlizate numai pentru a insera declaragi de marcare complete, punind inainte si dupa fiecare declaratie cite un spatiu. wm Entitiile generale interne pot fi utlizate numai pentru a insera text gi sunt derivate in DTD. Aceasta inseamni ci ele sunt recunoscute, iar numele lor este introdus iatrun tabel de ciurare, fir valoare curenti. Atunci cind sunt declarate, intrarea de ciutare are o valoare asociati ei, Aceasta este o metodi obscuri de a spune ci le puteti utiliza Snainte de a fi declarate m Entititile generale externe analizate sunt tratate c2 si entiigile generale interne, sin ggura excepfie fiind aceca ci nu le puteti referi in valoarea unui atribut. Aceasta se datoreaz’ dificultitii manevritii codificdrilor caracterelor in contextul unui atribut 1 Enticipile neanalizate pot fi utilizate numai ca un nume in declaragia unei enttiti, In acest context nimic altceva nu este recunoscut, inclusiv entitigile caracter. Singura responsabilitate a procesorului XML este si informeze aplicatia de asistenti, declarata {in declaratia unei notati, ci entitatea neanalizati trebuie prelucrati. wm Entitiilecaracter sunc tratate ca i enticiile generale, singura exceptiefiind aceea cd ele sunt incluse imediat in toate eazurile. Cu toate eX sunt universale, in majoritatca cazurilor cle ar trebui utilizate ea entitigi generale dinte-un set predefinit. Referingele umerice brute, eu toate ef sunt permise, sunt aproape imposibil de citi gi ingles Deci, mnemonica tne; este mai usor de identfieat decit echivalentul, indiscutabil mai dificil de reyinot, 8#6800;, cu toate 4 ambele refera simbolul ,diferit de* (@). Entititile parametra sunt atat de puternice, de fapt, incit standardul XML 1.0 are griji si infrineze puterea lor limiténdu-le prima data la DTD gi apoi limiténd utilizdrile cele ‘mai complexe la subsetul extern al DID-ului, unde procesoarele XML care nu valideaza nu se uith niciodaea (sau rareor Sugestie deta Dack utilzai entity) parametru pentru a stoca tex, ff atent deoarece pro: rLeeAnne.com cescarele XML insereazS céte un spatiuinainte si dup ele. Aceasta se face ies teweae pentru a descuraja oamenil si le utilzeze pentru a stoca biocuri mici de text din care apois3 formeze cuvinte (sau mal ales marcajel). Nevoia de entitti parametru, dupa toate probabilitiile, va dispirea atunci,cnd una sau ‘mai multe propuneri de scheme XML vor castiga teren in mintea utilizatorilor, Dar pani 90 Fundamentele XML: atunci va mai trece un timp, deoarece standardele care se dueleaza trebuie si se impace Modificarea unui DTD XML Diverse mecanisme sunt incorporate in DTD-urile XML pentru a vl permite si modi- ficayi un DTD existent. Primul dintre acestea, marcajul conditional, webuie incorporat in DTD atunci cand se creeazi, dar dupi aceea puteti modifica din mers comportamen- tul siu prin suprascrierea valor uneia sau mai multor enticii parametru. Celelalve meca- nisme, deserise in secfiunile urmitoare, adugarea de atribute sau clemente noi, necesita ‘nal pusina planiicare, dar efectele lor sunt invizibile pentra ceili utlizatori ai DTD-u ‘Alegerea mecanismului corespunzitor fiecirei situati este o decizie de proiectare. Marcaje conditionale Multe persoane nu vid rostul marcajelor conditionale. Totusi, aceasti facilitate oferi proiectantului DTD-ului posibiliatea de a crea versiuni de qdepanate” sau alternative Ele DTD-ului, care rezidi in fisierul in sine, de unde nu se pot pierde si unde puteyi incu raja persoanele care modilicd orice si se asigure ci manevreaza ji partie conditionale. Marcajele condiionale wtilizeazi mecanismul obisnuit al enttayilor parametru pentru a declara articole particulare ca avnd valoarea Y6NOAE sau INDLUDE. Ele seamin§ purin cu secfiunile COATA, singura exceptie fiind aceea cX acest continut trebuie si fie un marcaj fncadrat de secvenge condigionale speciale de pornire si de incheiere: CIENTITY & release IGNORE" > > ‘1tséabug;t iia Pentru a comuta inainte si inapoi intre versiuni care permit si care nu permit anexarea Spacer iy ome ese emer le rey Conners in submuljimea interna a DTD-ului. Observati cd sirurile !NoLUDE i T0NORE sunt cuvinte cheie XML $i trebuie rise, dup cum se vede, cu majuscule; oricum, pentru parametri pputesi folosi orice nume adecvat. Observafi, de asemenea, c& sebug este doar o valoare ‘Reest mecanism il putei utiliza pentru a construi variante DTD de o complexitatearbi- trarl, printr-o alegere rapionalS a secriunilor care si fie in mod selectiv adugate sau eli- inate si prin crearea entitiwilor parametru care si le selecteze sau si le ignore. Este putin probabil ca acest instrument sk fe uilizat de multi proiectanti de DTD-uri pentru proiecte mic acesta fiind proiectat in SGML pentru medii ew zeci de realizatori de Eoduri care hucreazi mai multe luni sau chiar ani. Atunci cind DTD-ul dumneavoastri are mii de lini, nu vreqi si incurcayi lucrurile cu modificiri de depanare ad-hoc. Faptul & puteyi utiliza acest mecanism in alte moduri este un bonus. Definitille tipuritor documentului XML. on Utilizarea atributelor noi Un atribut poste fi adugat unui element in orice moment deoarece listele de atribure amt concatenate, jar prima declaragie a oricirui nume de atribut ate prioritae fata de Stiee declaratie urmitoare, Daci nu existl copii, atunci atributul este adaugat Ia lista Ginbotelor existence, sau se croeazi una novi daca atributele nu au fost declarate amte- Hor. Capitolul 4 dezbate in detaliu acest subiecr. ‘Trebuie doar si adZugayi o declarayie ATTL1st la submulyimea incerni 2 DTD-ului sau, in mod echivalent, un fisier DTD extern care copiazi declarayia noului dumneavoastrs Turibut inainte de a-l copia corect in DTD. Aici, noi am adaugat Ia atributul alt un cimp fecesar pentru o imagine, pentru a incuraja oamenii sail foloseascl aya cum recomands WAL -1D0GTYPE 00k SIATILIST inage alt CDATA #REQUIRED> P Utilizarea elementelor noi Cu toate cf poate fi ieutd cu usuringd, adfugarea clementelor este puyin mai dific decitadaugatonsteibutlor,Tebsie fiw oe pentru dln DID-ul existent ssh srcurgeti un proces uneori lung pentra a le potrivi, dar in mare misurd este un Iucra Teor Capitelul 4 studiazi in deal acesesubiect. Acest exemplu extrem de simplificat Uullizeaz# submulfimea intern a DTD-ului pentru a adiuga un element nou, postit, cu tun model de conginut simplu pentra DTD-ul book: <1D0CTYPE book { ‘CIELEMENT postit #PCOATA > > Nu se defineste un loc pentra clement in modelele de continut ale DTD-ului, si nu se definese nil stributele pe care este posibil si le ia elemental, dar vezi vedea in Capitolul ‘4 cam le puteri realiza pe amandous. DTD-uri XHTML XHTML este o incercare de a copia, in limitele XML, funcyionalitatea lui HTML 4.0. Catone ct exista diferenfe subiile, este in mare masuri un succes. Documentele HTML validate pot fi convertite destul de ugor in documente XHTML valide in Capitolul 4, veti stadia ideea modificdrii DTD-ului XHTML pentru a-l adapta cerin- telor proprii, ceea ce vi ofer3 oportunitatea de a studia DTD-ul in detaliu. DTD-ul XHTML tranzitoriu se giseste la sférpvul acest’ ciyi. Studii de caz {In acest capitol ati studiat in detaliu DTD-urile XML. Ar trebui si intelegesi cam sunt construite, atatca intreg, ct sin parte. Ficcare declarafie cu DTD-uri are o sintaxi exact Ca reguli care webuie urmate, iar macro-facilitatea XML ~ entiitile parametru ~ are un Set de reguli chiar mai strcte, cae ii limiteazA utilizarea mura la submulkimea extern a DID-ului 92 Fundamentele XML Oricum, fntreaga problema a definiri si utilizarii DTD-urilor este una spinoasi in XML. Majoritatea lucrurilor intr-adevir utile pe care ati vrea si le facey, cum ar fi includerea intr-un document de ilustrati grafice sau definirea de 1D-uri in interiorul tunui document astfel incit referinge stabile la anumite local si poati fi indicate uti- lizind XPointer si XPath, necesiti ca DTD-ul si fie analizat de un analizor care valideazs. Analizoarele care valideaz’ au propriile lor probleme. Deoarece ele necesité ea doc ‘mental si fie citit complet inainte de afigarea oricarei piri din el, ele incetinese inc carea paginii, vizualizarea ei devenind iritanta, cu exceptia cazulu in care documentul se afld pe hard-discul calculatorului pe care dorti si il vizualizayi, Deoarece este posibil ea DTD-ul in sine si nu fie disponibil la cerere, sau poate necesita terminarea unei secvente de apel destul de lungi, vi putes’ astepta ca timpul de incircare si varieze destul de mul chiar si numa din aceasti cauzi. ‘Anumite browsere XML pot incerca si evite aceasti problemi prin incorporarea infor- ‘nutilor anumitor DTD-ur in cod le dar aceasta dick o problema de lstens3stncl cind un DTD se modific,indiferent de motiv. Cu toate ci DTD-urile ar trebui si nu se modifice nici micar la perioade geologice, au existi nici o metodi de a asigura acest fucra decat bunivoinga autorului. Bentru orice astél de schema care imbunitafeste timpul de incircare a documencului prin ascunderea informariilor in browser, existd posibili tatea ,validirii* fay’ de o copie locald incorecté a DTD-ului, | Extinderea ~ definitiei tipului documentului prin modificari locale Inacest capitol _ Extinderea unui DTD Crearea extensiei unui DTD Crearea unui DTD extensibil Crearea unui DTD modular Furnizarea de valori locale unui DTD extern Utilizarea DTD-urilor XHTML pentru redarea documentelor XML in browserele mostenite Studii de caz Extinderea unui DTD fn Capitolul 3, .Definitiletipurilor documentului XML“, aji descoperit ce era un DTD si afi invigat despre posibiltarea de a-l extinde. Deoarece un DID XML este baza Schimburilor intre mulfi autori de documente sau intre cei care erceazi automat docu- mente, #i deoarece DTDeul actual poate fi arhivat ints-o locatie asupra clreia nu aveyi Control, deseori este imposibil si modificayi DTD-ul fara acordul tururor utlizatorilor DTDeului, Dar uncor existd comunitigi locale sau grupuri de interes pentru care DTD-ul nna contine unele caracteristii care a faclita comunicafia, in ciuda faprului eX alii nu ar yeden motive pentru care si il modifice, deci este imposibil ca toatd lumea si cad de cord asupra modificarilor care ar trebui ficute. In continuare sunt prezentate tei metode prin care un DTD poate fi extins local far a modifica submulyimea externa a DID-ului 8 fn submulsimea interna a unui document DTD puteti anula valorile evrtTy din sub- rultimea externf; aceasti metodi este subiectul unor constrangeri destul de severe. tla submuljimea interni a unui document DTD putefi anula liber sau puteti extinde declarajile aTTUIST din submulyimea externt. 1m Pategi adiuga elemente gi orice alte declaratiiatdt timp cat ele au exist’ deja in sub- mulfimea extern XML, care, de cele mai multe ori, este DTD-ul in sine. Acest lucra poate fi foarte util daci DTD-ul extern il permite. 94 Fundamentele XML RUE se aay Sh ents pram eters are ru eae cA en procesor— re valdead,sund toate entibe 5 decorate deste de abuts cae "Cfmened Sint ignore, Ca toate cd ete adeevat acest comportarent poste 3 ‘in multe situaii,aceste trei optiuni vi oferi o Mlexibilitate considerabils si v4 permit st extndeyi dew de vsor un DTD, cu conifacaproiecanul DTD- ul 8 permit seest lncru, V-ar ajuta mule e& DTD-ul si fi fost proiectat pentru o extensibilitace wsoars siexistd diverse tehnici pe care le puteyi utiliza pentru a controla exact care pirti ale DTD-ului por fi modificate si care nu, daci aveti plicerea deosebita de a proiecta pro- priul dumneavoastri DTD. Adaugarea unui atribut nou la un element existent (Cea mai simpli metodi de a adiuga un nou volum de informasii este de a-l plasa intr-un atribut, Deoarece un ATTLIST poate fi ascuns sav extins cu suring’ in submulkimea local a DTD-ului, puresi si adaugari un atribur la un clement sau si ii modifica definitia doar prin redefinirea ATTLIST-ului asociat Tui, Pentru a evita conflictele, XML fuzioneazi falorile din ATTLIST-uri care se refer la acelasi ELBIENT, Dac un atribut are exact acelasi ynume, atunei prima refering’ (adicd cea din submulgimea intern’ a DTD-ului) este pas trata, chiar daci un ATTLIST ulterior utilizeazi o alti definigie. Accasta este o problemi teu instrumentele exclusiv-SGML mai vechi, deoarece SGML nu permites redefinirea unui ATTLIST pind cind XML a impus acest lucru. Dar toate instrumentele SGML/XML moderne ar srebui s& accepte aceasti wtilizare. Ca un exemplu, haideyi si incepem cu urmitorul fragment de DTD, numit book.cte SIELEVENT title (4PODATA) > SITATTLIST title author COATA #REQUIAED . {itletype #OOATA “Fiction* ‘Acesta trebuie si fie modificat prin adiugarea la descrierea formald a tttului efit a unui ateibut referitor la limba gi modificarea categoriei titletype (tip ttlu) presuabilite din Fiction (Fieriune) in NonFiction (non-ficyune). De obicei, la submulsimea interna tre- buie adZugati o singur’ instrucyiune, noul ATTLIST. Acesta va fi adiuget la documental XML insugi fn submmulgimea interna a DTD-ului, ast! P Sugestie de la xViL permite ca un ATTLIST s8 fle redefintt de cate or don, dor prima Behemesom sta a orn abot dente mos permanent SCL 2 fest Nicihtewsst radefinit doar recent pentru a fi conform cu acest comportament, deci instrumentele SGML mal vechi pot lansa o excentie atunc cénd sunt intél- rite aceste redefinin muttiple Extinderea definitiei tipulul documentulul prin modificéti locale 95 Jn utilizare, atributul nou gi valorile prestabilite sunt adaugate elementului titte (titlu). Deoarece aproximativ tot ce putefi face cu conginutul unui ELEUENT se poate face gi cu atsibutul unui ELEMENT, putepi adjuga destul de multe la un DTD prin aceasti metoda, atat timp cit acolo exista un clement la care doriti si adaugati datele dumneavoastra. Ad&ugarea unui element nou . Adaugarea de elemente noi este mai delicati, Simplul fapt cX puteti defini un ELEWENT now nw presupune neapirat ci existi un loc potrivit pentru a-l plasa in structura docum tului ca intreg. $i penteu a inriuedsi si mai mule lucrurile, mecanisml prin care este posi bil si modificari cu ugurinya sau si extindeti un DTD extern - submultimea interni fost sabotat de citre proiectangii XML, pentru a impiedica utilizarea de citre dum- neavoastri a entitigilor parametru in orice alt loc decat in nivelul superior. Cu alte cuvinte, codul seizerses este legal in submulyimea intern’, < jn timp ce mult mai valorosul nu este, Aceasta inseamni ci nu vi puteyi usura viaga prin uilizarea acelorasi nota pres- curtate pe care le putea utiliza fn submultimea externi a DTD-ului. Trebuie sf extindeyi totul pentru a elimina orice referinta parametru din interiorul altor elemente. Accasta face programarea un pic mai ugoari pentru persoanele care dorese si analizeze submultimea interna si un pic mai dificla pentru persoanele care doresc doar si lucreze cu 2. Utilizarea entitatilor parametru existente pentru a modifica DTD-ul Aceasta este 0 situate care are mare nevoie de un comportament orientat spre obiecte, jar XML are un mecanism care permite o mostniveLimiatd = parametel EXTTY. I DTD trebuie si existe entitigi paramerru care si poati fi anulate inainte ea dumnea- voastri si puteti extinde DTD-ul in aceasti manieri. Exemplul pentru acest proces utilizeaza DTD-ul XHTML 1.0 Transitional DTD Draft, dezvoltar de W3C, deoarcce a fost proiectat pentru a putea fi extins ou uguring’. Primnul lucru care trebuie observat este cX aproape torul este definit ca ENTITY inainte de afi uti- lizatea si continu ELEVENT, Aceasta permice o flexibilitate maxim in tratarea submulsimil ‘externe, mai mult sau mai pusin ca un object. Punctele de inserare trebuie mutate in submulfimea intern a DTD-ului, iar toate refe- tinfele parametru ENTITY trebuie extinse la echivalentele lor, ceea ce poate fi plctisitor, dar poate fi ficut fara un efort excesiv. Cu suficientd arent, acest lucru poate fi fkeut chiar si in cele mai complexe instange, presupunind ci entiratea este utilizatf intro manieri modular. Dact entitatea este urlizat8 in mai multe locus, fiecareutiizare trebuie cercetati cu atengie pentru a vi asigura cX modificirile dorite au strick in mod nein- tenfionat altceva. Ca un exemplu practic ne vom imagina ci, in timp ce eitii DTD-ul XHTML 1.0 ‘Transitional DTD, observati ci W3C nu a trecut eticheta dumneavoastra HTML prefe- ati legendara poate si apari atit in-line cit si ca etichetd de bloc, este logic si se inceapa ciutarea intr-o locatie care accepti etichete asemanatoare, cum ar fi si ‘. Faptul ci aceste doui etichete nu sunt limitat la nici un tip poate fi observa chiar din inspectarea DTD-ului, care este documentat intr-un mod admirabil. Urmatorul cod este codul sursi efectiv al DTD-ului XHTML 1.0 DTD, care este utilizat ca un exem- plu de DTD care nu poate fi modificat la sursa sa nste Inserted/Deleted Text paaantae ins/del are allowed in block and inline content, but it’s inappropriate to include black content within an ins elenent occurring in inline content. - ‘SIATILIST ins Nettrss cite suats nurse datetine Datetine; IMPLIED “SIATILIST blink sattrs; «ing» esce definie utilizind o entitate numit Flow, deci putem spera cl se va strecura in elemental nou, deoarece entitifile sunt cheia extensibilititi usoare. In primul rind, ent tatea Flow trebuie extinsd int-un mod curat, Referindu-ne la codul exemplu, #Fl0w este definita ca o combinayie de mai multe tipuri de enttipi parametru gi un tip de element ca acesta: Dupi cum puteri vedea, entitatea Flow utilizea2i o serie de entitii parametru pentra a-fi defini modelul de conjinut. Sugestie Gu toate cd este obostoare, extinderea entitaior parametru este un proces Bikestenecem foarte mec e ot oat automata ia med prefab ulnd ‘Wow © 26 un program simply Java, sau chiar Per. Extinderea entittilor parametru Prezenta entitijilor parametru in modelul nostru de conyinut Flow ne creeazi o mick problemi deoarece noile entititi parametra dezviluite trebuie extinse inainte de a putea Continua. La naibal Amintiqi-vs, entititile parametru trebuie si fie definite inainte de a putea fi utilizate. Pe de alt parte granulozitatea find dezvaluitd de acestea inseamn’ si Ga exist mai multe ganse de a gisi locata ideald. pentru orice modificare dorits. Vom fncerca si neglijim fapvul e%, inainte de a incheia, fiecare entitate parametru vizibilé acum trebuie de asemenea extinsé, inclusiv cele din ATTLST, fiecare avnd mai smulyi str mogi, Of! Nici micar Sisif rostogolind la nesfaryit bolovanul in sus pe munte, num pentru a-l vedea rostogolindu-se inapoi, mu a avut o sarciné mai demoralizanti. Dar tot ce puter face este si incercim. Dupi urmirirea intregului DTD i extinderea tuturor enticiilor care apar pe parcurs, este posibil sf ajungem la o versiune potrivits a submultimil interne a intririlor noului DTD. Codul urmitor prezinti DTD-ul cu toate entiigile extinse complet:

You might also like