Una introduzione a XML

download Una introduzione a XML

of 28

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.