Dall' HTML all' · la struttura, attraverso i tags (= marcatori in italiano) ... elemento root...
Transcript of Dall' HTML all' · la struttura, attraverso i tags (= marcatori in italiano) ... elemento root...
Pablo Genova [email protected]
I. I. S. “Angelo Omodeo” Mortara Indirizzo Tecnico-Economico A. S. 2017 – 2018
XMLXML
Dall' HTMLHTML all'
Ripasso HTML – N. B. Ripasso HTML – N. B. INDISPENSABILEINDISPENSABILE
Per capire quello che vedremo sul linguaggio XTML è bene tenere presente ciò che abbiamo visto l'anno scorso sull'HTML
Quindi il primo passo è andarsi a rivedere la precedente presentazione sull'HTML, che sarà il nostro riferimento costante
e potrà essere richiesto in verifica ;-)
http://www.gallinigenova.altervista.org/html.pdf
Cos'è l' XML ?Cos'è l' XML ?
XML è l'abbreviazione di eXtensible Markup Language
XML è un linguaggio di markup simile all'HTML
XML è progettato per memorizzare e trasportare i dati
XML è leggibile sia dall'umano che dalla macchina e “quite self-descriptive” “abbastanza auto-descrittivo”
ATTENZIONEATTENZIONE
di per sé il codice XML non fa nulla
XML is just information wrapped in tags
XML è soltanto informazione “avvolta in tags”
Vediamo un semplice esempioVediamo un semplice esempio Meno male non capivo nulla
<nota> <per> Eva </per> <da> Adamo </da> <titolo> Memo </titolo> <testo> Però era buona la mela! </testo></nota>
Adamo trasmette ad Eva dei dati, codificandoli in XMLI dati sono strutturati in modo opportuno all'interno ditags che spiegano di cosa si tratta
XML is just information wrapped in tags
Wow! I tags sono creati a piacere dal programmatorea seconda delle sue esigenze
Ad esempio poteva anche essere cosìAd esempio poteva anche essere così
<note> <to> Eva </to> <from> Adamo </from> <heading> Memo </heading> <body> Però era buona la mela! </body></note>
I tag sono scelti dall'utente a seconda delle sue necessità di classificazione dei dati.Ecco perché XML, rispetto ad HTML ha la X che sta per eXtensible ovvero si può estendere adattandolo al problema richiesto, mentre HTML è pensato specificatamente per gli ipertesti (HyperText...)
Tag definiti dall'utente
XML nell'economia è utilizzato per le FATTURE ELETTRONICHE e nella variante XBRL è usato per i BILANCI
XML VS HTMLXML VS HTML
Esiste anche XBRL eXtensible Business Reporting Language:Linguaggio basato su XML usato per i bilanci e lo scambio elettronico di informazioni contabili e finanziarie
XML è un metalinguaggio ovvero un linguaggio che permette di definire altri linguaggi, per intenderci crea la struttura, attraverso i tags (= marcatori in italiano) che descrive i vostri dati.
HTML è pensato per la VISUALIZZAZIONE o per la PRESENTAZIONE dei datiXML è pensato per la MEMORIZZAZIONE e il
TRASPORTO dei dati
XML ESTENDE E COMPLEMENTA HTMLXML ESTENDE E COMPLEMENTA HTMLWow!
N. B. PLEASE SEPARATE DATA FROM PRESENTATION !! Right?
RISPETTARE LE RISPETTARE LE REGOLEREGOLEUff!
Ogni documento XML VALIDO deve avere un elemento root radice che è il parent il genitore (padre/madre) di tutti gli altri elementi che saranno i children. Sono ammessi subchildren (“sottofigli” nipoti)
Ogni documento XML VALIDO deve avere un closing tag, un marcatore di chiusura corretto.
IT MUST HAVE IT, IT IS ILLEGAL TO OMIT THE CLOSING TAG
I tags sono CASE SENSITIVE ovvero MAIUSCOLO ≠ MINUSCOLO per intenderci <Pablo> ≠ <pablo>
I tags devono essere CORRETTAMENTE ANNIDATI UNO DENTRO L'ALTRO (vedi esempio successivo)
Well Formed (= valid) XML exampleWell Formed (= valid) XML example <libreria>
<libro categoria=“Letteratura italiana”> <titolo> I Malavoglia </titolo> <autore> Giovanni Verga </autore> <editore> Fratelli Treves </editore> <anno> 1881 </anno> <luogo> Milano</luogo>
</libro><libro categoria=“Letteratura russa”>
<titolo> Guerra e Pace </titolo> <autore> Lev Nikolaievič Tolstoj </autore> <editore> Tipografia Universitaria </editore> <anno> 1873 </anno> <luogo> Mosca</luogo>
</libro></libreria>
categoria è un attributo
dell'elemento libro
elemento radice, root
OSSERVA LE FRECCE OSSERVA LE FRECCE Gli elementi libreria, libro, titolo, autore, editore, anno, luogo sono correttamente chiusi e annidati uno dentro l'altro
N. B.: Le frecce e i colori NON sono presenti nel codice XML, le usiamo noi solo per motivi didattici
RISPETTARE LE RISPETTARE LE REGOLE Number 2REGOLE Number 2Uff!Uff!
Il simbolo < (“minore di”) si fa mediante < (=less than)
NON USARE < nel codice XML < < less than
> > greater than
& & ampersand
' ' apostrophe
" “ quotation mark
5 ENTITY REFERENCESPREDEFINITEDA SAPERE!!
<! --- This is a comment ---> Commento al codice
Gli spazi bianchi sono conservati in XML (a differenza di HTML)
Attributi tra virgolette : <nota data= “01/01/2018”>
IL PROLOGOIL PROLOGO Il prologo è OPZIONALE
Se esiste va posto all'inizio nel documento
Esempio di prologo:
<?xml version=“1.0” encoding=“UTF-8”?>
E' TUTTO MOLTO SEMPLICE, MA BISOGNA RISPETTARE LA SINTASSI → ATTENZIONE AI ? (vedi frecce)Stiamo semplicemente dando un'informazione di servizio: il file (che segue) è nella vesione 1.0 con encoding (= gestione caratteri) Unicode UTF-8 è lo standard attuale capace di gestire (quasi) tutti i simboli di (quasi) tutti gli alfabeti del mondo
pay attention PLEASE
IN PRINCIPIO FU ASCII (American Standard Code for Infomation Interchange)
GLI ELEMENTIGLI ELEMENTIUn elemento XML è tutto ciò che è contenuto tra il tag di
inizio dell'elemento stesso e il tag di fine dell'elemento Un elemento può contenere:
Testo Attributi (vedi slide successiva) Altri elementi Testo + Attributi + Altri elementi Può essere vuoto o self-closing
<prezzo></prezzo>Elemento vuoto (ad es. perché non ho il dato ma lo voglio comunque indicare nella struttura)
<prezzo />Elemento self-closing
comando equivalente ad un elemento vuoto
=
GLI ATTRIBUTIGLI ATTRIBUTICome in HTML anche in XML gli elementi possono
contenere attributiAttenzione che
ci può essere un solo attributo non sono consentiti i sotto attributi gli attributi non sono facilmente espandibili
Consiglio: se non ti servono non usarli, usa gli elementi!
<prezzo valuta=“euro”> 24,55 </prezzo>
<prezzo valuta=“dollaro”> 24,55 </prezzo>
<cellaExcel formato=“Testo”> IVA </cellaExcel><cellaExcel formato=“Numero”> 3,378 </cellaExcel>
<prezzo><valuta> euro </valuta><valore> 24,55 </valore></prezzo>
Questo esempiocon gli elementiè equivalente alprimo con gli attributi
REGOLE dei nomi in XMLREGOLE dei nomi in XMLUFFF!!!
I nomi degli elementi sono case-sensitive
I nomi degli elementi devono iniziare con una lettera o un _
I nomi degli elementi NON possono iniziare con xml (XML, Xml xMl e combinazioni)
I nomi degli elementi NON possono contenere spazi vuoti
MEGLIO EVITARE: Il trattino - nel nome NO book-title SI book_title
Il punto . nel nome NO book.title SI book_title
I due punti : nel nome NO book:title SI book_title
I nomi degli elementi NON possono contenere spazi vuoti NO book title SI book_title
underscore
STILI PIU' COMUNISTILI PIU' COMUNI Undescore o Snake style <nome_autore>
lower case Style <nomeautore>
UPPER CASE STYLE <NOMEAUTORE>
Pascal Case Style <NomeAutore>
Camel Case Style <nomeAutore>
SCONSIGLIATO IL KEBAB STYLE <nome-autore>VIETATO LO SPAZIO VUOTO <nome autore>NO a due punti : e punto .
Pascal Case per taluni è un caso particolare di Camel Case (quante gobbe ha il cammello?)
Scegli il tuo preferito (I like snakes ;-))
No!Nein!Нет!
<nome:autore> <nome.autore>
Voi non lo sapete
che io, Pascal,
la Probabilità
Può essere richiesto in verificaXML TREEXML TREERiguarda la slide № 8
Prova anche tu a creare uno schema ad albero → codice e viceversa
Come abbiamo visto un file XML ha una struttura ad albero, ecco il diagramma corrispondente al codice di slide № 8
Root element:<libreria>
Element:<libro>
Attribute:categoria
Element:<titolo>
Element:<autore>
Element:<editore>
Element:<anno>
Element:<luogo>
Come si vede nello schema, c'è un elemento radice <libreria>, elemento parent (genitore), elemento <libro> child (figlio) di libreria che ha un attributo “categoria”, a sua volta è parent dei children <titolo> <autore> <editore> <anno> <luogo>
Faccio un po' di esercizi sugli alberi
perché per me li mette in verifica
XML NAMESPACESXML NAMESPACESI namespaces, che sono molto importanti e comuni, permettono di evitare conflitti tra nomi → errore → XML NON validoPer esempio
<table> <tr> <td>Milano</td> <td> Torino </td>
<td> Venezia<td> </tr></table>
Tabella1 Tabella2
PROBLEMA
<table> <nome>Kaliningrad</nome> <oblast> Kaliningrad</oblast> <abitanti>467 289</abitanti></table>
Tabella1NON COMPATIBILE
con Tabella2CONFLITTO!!!
→ Errore
SOLUZIONE!
INTRODUCO DUE PREFISSI PER DUE TIPI
DIVERSI DI TABELLE
ORA NON C'E' PIU' CONFLITTO NEI
NOMI
<I:table> <I:tr> <I:td>Milano</I:td> <I:td> Torino </I:td>
<I:td> Venezia</I:td> </I:tr></I:table>
HO INTRODOTTO i PREFISSI I: e R: per distinguere i due tipi di tabelle
<R:table> D<R:nome>Kaliningrad</R:nome> D<R:oblast> Kaliningrad</R:oblast>D<R:abitanti>467 289</R:abitanti></R:table>
<table> <nome>Kaliningrad</nome> <oblast> Kaliningrad</oblast> <abitanti>467 289</abitanti></table>
XML NAMESPACES (2)XML NAMESPACES (2)In realtà ci vuole ancora un passaggio i due tipi di tabelle dovranno essere definiti in un apposito namespace (=spazio di nomi) con l'attributo
xmlns che punta ad una URL in tale url potrebbero essere contenute informazioni sul namespace (non è obbligatorio però)
<I:table xmlns:I=“http://www.cittaitaliane.org”> <I:tr> <I:td>Milano</I:td> <I:td> Torino </I:td>
<I:td> Venezia</I:td> </I:tr></I:table>
L'esempio precedente diventa allora spazio dei nomidelle città italiane
URL ipotetico(non esiste)
<R:table xmlns:R=“http://www.cittarusse.org”> <R:nome>Kaliningrad</R:nome> D<R:oblast> Kaliningrad</R:oblast>
D <R:abitanti>467 289</R:abitanti></R:table>
spazio dei nomidelle città russeURL ipotetico(non esiste)
Così il codice XML è VALIDO, non dà errori e permette di gestire due tabelle molto diverse
Per completezza dovrei creare
anche le apposite URL dei
namespaces(con informazioni sul namespace)
namespace I
namespace R
Visualizzazione / Display → Tree ViewVisualizzazione / Display → Tree ViewCome abbiamo detto il codice XML è pensato per la gestione dei dati,non per la sua visualizzazione, tuttavia esistono vari visualizzatori chepermettono di vedere la struttura dei dati presenti nel file.
Questa visualizzazione è detta Tree view
Attenzione la visualizzazione – NON I DATI!! – varia a seconda del visualizzatore ed è diversa dallo schema ad albero di slide № 15
Ad esempio puoi provare i seguenti visulizzatori on-line: ggg
https://codebeautify.org/xmlviewer → metti il codice e clicca Tree View
http://xmlgrid.net → metti il codice e poi clicca submit
http://www.xmlviewer.org → metti il codice e clicca Tree View
https://www.tutorialspoint.com/online_xml_editor.htm
NATURALMENTE NON CI DEVONO ESSERE ERRORI NEL CODICE, DEVE ESSERE UN DOCUMENTO XML VALIDO
e tanti altri programmi
Esempio di visualizzazione TreeViewEsempio di visualizzazione TreeView
TreeView del codice
XML di slide № 8 ottenuta con
xmlviewer http://www.xmlviewer.org/
RedRed Japanese Japanese MapleMaple
Variante
giapponese?
XML DTD & Schema (cenni)XML DTD & Schema (cenni)XML DTD = XML Document Type Definitiontipicamente è un file esterno che definisce la struttura del
documento, con una lista degli elementi legali utilizzati. Un documento XML deve essere
WELL FORMED senza errori di sintassi Ec
VALID validato, coerente con la DTD
<!DOCTYPE note SYSTEM “Note.dtd”>
Esempio di comando che rimanda alla DTD contenuta nel file Note.dtd
XML Schema (pronuncia inglese ski:mǝ) è un altro modo per definire la struttura del documento XML e validarlo
<xs:element name=“note”> <xs:complexType>
<xs:sequence><xs:element name=“to” type=“xs:string”/><xs:element name=“from” type=“xs:string”/>
</xs:sequence></xs:complexType>
</xs:element>
Sto definendo un elemento complesso
complexType strutturato con gli
elementi to e from che sono entrambi stringhe cioè
caratteri
Fattura in XMLFattura in XMLTutto questo che abbiamo visto ha (anche) importanti applicazioni economiche ad esempio il formato standard delle fatture elettroniche
http://www.fatturapa.gov.it
http://www.fatturapa.gov.it/export/fatturazione/it/a-3.html
SITO WEB DELLA FATTURAFATTURAPAPA
Prova ad andare sul sito e scaricare alcuni esempi di fattura elettronica, sono in xml e alla luce di quello che abbiamo visto non sarà difficile capire cosa sta succedendo
<?xml version="1.0" encoding="UTF-8"?><p:FatturaElettronica versione="FPA12" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:p="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/fatture/v1.2 http://www.fatturapa.gov.it/export/fatturazione/sdi/fatturapa/v1.2/Schema_del_file_xml_FatturaPA_versione_1.2.xsd"> <FatturaElettronicaHeader> <DatiTrasmissione> <IdTrasmittente> <IdPaese>IT</IdPaese> <IdCodice>01234567890</IdCodice> </IdTrasmittente> <ProgressivoInvio>00001</ProgressivoInvio> <FormatoTrasmissione>FPA12</FormatoTrasmissione> <CodiceDestinatario>AAAAAA</CodiceDestinatario> </DatiTrasmissione>
PrologoDefinizione namespace
Definizione DTD (schema)
HEADER DELLA FATTURADati trasmissione,Id Trasmittente (codice Trasmittente)Id Paese (codice Paese)… etc etc … poi ci sarà il BODY
e così via...
Cenni alla
Bilancio in XBRLBilancio in XBRL
Un'altra importante applicazione economia è XBRL il formato standard dei bilanci elettronici, con cui bisogna depositare il bilancio presso il Registro delle Imprese
Cenni al
https://webtelemaco.infocamere.it/client_TEBEplus/WebTLMC/xbrl_home.html
Clicca sui links per vedere le informazioni ufficiali sui bilanci in XBRL
Tipicamente questi file sono COMPLICATI e sono creati direttamente dal software gestionale, ma il principio è quello che abbiamo visto (XML)
La DTD (Document Type Definition) include la TASSONOMIA ovvero le corrette categorie e regole secondo i Principi Contabili Italiani [ Tassonomia dal greco taxis ordine + nomos norma regola ]
https://www.mkt.it/bilancio/help-bilancio-it/html/TN101783-20070209.xbrl
Clicca sul link per vedere un'esempio di bilancio in XBRL
http://www.agid.gov.it/agenda-digitale/pubblica-amministrazione/formato-xbrl-dati-contabili
τάξις νόμος
Office → XML is possible ;-)Office → XML is possible ;-)Anche i programmi che usate normalmente, come Word, Excel, Power Point e le equivalenti versioni OpenSource (LibreOffice) vi permettono di salvare il vostro file in formato XML.
Prova a creare o prendere un semplice documento word o un foglio di lavoro o una presentazione e a salvarla in formato XML (cerca l'opzione che ha per estensione .xml). Quindi prova ad aprire il file con l'editor di testo e vedrai che il documento è stato convertito automaticamente in XML, pronto ad essere trasferito/conservato/modificato.
E' un altro modo di gestire/trasferire i dati.Il file è comprensibile all'umano, salvo che nelle parti corrispondenti alle figure che ovviamente vengono trasformate in una “marea” di numeri e caratteri che corrispondono ai tanti pixel utilizzati. Il testo “è in chiaro” leggibile anche dall'umano, fatto che non è in generale vero per un file di dati.
Esempio con OpenOfficeWriter (Word)Esempio con OpenOfficeWriter (Word)
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd"><article lang=""> <para>In probability theory, the normal (or Gaussian) distribution is a very common continuous probility distribution. Normal distributions are important in statistics and are often used in the natural and social sciences to represent real-valued random variables whose distributions are not known.</para> <para>The normal distribution is useful because of the <ulink url="https://en.wikipedia.org/wiki/Central_limit_theorem">central limit theorem</ulink>.</para>
Codice automaticamente generato da Libreoffice (o Word) salvando il documento in formato XML, i tags sono stati inseriti dal programma e sono di facile comprensione (anche dall'umano).
Esempio con OpenOfficeCalc (Excel)Esempio con OpenOfficeCalc (Excel)
Codice automaticamente generato da Libreoffice (o Excel) salvando il documento in formato XML, i tags sono stati inseriti dal programma e sono di facile comprensione (anche dall'umano). Si riconoscono le celle di Excel tradotte in XML
<?xml version="1.0"?><?mso-application progid="Excel.Sheet"?><Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel"<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office"> <Author>DocenteLab</Author> <LastAuthor>docentelab</LastAuthor> <Revision>21</Revision> <TotalTime>28</TotalTime> <Created>2009-04-16T10:32:48Z</Created> <LastSaved>2017-10-31T07:20:43Z</LastSaved> <Version>12.00</Version> </DocumentProperties>
Quante belle informazioni!Chi l'ha creato?
Il docentelabQuando l'ha salvato?
Il 31/10/2017
<Cell><Data ss:Type="Number">43</Data></Cell>
Ecco le celle di Excel!!
Useful linksUseful links
Questi BREVI CENNI sull XML sono tratti dal sito web
https://www.w3schools.com/xml
a cui rimandiamo per chi volesse
APPROFONDIRE
Nuoce gravemente alla salute