vuoi
o PayPal
tutte le volte che vuoi
XML
Cos’è XML?
XML (Extensible Mark-up Language) è uno standard del Web Consortium (W3C,
organizzazione mondiale che si occupa di definire gli standard del web) e che nasce dal
tentativo di creare una versione semplificata del linguaggio SGML (standard internazionale
che trasforma i testi in formato elettronico).
XML è un meta-linguaggio formato da regole che definiscono degli insieme di tag e che li
combinano tra loro, creano così nuovi linguaggi di mark-up.
Nasce per la pubblicazione di documenti sul web, progettato per andare incontro alle sfide
dell’editoria elettronica su larga scala, poi è diventato lo strumento principale per
scambiarsi una grande varietà di dati sul web e altrove.
E’ un formato che si basa su testi per rappresentare documenti, dati, libri, transizioni e
molto altro ed è il formato più usato per scambiare informazioni strutturate tra utenti e
anche tra apparecchiature.
Differenze con HTML
Tutti i tag devono essere chiusi (altrimenti devono essere specificati come vuoti).
Tutti i valori degli attributi devono essere chiusi tra le virgolette.
Non c’è niente di precostituito, neanche i tag.
Esistono solo le Character Entities strettamente necessarie (&, <, >, “ “, ‘ ). Per i caratteri
restanti esistono delle codifiche unicode.
Scopi del design
XML dev’essere utilizzabile direttamente su internet, senza altri passaggi.
1. Deve supportare una grande varietà di applicazioni.
2. Dev’essere compatibile con SGML.
3. Dev’essere facile scrivere programmi che processano i documenti XML (avendo una
4. struttura piramidale sono ideale per il processing automatico).
Il numero di caratteristiche (features) dev’essere possibilmente tenuto a 0, poiché lo
5. standard è semplice.
I documenti XML devono essere chiari e leggibili per gli umani (è il punto che ha reso
6. XML così famoso e usato).
Il design dev’essere preparato velocemente.
7. Sia i documenti di testo che quelli concettuali sono di tipo testuale.
8. Il design dev’essere formale e conciso.
9. I documenti devono essere facili da creare .
10. Il markup dev’essere minimo (il fatto che i tag debbano essere aperti e chiusi facilita la
11. creazione).
A cosa serve?
Serve per gestire il contenuto e la sua struttura. E’ un formato utilizzato per lo scambio dei
dati, chiaro e leggibile e che non viene pubblicato direttamente sul web.
Esistono linguaggi che elaborano il documento XML e che lo trasformano in altri formati,
per esempio HTML o PDF (trattamento automatico).
Trattamento del documento
Un documento XML si può visualizzare tramite fogli di stile. Possono esistere anche
documenti di carattere “narrativo” (con titolo, paragrafo,..) e che sono diversi da quelli usati
per esempio per un catalogo.
XSLT è un linguaggio che serve a trattare automaticamente un documento XML e a
convertirlo in un altro linguaggio, manipolando la sua struttura.
Struttura del documento*
Il documento XML ha due tipi di strutture: una logica e una fisica.
Quella logica è la struttura vera e propria, formata da elementi che caratterizzati da un
mark-up esplicito, come per esempio dichiarazioni, elementi, commenti, unicode,
istruzioni. Se il documento non è logico non può essere processato.
Quella fisica contiene i caratteri (entities) di cui è composto il documento.
Sia la struttura fisica che quella logica devono essere annidate correttamente.
Specifiche (terminologia)
Per identificare i livelli di adeguatezza allo standard si usano queste tre espressioni:
Must (obbligatorietà), should (consigliato) e may (possibile).
Sulla base di queste specifiche si creano i software.
Struttura logica*
Ogni documento XML contiene uno o più elementi, identificati da tag.
Ogni elemento ha un tipo (type) identificato dal nome (del tag) che viene chiamato anche
“identificatore generico” e che può avere un insieme di attributi.
All’interno di un tag, all’apertura, possono
esserci uno o più attributi con un nome e
un valore.
Differenza tra tag ed elemento:
Tag: tag scritto fisicamente <libro>
Elemento: struttura logica del documento,
rappresentato da coppie di tag <libro> …
</libro>
Struttura fisica*
I documenti XML sono composti da unità di memorizzazione chiamate entità. Queste
entità possono essere analizzabili o non analizzabili.
Le entità analizzabili sono composte da
caratteri, alcuni dei quali formano dei dati e altri
che formano markup.
Le entità non analizzabili sono risorse i quali
contenuti possono o no essere composte da
testo.
Caratteristiche del documento
Dichiarazione del formato (XML)
Markup (tag, attributi, struttura gerarchica)
Dati (testo, entità references e sezioni CDATA)
Come utilizzare XML
Definire la sintassi (grammatica) di un linguaggio vuol dire definire un insieme di tag, gli
attributi dei tag e le loro possibili combinazioni.
Questo può essere messo in atto con due metodi: tramite la DTD e con gli schemi XML.
Parser XML
Il parser (validatore/analizzatore) è in grado di capire la grammatica del linguaggio definito
dall’utente. Valuta se il documento è ben formato e se è valido.
Documenti ben formati
- Tutti i tag sono chiusi
- i tag sono annidati senza incrociarsi
- C’è solo un elemento radice
- Tutti i valori sono tra virgolette
- Non ci sono attributi con stesso nome per stesso elemento
- Non ci sono commenti nei tag
- Non ci sono < o & nei dati o nei valori (perchè fanno già parte del markup)
Il documento BEN FORMATO rispetta le regole di XML
Il documento VALIDO è corretto rispetto al linguaggio di riferimento
Gli errori che si possono commettere nella sintassi di XML sono tag non chiusi, tag
incrociati, ecc..
Gli errori logici possono essere la mancanza di un elemento o di un attributo obbligatorio o
l’ordine non corretto in cui sono annidati gli elementi.
DTD
La DTD (Document Type Definition) è la grammatica di un linguaggio basato su XML.
Viene creata in un file esterno e si collega al documento XML tramite un percorso esterno
inserendo il riferimento all’interno del documento dopo la specifica del formato, oppure
ponendola direttamente all’interno del documento (caso meno comune).
All’interno della DTD vengono dichiarati elementi e attributi (non tag!). Ogni riga
contiene la specifica di un elemento del linguaggio che stiamo creando.
La struttura è tripartita: parola chiave, elemento che si definisce, modello del contenuto
(contenuto che troveremo all’interno dell’elemento).
<!ELEMENT elemento (modello del contenuto)>
Per dichiarare un elemento e le sue caratteristiche, vengono utilizzati dei caratteri specifici.
Per indicare che il contenuto dell’elemento è del testo si utilizza PCDATA.
Per indicare che l’elemento può essere uno o nessuno si utilizza ?
Per indicare che l’elemento può essere nessuno o più si utilizza *
Per indicare che l’elemento che l’elemento è uno o più si utilizza +
Per indicare una sequenza di elementi si utilizza (elemento1 , elemento2)
Per indicare che l’elemento è alternativo a un altro si utilizza (elemento1 | elemento2)
Per indicare che non è presente nessun elemento si utilizza EMPTY.
Altri tipi di valore sono: CDATA (caratteri), NMTOKEN (numeri), ID (identificativo), o dei
valori alternativi che specifichiamo così (v1 | v2 | v3).
Esempi: <!ELEMENT capitolo (titolo, testo_capitolo)>
vuol dire:
“Un elemento capitolo contiene un solo elemento titolo seguito da un solo elemento
testo_capitolo”
<!ELEMENT biblioteca (libro+)>
vuol dire:
“L’elemento biblioteca contiene uno o più elementi libro”
Nella DTD possiamo anche inventare delle entità con la formula <!ENTITY name
“entity_value”>
Attributi della DTD
Gli attributi nella DTD vengono dichiarati con l’espressione <!ATTLIST nome elemento,
nome attributo, dato default>
I nomi di attributo devono essere diversi.
Il default può essere: obbligatorio (#REQUIRED), facoltativo (#IMPLIED), fisso (#FIXED) o
un valore predefinito.
Meta Dati
E’ un processo di digitalizzazione che rende i dati utilizzabili fuori dal contesto originale.
Servono per introdurre nei dati informazioni che li riguardano (ad esempio provenienza,
contenuto, struttura, copyright, ecc..).
I vantaggi di utilizzare i Meta Dati sono: la digitalizzazione per fini conservativi, il
trattamento automatico dei dati e la conservazione delle informazioni che sono proprie del
supporto e che andrebbero perdute (ad esempio il formato delle pagine di un libro).
I dati riguardano gli elementi di XML, i Meta Dati riguardano gli attributi di XML.
Gli attributi però non supportano valori multipli e il loro uso rende il trattamento automatico
più complesso (è sempre meglio utilizzarne pochi).
Per descrivere una risorsa viene utilizzato il Meta dato Dublin Core, per descrivere il
contenuto di una risorsa viene utilizzato il Meta dato Tei / Tei-light.
Namespaces
Quando si crea più di un linguaggio basato su XML, a volte si usa lo stesso nome per
due elementi. Come distinguerli nel caso ci fosse un’omonimia o come far sì che il
browser li riconosca correttamente?
Innanzitutto bisogna mettere un prefisso per indicare a quale linguaggio si riferisce un
determinato tag. Quel prefisso viene chiamato NAMESPACE.
Il Namespace è infatti un sistema di suffissi creato per eliminare l’ambiguità tra elementi.
Come metterli?
La prima volta (ma ci sono eccezioni) che uso un tag ho la possibilità di dichiarare un
namespace che verrà utilizzato di seguito.
<esempio xmlns:prova=“….”>
xmlns è il namespace, dopo i due punti c’è il nome che voglio attribuirgli. Dopo si mette la
risorsa (il linguaggio - il DTD).
Esempio è un tag, fa parte di un linguaggio definito. Per distinguere i tag che
appartengono al linguaggio dell’esempio userò il prefisso prova.
All’inizio del documento XML il primo tag utilizzato è <stylesheet> per indicare il
namespace a cui si riferisce il foglio di stile è xsl:stylesheet.
(XLS è il foglio di stile).