Una introduzione a XML
-
Upload
adriana-ghisellini -
Category
Documents
-
view
225 -
download
0
Transcript of Una introduzione a XML
-
8/13/2019 Una introduzione a XML
1/28
-
8/13/2019 Una introduzione a XML
2/28
Indice
Introduzione..........................................................................................................................................3
Uno sguardo a XML.............................................................................................................................3
La sintassi XML...................................................................................................................................4
Le grammatiche DTD...........................................................................................................................8
Collegare un file XML ad un foglio di stile CSS...............................................................................4Introduzione a XML Schema..............................................................................................................!
"ltre tecnologie legate a XML...........................................................................................................#3
XML e le $agine %e&' X(TML.........................................................................................................#4
)uer* con LI+) to XML...................................................................................................................#4
,sercizi...............................................................................................................................................#!
-i&liografia e Sitografia.....................................................................................................................#8
-
8/13/2019 Una introduzione a XML
3/28
Introduzione
XMLsignifica eXtensible Markup Language, cio Linguaggio a marcatori estensibile E' un insieme di regole e convenzioni che consentono di descrivere qualunque linguaggio di
markup, basato quindi sui marcatori
L'idea in parte derivata dai concetti di base di S!L "standard eneralized !arkupLanguage# $l vantaggio di %!L su S!L dato dalla semplicit& con la quale in %!L possibile definire
una struttura gerarchica per le informazioni
Uno sguardo a XML
no dei linguaggi a marcatori pi( conosciuto )*!L e i marcatori sono prefissati %!L non definisce una propria collezione di marcatori "detti tag# ma definisce le regole
sintattiche per generare marcatori personalizzati e i loro eventuali attributi
%!L un meta+linguaggio, cio uno strumento estensibile con cui possibile realizzare altrilinguaggi descrivendo i nuovi marcatori e gli eventuali attributi di questi
E' anche possibile, ma non obbligatorio, definire le regole semantiche di relazione tra glistessi marcatori
$ documenti %!L sono di puro testo e non binari, ci garantisce la portabilit& tra sistemidifferenti
%!L non legato ad una azienda particolare, una specifica prodotta dal -./ "-orld-ide -eb /onsortium#
Un esempio di documento XML:
esempio012ml342mlversion560176encoding56utf+86493prenotazione9 3id:olo9;id:olo9 3id/liente9;;=.7?3>id/liente9 3data9==+07+=7703>data9 3prezzovaluta5Euro9=@?3>prezzo93>prenotazione9
esempio=12ml
342mlversion560176 encoding56*A+86493html9 3head9 3title9 *itolo del documento )*!L 3>title9 3>head9 3bodB9 3h09n documento )*!L scritto in %!L3>h09 3>bodB9
3>html9
-
8/13/2019 Una introduzione a XML
4/28
Esercizio
Con un editor di testo (anche Blocco note di Windows) scrivere il codice esempio2!ml e memorizzarlo in
due "ile diversi:
#)esempio2html
2)esempio2!ml
$prire con un %rowser prima un "ile e poi l&altro e osservare i risultati
n esempio pi( complesso di documento %!LCesempio.12ml
342mlversion560176encoding56utf+86493ranD;remio9 3azione9Felgio3>azione9 3/ircuito9S;/ircuito9 3;osizione9 3ome9Guan ;ablo !ontoHa3>ome9 3:ettura9-illiams F!-3>:ettura9 3*empo901?=17I=3>*empo9 3>;ilota9 3;ilota9 3;osizione9=3>;osizione9 3ome9Jalph Schumaker3>ome9 3:ettura9-illiams F!-3>:ettura9 3*empo901?.1=IK3>*empo9 3>;ilota9 3;ilota9 1111111111111 3>;ilota9 3>rigliaDdiD;artenza93>ranD;remio9
La sintassi XML
La prima rigaC342ml version5017 encoding5*A+849
0#$dentifica la tipologia del documento=#Specifica la versione di %!L e la codifica utilizzata.#$l tag non obbligatorio ma la sua presenza pu evitare problemi legati a incompatibilit& tra filesviluppati con versioni differenti*utto il documento contenuto all'interno dei due tagC
3ranD;remio9 1111111111111 3>ranD;remio90#Muesto elemento chiamato root element=#E' consentita la presenza di un solo root element.#$ tag sono case sensitive@#on ammesso avere coppie di tag che si intersecano?#Ngni tag deve essere sempre chiusoO#;u accadere che un tag non contenga valori
-
8/13/2019 Una introduzione a XML
5/28
-
8/13/2019 Una introduzione a XML
6/28
n documento %!L che rispetta le regole sintattiche si dice ben formato !"ell ormed # n documento %!L che rispetta le regole sintattiche e le regole semantiche si dice si dice
valido !valid# n documento ben formato pu non essere valido rispetto ad una grammatica, mentre
un documento valido necessariamente ben formato1
$omponenti di un documento$n un documento %!L generico possiamo individuareC0# $l prologo=# $ commenti.# $ marcatori@# $l root element?# li attributiO# $l contenuto informativo
Il prologo contieneC
La dichiarazione %!LC 342ml version5017 encoding5*A+8 standalone5Bes49 La dichiarazione %!L se presente deve essere la prima riga del prologo e quindi del
documento %!L $struzioni di elaborazione
Sono direttive che danno indicazioni al softQare che utiliza il documento %!L1
Esempio: '+!ml/st0lesheet t0pe,-te!t*css- hre",-esempiocss-+
$nformazioni sulla grammatica utilizzata nel documento o il riferimento a una grammaticaesterna
Esempio:'13C456E Li%ro 7574EM 8li%rodtd-
$ommenti3R++ Muesto un commento ++9
$ commenti %!L possono essere posizionati ovunque on bisogna inserirli prima della dichiarazione %!L
3R++commento in posizione scorretta ++9342mlversion560176encoding56utf+86493root9111 3>root9
on possono essere inseriti in altri tag
342mlversion560176encoding56utf+86493root 3R++commento in posizione scorretta ++99 1113>root9
%lementi del documento XML
n documento %!L composto da una gerarchia di elementi che possono esserenidificati a piacere secondo regole sintattiche precise
n elemento formato da una coppia di marcatori detti rispettivamente tag di apertura etag di chiusura n elemento pu contenere del semplice testo
-
8/13/2019 Una introduzione a XML
7/28
$l linguaggio %!L case sensitive
%lemento radice
E' il contenitore che racchiude tutta la gerarchia E' obbligatorio
E' denominato root element&omenclatura dei tag
n tag di apertura deve iniziare con il carattere 3 n tag di chiusura deve iniziare con la coppia di caratteri 3> Entrambi i tag devono terminare con il carattere 9 $l nome compreso tra questi caratteri puC
$niziare con una lettera, un carattere di sottolineatura o con il carattere C "due punti#
opo il primo carattere possibile utilizzare lettere, numeri, caratteri di sottolineatura,trattini, punti e due punti
on possibile utilizzare spazi bianchi per separare parole diverse all'interno del nomedel tag
Attributi dei tag
;ermettono di specificare meglio alcune caratteristiche dell'elemento senza ricorrere aelementi figli
La sintassi degli attributi prevede la presenza della coppia nome=valore ;ossono essere racchiusi tra apici doppi o apici singoli omi degli attributi C
evono seguire le stesse regole dei nomi dei tag degli elementi
$ nomi degli attributi sono univoci all'interno dello stesso tag
-
8/13/2019 Una introduzione a XML
8/28
342mlversion560176encoding56utf+8649
3frasevoce56;aola6id56=6contenuto56questa stringa contiene lTaposUapicee lTaposUTquotUapice doppioTquotU6>9
Le grammatic(e DTD
Muando un documento %!L ben formato associato a una grammatica e la rispetta, si diceche valido per quella grammatica
;er inserire una grammatica ci sono = modalit&C
$nserire le regole grammaticali direttamente all'interno del documento %!L , tra ilprologo e iltag di apertura dell'elemento principale
/reare un file esterno con estensione 1dtd "document tBpe definition# che contenga le
regole grammaticali1 $n questo caso il documento %!L deve contenere un marcatoreche indichi il riferimento al file dlla grammatica
)rammatica DTD all*interno del documento XML
Esempio:
libroDconDgrammaticaDinterna12ml
342mlversion560176encoding56utf+86493RN/*V;ELibroW 3RELE!E*Libro"autoreX,titolo,isbn,$ntroduzione,/apitoli#9
3RELE!E*autore"Y;//apitolo93>/apitoli93>Libro9
-
8/13/2019 Una introduzione a XML
9/28
)rammatica DTD all*esterno del documento XML
Esempio:
libroDconDgrammaticaDesterna12ml grammatica1dtd
342mlversion560176encoding56utf+86493RN/*V;ELibroSVS*E! 6grammatica1dtd693Libro9 3autore9!assimo /anducci3>autore9 3titolo9;); ?3>titolo9 3isbn988+?7.+=0K@+?3>isbn9 3$ntroduzione93>$ntroduzione9 3/apitoli9 3/apitolo9 3numero903>numero9 3*itolo9no sguardo a ;);3>*itolo9 3testo93>testo9
3>/apitolo9 3/apitolo9 3numero9=3>numero9 3*itolo9$ mattoni del linguaggio3>*itolo9 3testo93>testo9 3>/apitolo9 3>/apitoli93>Libro9
3RELE!E*Libro"autoreX,titolo,isbn,$ntroduzione,/apitoli#9 3RELE!E*autore"Y;/
-
8/13/2019 Una introduzione a XML
10/28
,intassi di un DTD
La sintassi di un * si basa principalmente sulla presenza delle seguenti dichiarazioniC
3RELE!E*93R
-
8/13/2019 Una introduzione a XML
11/28
;er la definizione dei tag che non contengono sottoelementi dobbiamo distinguere il caso dei tagvuoti dai tag che racchiudono testo1el caso di tag vuotola definizione
./%L%M%&T &ome%lemento %MPT01
el caso di elementi che racchiudono testo abbiamo una definizione analoga alla seguenteC
./%L%M%&T Testo !2P$DATA#1
Esiste la possibilit& di definire elementi il cui contenuto non definito a priori, possono cio esserevuoti o contenere altri elementi senza vincoli particolari1
./%L%M%&T &ome%lemento A&01
XML- DTD ATT3I4UT%,
SintassiC
3Rautore9
-
8/13/2019 Una introduzione a XML
12/28
XML- DTD $5&$LU,I5&I
*uttavia i * hanno i seguenti limitiC La sintassi utilizzata per definire un * non segue le stesse regole di %!L $ * non consentono di specificare un tipo di dato per il valore degli attributi $ * non consentono di specificare il numero minimo o massimo di occorrenze di un tag in
un documento Mueste limitazioni hanno spinto alla definizione di approcci alternativi per
definire grammatiche per documenti %!L1 *ra questi approcci il pi( noto XML ,c(ema1
Esercizio: 7peci"ica di $ddress List
7i pro9etti il 4 per la 9estione di una address list 7i scriva inoltre un "ile XML valido per il 4
pro9ettato
Una address list contiene almeno una in"ormazione
39ni in"ormazione include il nome uno o pi; indirizzi uno o pi; numeri di tele"ono uno o pi;
indirizzi email eventualmente la nazionalit caratterizzato da almeno una via un indirizzo postale eventualmente la provincia
e sicuramente il paese
7oluzione
-
8/13/2019 Una introduzione a XML
13/28
-
8/13/2019 Una introduzione a XML
14/28
$ollegare un ile XML ad un oglio di stile $,,
L' istruzione di collegamento al codice va inserita nel prologo, subito prima dell' elemento radiceU lasua sintassi la seguenteC
.67ml8st9les(eet t9pe=:te7t;css: (re=:nomeile]ome AileC inventario1css]>
L$FJN^displaBCblockU
margin+topC=7ptUfont+sizeC00ptUfont+familBC6*rebuchet !S6, :erdana,
-
8/13/2019 Una introduzione a XML
15/28
font+stBleC italicU]>_
3L$FJN93*$*NLN93/N;EJ*$/N;EJ*$
-
8/13/2019 Una introduzione a XML
16/28
$ * possono essere utilizzati efficacemente per lo scambio di informazioni tra utenti, manon tra sistemi automatici in quanto non consentono di stabilire con precisione il 6tipo6delle informazioni1 Storicamente i linguaggi a marcatura nascono come annotazione deidocumenti testuali, ed solo con la diffusione di %!L che sono stati adoperatiestensivamente per la rappresentazione delle informazioni
Introduzione a XML ,c(ema
%!L Schema un'applicazione %!L finalizzata alla definizione della struttura deidocumenti %!L, compito gi& svolto dai *, in modo pi( preciso e modulare rispetto aquanto permesso da questi ultimi
%!L Schema prevede la descrizione della struttura di un documento con un secondodocumento %!L "detto schema#
-
8/13/2019 Una introduzione a XML
17/28
&amespace
n amespace %!L una raccolta di nomi identificata da un riferimento J$ $ amespace %!Lvengono usati per evitare conflitti di nomi quando si utilizzano e riutilizzano pi( vocabolari $namespace sono il meccanismo creato appositamente per definire un identificativo univoco deivari tag di markup $n generale un namespace viene dichiarato in questo modo
3pf2Croot 2mlnsCpf256httpC>>QQQ1foo1com6 >9
;er evitare di usare il prefisso possibile usare un namespace di default "dovr& essere l'uniconamespace di dafault# C
3root 2mlns56httpC>>QQQ1foo1com6 >9
&amespace negli sc(emi
Ngni schema, in generale, fa uso di due namespaceC $l namespace %!L Schema $l targetamespace per gli elementi descritti dallo schema
342ml version560176 encoding56*A+864932sdCschema
targetamespace56httpC>>QQQ1miur1it>anagrafeStudenti6 2mlns56httpC>>QQQ1miur1it>anagrafeStudenti6 2mlnsC2sd56httpC>>QQQ1Q.1org>=770>%!LSchema 6
elementAormefault56qualified6 attributeAormefault56unqualified69111 111
3>2sdCschema9
ell'esempio si vede che l'elemento radice ha come attributiC targetamespaceC permette di dichiarare il namespace dei componenti creati con lo
schema e accetta come valore un J$1 on obbligatorio1 Se non presente gli elementi deldocumento verranno validati come non qualificati da un namespace
2mlnsC indica il namespace di default al quale appartengono tutti i componenti dello
schema chesono privi di prefisso 2mlnsC2sd C introduce il prefisso 2sd per individuare uno spazio dei nomi al qualappartengono i componenti di %!L Schema
elementAormefaultC indica se gli elementi definiti nello schema devono avere o no unprefisso di default se usati all'interno di una istanza1 Se l'attributo ha valore qualified glielementi nell' istanza devono avere un prefisso
attributeAormefaultCcome sopra ma riferito agli attributi1 Se l'attributo ha valoreunqualified gli attributi nell'istanza non devono avere un prefisso
http://www.miur.it/anagrafeStudentihttp://www.miur.it/anagrafeStudentihttp://www.w3.org/2001/XMLSchemahttp://www.miur.it/anagrafeStudentihttp://www.miur.it/anagrafeStudentihttp://www.w3.org/2001/XMLSchema -
8/13/2019 Una introduzione a XML
18/28
Esempio
Schema/12sd
342mlversion560176encoding56utf+864932sCschema targetamespace56httpC>>tempuri1org>%!LSchema12sd 6 2mlns56httpC>>tempuri1org>%!LSchema12sd6
2mlnsC2s56httpC>>QQQ1Q.1org>=770>%!LSchema 6 elementAormefault56qualified69
32sCelementname56artista6tBpe562sCstring6>9 32sCelementname56commento6tBpe562sCstring6>9 32sCelementname56lunghezza6tBpe562sCstring6>9 32sCelementname56titolo6tBpe562sCstring6>9 32sCelementname56anno6tBpe562sCstring6>9
32sCelementname56/69 32sCcomple2*Bpe9 32sCsequence9 32sCelementref56artista6minNccurs5676>9 32sCelementref56commento6minNccurs5676>9 32sCelementref56lunghezza6>9 32sCelementref56titolo6>9 32sCelementref56anno6minNccurs5676>9 3>2sCsequence9 3>2sCcomple2*Bpe9 3>2sCelement93>2sCschema9
li elementi della sintassi definita in questoschema saranno inseriti nel namespace ChttpC>>tempuri1org>%!LSchema12sd
La dichiarazione del default namespace indicaal parser che gli elementi riferiti all'interno deldocumento senza esplicito riferimento dinamespace vanno considerati comeappartenenti al namespace ChttpC>>tempuri1org>%!LSchema12sd cio altargetamespace
Jiassumendo, nel documeto %!LSchema visto in precedenza sono presenti due distinti set dielementi, ciascuno associato a un diverso namespaceC
htt$'66%%%.%3.org6#776XMLSchema htt$'66tem$uri.org6XMLSchema.sd
schemaelement
comple2*BpesequenceminNccurs
targetamespacestring111
artistacommento
annotitolo
cd
111
http://www.w3.org/2001/XMLSchemahttp://tempuri.org/XMLSchema.xsdhttp://www.w3.org/2001/XMLSchemahttp://tempuri.org/XMLSchema.xsd -
8/13/2019 Una introduzione a XML
19/28
3ierimento a uno sc(ema in un*istanza di documento
el caso in cui l'istanza usi un namespace, nel documento %!L occorre inserireC
01 La dichiarazione del namespaceC
2mlnsC2si56httpC>>QQQ1Q.1org>=770>%!LSchema+instance6
=1 L'indicazione della locazione dello schemaC
2siCschemaLocation56httpC>>tempuri1org>%!LSchema12sd %!LSchema/12sd6
Esempio
/12ml342mlversion560176encoding56utf+86493/
2mlns56httpC>>tempuri1org>%!LSchema12sd6 2mlnsC2si56httpC>>QQQ1Q.1org>=770>%!LSchema+instance6
2siCschemaLocation56httpC>>tempuri1org>%!LSchema12sd %!LSchema/12sd69
3artista9Nne irection3>artista9 3commento9arrivati nelle top list dei grandi mercati musicali3>commento9 3lunghezza9?C@K3>lunghezza9 3titolo9p titolo9 3anno9=7003>anno93>/9
;rovenienza delnamespace 2si "schemainstance#
ove prelevare loschema per lavalidazionedell'elemento correntee del suo contenuto
>QQQ1Q.1org>=770>%!LSchema+instance6
=1 L'indicazione della locazione dello schemaC
2siCnoamespaceSchemaLocation56%!LSchema/12sd6
$l primo attributo permette di associare il prefisso 2si all'J$ mostrato, il secondo consente diindicare la directorB in cui stato salvato lo schema che vogliamo associare all'istanza1
schemaLocationnoameSpaceShemaLocation
artistacommento
annotitolo
cd111
-
8/13/2019 Una introduzione a XML
20/28
-
8/13/2019 Una introduzione a XML
21/28
...
$n questo elemento 3schema9 il frammentoC2mlnsC2s56httpC>>QQQ1Q.1org>=770>%!LSchema6
indica che gli elementi ed i tipi di dati usati nello schema appartengono al namespaceC6httpC>>QQQ1Q.1org>=770>%!LSchema6
e che devono comparire con il prefisso 2s1$l frammentoC
targetamespace56httpC>>biblioteca1org>schema6
invece indica che gli elementi definiti dallo schema appartengono al namespacehttpC>>biblioteca1org>schema1
$l frammentoC 2mlns56httpC>>biblioteca1org>schema6 stabilisce quale dovr& essere il namespace didefault1$nfineC elementAormefault56qualified6 sta ad indicare che ogni elemento usato allPinterno deldocumento %!L che applica questo schema deve dichiarare il namespace, ad esempio, in questocasoC 3biblioteca 2mlns56httpC>>biblioteca1org>schema69 111 3>biblioteca9
3eerenziare lo sc(ema nel documento XML
;er associare un documento "ovvero un'istanza di schema# al proprio schema si utilizzano degliattributi associati al namespace 2si "%!L Schema $nstance# sul root element, ad esC
%!LSchemaDSaluto12sd342mlversion560176encoding56utf+864932sCschema
2mlnsC2s56httpC>>QQQ1Q.1org>=770>%!LSchema 69 32sCelementname56saluto6tBpe562sCstring6>93>2sCschema9
%!LAileDSaluto12ml342mlversion560176encoding56utf+86493saluto 2mlnsC2si56httpC>>QQQ1Q.1org>=770>%!LSchema+instance6 2siCnoamespaceSchemaLocation56%!LSchemaDSaluto12sd69 )ello -orld3>saluto9
-
8/13/2019 Una introduzione a XML
22/28
Esempio
ListaDindirizzi12sd
342mlversion560176encoding56utf+864932sCschemaattributeAormefault56unqualified6elementAormefault56qualified62mlnsC2s56httpC>>QQQ1Q.1org>=770>%!LSchema69 32sCelementname569 32sCelementname56LastDame6tBpe562sCstring6>9 32sCelementname56SecondDame6tBpe562sCstring6>9 3>2sCsequence9 3>2sCcomple2*Bpe9 3>2sCelement9 32sCelementname56$ndirizzo69 32sCcomple2*Bpe9
32sCsequence9 32sCelementname56:ia6tBpe562sCstring6>9 32sCelementname56/ap6tBpe562sCunsignedShort6>9 32sCelementname56;rovincia6tBpe562sCstring6>9 32sCelementname56;aese6tBpe562sCstring6>9 3>2sCsequence9 3>2sCcomple2*Bpe9 3>2sCelement9 32sCelementma2Nccurs56unbounded6name56*elefono6tBpe562sCunsigned$nt6>9 32sCelementname56Email6tBpe562sCstring6>9 32sCelementname56azionalita6tBpe562sCstring6>9 32sCelementname56ota6>9 3>2sCsequence9 3>2sCcomple2*Bpe9 3>2sCelement9 3>2sCsequence9 3>2sCcomple2*Bpe9 3>2sCelement93>2sCschema9
ListaDindirizzi12ml342mlversion560176encoding56utf+86493>QQQ1Q.1org>=770>%!LSchema+instance62siCnoamespaceSchemaLocation56ListaDindirizzi12sd69 3informazione9
3AullDome9 3AirstDame9Jossi3>AirstDame9 3LastDame9!ario3>LastDame9 3SecondDame9iovanni3>SecondDame9 3>AullDome9 3$ndirizzo9 3:ia9:ia dei *igli,073>:ia9 3/ap9.O70?3>/ap9 3;rovincia9:$3>;rovincia9 3;aese9*hiene3>;aese9 3>$ndirizzo9 3*elefono97@@?.OOO0I3>*elefono9 3*elefono97@@?0=.@?3>*elefono9
3Email9rossigmail1com3>Email9 3azionalita9$3>azionalita9 3ota93>ota9
-
8/13/2019 Una introduzione a XML
23/28
3>informazione9 3informazione9 3AullDome9 3AirstDame9:erdi3>AirstDame9 3LastDame9Sergio3>LastDame9 3SecondDame93>SecondDame9 3>AullDome9
3$ndirizzo9 3:ia9:ia aribaldi3>:ia9 3/ap9.O70O3>/ap9 3;rovincia9:$3>;rovincia9 3;aese9Schio3>;aese9 3>$ndirizzo9 3*elefono97@@?.OOO083>*elefono9 3*elefono97@@?0=.@O3>*elefono9 3Email9verdigmail1com3>Email9 3azionalita9$3>azionalita9 3ota93>ota9 3>informazione93>
-
8/13/2019 Una introduzione a XML
24/28
univoca, atta allo sviluppo di un semplice scambio dati tra pagine -eb ed accessibile daqualsiasi linguaggio di scripting1 $n sostanza si tratta di un documento %!L la cui strutturadei nodi ed i relativi tag hanno lo stesso nome1
S: "Scalable :ector raphics# e :!L ":ector !arkup Language# sono standard per lacreazione di immagini vettoriali che sfrutta dei documenti formattati in %!L1 Serve inoltre adescrivere immagini bidimensionali, statiche e dinamiche1 Leggendo le istruzioni contenute
nel documento sorgente %!L, l'interprete disegna le figure+base fino al completamentodell'immagine1
-%"-ord ata escription E2change#C -% una struttura per contenimento di daticon la stessa struttura di un database, creato dalla # finale, gli attributi vuoti devono esserevalorizzati con true o "alse, la chiusura dei tag dev'essere a specchio"se viene aperto un *ag eprima di chiuderlo ne viene aperto un altro, necessario chiudere prima il secondo tag e poi ilprimo#, alcuni *ag e attributi, rispetto all' )*!L @17 sono scomparsi1
$l mime tBpe riservato alle pagine %)*!L "application>2htmlX2ml#1 Se si trasmette una pagina%)*!L non valida ma come te2t>html pu capitare che venga per visualizzata perch[ vieneinterpretata come html "con degli errori, quali i tag chiusi come 3br >9# solo che non rispetta lostandard e non gode dei suoi vantaggi, primo tra i quali la portabilit& su broQser e clientdifferenti1$l vero vantaggio di una pagina %)*!L che essendo %!L ne trae tutti i pregi, qualifacilit& di validazione e interpretazione programmatica1 Le pagine %)*!L sono solitamente pi(
facilmente accessibili, data la loro semantica %!L1
?uer9 con LI&? to XML
$n ambiente !icrosoft :isual Studio possibile utilizzare il linguaggio L$M per interrogare file%!L1L$M to %ml estende gli operatori standard di L$M to NbHect con degli operatori specifici per %!L1Ecco un esempio di applicazione console in linguaggio /Y che interroga il file libri12ml visto inprecedenzaC
http://it.wikipedia.org/wiki/Linguaggio_di_scriptinghttp://it.wikipedia.org/wiki/Scalable_Vector_Graphicshttp://it.wikipedia.org/wiki/Vector_Markup_Languagehttp://it.wikipedia.org/w/index.php?title=WDDX&action=edit&redlink=1http://it.wikipedia.org/w/index.php?title=WDDX&action=edit&redlink=1http://it.wikipedia.org/wiki/Allairehttp://it.wikipedia.org/wiki/Macromediahttp://www.wddx.org/http://it.wikipedia.org/wiki/Linguaggio_di_scriptinghttp://it.wikipedia.org/wiki/Scalable_Vector_Graphicshttp://it.wikipedia.org/wiki/Vector_Markup_Languagehttp://it.wikipedia.org/w/index.php?title=WDDX&action=edit&redlink=1http://it.wikipedia.org/wiki/Allairehttp://it.wikipedia.org/wiki/Macromediahttp://www.wddx.org/ -
8/13/2019 Una introduzione a XML
25/28
usingSBstemUusing SBstem1/ollections1enericUusingSBstem1LinqUusingSBstem1*e2tUusingSBstem1*hreading1*asksUusingSBstem1%ml1LinqU
namespace /ons>metodo Load della classe %Element >>carica il file specificato /onsole1-riteLine"libri#U >> visualizza il file /onsole1JeadeB"#U
>>estrae i libri che costano pi( di 07 euro varlibriDcostosi 5 fromitem inlibri1Elements"6L$FJN6# Qhere/onvert1*oouble"item1Element"6;JE``N6#1:alue# 9 07 selectitemU
/onsole1-riteLine"6+++++++++++++++++++++++++6#U /onsole1-riteLine"6numero di libri costosi 5 6X libriDcostosi1/ount"##U /onsole1-riteLine"6Lista Libri costosi 6#U /onsole1-riteLine"6+++++++++++++++++++++++++6#U foreach"var2Ele inlibriDcostosi# ^ /onsole1-riteLine"2Ele1Element"6
-
8/13/2019 Una introduzione a XML
26/28
%sercizi
Esercizio n. 1- Lettera
Si progetti il * e si scriva un %!L valido per un linguaggio di markup per lettere1Ngni lettera ha un mittente, una data, un destinatario, un oggetto, una forma cortese di saluto, uncorpo, una chiusura, una firma1 $l corpo della lettera ha quanto meno un paragrafo1
Esercizio n. 2 - Auto usate
Si crei un documento %!L ben formato contenente le informazioni su un rivenditore di auto usate1$l rivenditore dispone di pi( autovetture1Le auto devono essere raggruppate per casa automobilistica tramite unPopportuna marcatura1Ngni auto, infine, caratterizzata da una targa, un colore, un anno di immatricolazione e unchilometraggio attuale "esprimibile in km#1Si dia esempio di tale documento ipotizzando un totale di . auto, di cui due della stessa casaautomobilistica1
/odificare una applicazione /Y per rispondere alla seguente querBC.
-
8/13/2019 Una introduzione a XML
27/28
3R93>2sdCsequence93>2sdCcomple2*Bpe9
32sdCsimple*Bpename56!ail9
32sdCenumerationvalue56media6>932sdCenumerationvalue56urgente6>9
3>2sdCrestriction93>2sdCsimple*Bpe9
3>2sdCschema9
enerare un esempio di documento %!L associato1
-
8/13/2019 Una introduzione a XML
28/28
Esercizio n. 7
/reare uno Schema %!L che descriva la struttura di un documento dizionario, che rispetti iseguenti vincoliC L'elemento dizionario deve contenere zero o pi( elementi termine1
L'elemento termine costituito dagli elementi parola, pronuncia e almeno un'occorrenzadell'elemento significato1
L'elemento significato costituito dagli elementi definizione ed esempio "l'elementoesempio pu, comparire zero o pi( volte#1
gli elementi parola, pronuncia, definizione e esempio sono di tipo stringa1 /reare un documento istanza %!L valido rispetto allo schema precedente1
Esercizio n.