Dall' HTML all' · la struttura, attraverso i tags (= marcatori in italiano) ... elemento root...

26
Pablo Genova [email protected] I. I. S. “Angelo Omodeo” Mortara Indirizzo Tecnico-Economico A. S. 2017 – 2018 XML XML Dall' HTML HTML all'

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 &lt; (=less than)

NON USARE < nel codice XML &lt; < less than

&gt; > greater than

&amp; & ampersand

&apos; ' apostrophe

&quot; “ 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