Cenni su SGML, HTML, XML

Download Report

Transcript Cenni su SGML, HTML, XML

Cenni Su SGML, HTML, XML

SGML (Standard Generalized Markup
Language) è il padre di tutti i linguaggi
"Markup"
–
Lo svantaggio è la "pesantezza" dei suoi documenti:

HTML (HyperText Markup Language) è a tutti
gli effetti un'istanza di SGML.

XML (eXtensible Markup Language) nasce
come semplificazione dell'SGML e come
strumento per la trasmissione di dati insieme
alla loro semantica.
XMLSchema: cos'è e a cosa serve

Scambio di informazioni/dati deve essere
trattato in modo automatico

I documenti XML usati da più partner devono
avere la stessa struttura

Attraverso le DTD è possibile garantire questa
coerenza

MA le DTD hanno una propria sintassi
particolare che bisogna imparare e non sono
molto flessibili.
XMLSchema a cosa serve

Uno strumento più semplice è XMLSchema.

Un documento XMLSchema associato a un
documento XML svolge la stessa funzione di
una DTD.

l'XML può essere validato con il documento
XSchema,

XMLSchema offre strumenti completi ad
esempio il range di valori di ogni campo.

Un altro vantaggio dei documenti XMLSchema
è che sono scritti in XML stesso.
XMLSchema – Per capire

Pensiamo ai documenti XML come contenitori
di dati

I linguaggi di programmazione ad oggetti
permettono di definire classi con determinate
proprietà

Un oggetto istanza di una classe avrà dei valori
per certe proprietà e il sistema controllerà che i
valori e i tipi siano corretti

In Xschema avviene una cosa analoga
XMLSchema - Per capire

Un documento XML contiene elementi, i quali a
loro volta contengono attributi, testo o altri
elementi;

La definizione di regole su struttura sui tipi e sui
vincoli è analoga alla definizione di una classe
per un linguaggio ad oggetti (es. JAVA),

Il documento XML può essere pensato quindi
come un oggetto istanza della classe.
XMLSchema: definizione formale

Esistono due versioni di XMLSchema :
–
–
World Wide Web Consortium (W3C) e
Microsoft, XDRSchema.

Nel 2001 lo Schema W3C è stato accettato come
standard;

XDRSchema di Microsoft ha struttura e regole
analoghe.

XML Schema Part 0: Primer e XML Schema Part 1:
Structures
–
–
–
contengono la descrizione completa e sistematica dello
strumento
il primo documento in modo più discorsivo e con molti esempi,
il secondo in modo più formale.
XML Schema Part 2: Datatypes

L'elenco dei tipi di dati predefiniti in
XMLSchema.

XMLSchema Definisce le regole per scrivere in
modo corretto un documento,

E’ utile anche per ricavare un modello formale
del documento,

Dopo, un apposito parser, può effettuare la
validazione di documenti XML basati sullo
stesso modello formale.
XML Schema Part 2: Datatypes

Forse non esiste ancora alcun parser per la
versione corrente del linguaggio,

W3C sta lavorando sul passaggio a un modello
formale
–

(XML Schema: Formal Description )
Fioriscono anche molte tecniche, parallele o
alternative allo Schema, per validare documenti
XML

Schematron , TREX , RELAX , …
Attuali applicazioni di XMLSchema

Aziende che pubblicano in XML, in modo che
clienti o partners commerciali possano usarli,

Esistono anche proposte "no-profit", che
nascono tipicamente in ambito universitario

NOTA: C'è ancora una netta predominanza di
DTD

Xschema è promettente per il futuro ma è in
fase di "promozione“

La versione più utilizzata è XDRSchema di
Microsoft
Applicazioni future di XMLSchema

Esempio importante è la cartella clinica elettronica;

Dovrebbe garantire al paziente continuità di cura

Se un medico, in America, deve soccorrere un turista
infortunato, potrà disporre dell'intera storia clinica del
paziente;

La cartella clinica elettronica ottimale è un oggetto
complesso

Dovrebbe contenere anche i vari protocolli di cura per
ciascuna patologia e informazioni sul loro costo, tra le
altre cose.
XMLSchema - Introduzione

Esempio preso dalla rete.

Vogliamo dare accesso ai genitori sul
rendimento scolastico dei figli via rete.

Scambiare dati attraverso documenti XML.

Occorre definire la struttura.

Consideriamo il prospetto dei voti per tre
materie e non consideriamo alcuni vincoli.
Lo sviluppo di un esempio

Bisogna inserire l'intestazione del documento, dove
viene specificato il namespace,


Direttamente riferimento alla descrizione di tipi semplici e
complessi presenti sul sito della W3C
In annotation vanno ad esempio i commenti.
<xsd:schema xmlns:xsd=
"http://www.w3.org/2001/XMLSchema">
<xsd:annotation>
<xsd:documentation xml:lang="it">
XML tutorial di esempio per GECO
</xsd:documentation>
</xsd:annotation>
Definizione: Elemento "studente"

Elemento "studente" di tipo "StudentType", struttura
dati principale.

Occorre definire il nuovo tipo, complesso perché deve
contenere elementi ed attributi.
<xsd: element name="studente" type="StudentType"/>
<xsd: complexType name="StudentType">
<xsd:sequence>
<xsd:element name="cognome" type="xsd:string"/>
<xsd:element name="nome" type="xsd:string"/>
<xsd:element name="sesso" type="SexType"/>
<xsd:element name="indirizzo" type="AddressType"/>
<xsd:element name="classe" type="ClassType"/>
<xsd:element name="pagella" type="ReportType"/>
</xsd:sequence>
<xsd:attribute name="matricola" type="xsd:integer"/>
</xsd:complexType>
Studente: Spiegazione

Gli elementi "nome" e "cognome" sono due stringhe,
tipi base.

Gli altri campi devono essere definiti.

Il tag "sequence" indica che il tipo "StudentType" è
composto da più elementi, mentre nella penultima riga
viene inserito un attributo all'interno del tag di un
oggetto "StudentType".

Mentre tutti gli altri tag vanno aperti e chiusi, per un
elemento o un attributo il tag di chiusura viene
sostituito da un "/" dopo la dichiarazione del tipo.
Definizione : AddressType

AddressType è un tipo complesso che al suo
interno ha tre elementi.
<xsd:complexType name="AddressType">
<xsd:sequence>
<xsd:element name="nomeVia" type="xsd:string"/>
<xsd:element name="CAP" type="xsd:integer"/>
<xsd:element name="citta" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>

Nomevia, cap, citta sono tipi base String o
Integer (simile ad un linguaggio di
programmazione)
Definizione: "SexType"

"SexType" con vincoli interni

Tali vincoli restringono il campo dei valori di un tipo di
base tramite il tag "restriction".

I valori che possono essere assunti da un elemento di
tipo "SexType" vengono elencati tramite il tag
"enumeration",
<xsd:simpleType name ="SexType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="M"/>
<xsd:enumeration value="F"/>
</xsd:restriction>
</xsd:simpleType>
Definizione: "ClassType"

Per "ClassType" viene specificata la struttura che può
essere assunta da un elemento di questo tipo.
–
–
Un elemento di tipo "ClassType" deve essere composto da un
numero seguito da una lettera maiuscola.
I tipi sono dichiarati semplici quando al loro interno non sono
presenti nè elementi nè attributi.
<xsd:complexType name="ClassType">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{1}-[A-Z]{1}"/>
</xsd:restriction>
<xsd:attribute name="sperimentazione">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Bilingue"/>
<xsd:enumeration value="Brocca"/>
<xsd:enumeration value="P.N.I."/>
</xsd:restriction>
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType>
ClassType: Note ulteriori

All'interno di "ClassType", inoltre, viene aggiunto un
attributo che ci permette di introdurre un altro concetto:
"tipo anonimo".

Il tipo dell'attributo "sperimentazione" non viene
dichiarato all'interno del tag,

Viene definito dopo la chiusura del tag con un tipo
semplice.

Si può fare in questo modo solo se nessun altro
elemento utilizza lo stesso tipo.

Nota: così è necessario specificare il tag di chiusura per
l’attributo.
Definizione: Tipo ReportType

Dopo i tipi anonimi, possiamo fare una modifica
al tipo "StudentType"

Dichiariamo l'elemento "pagella" come tipo
anonimo.
<xsd:element name="pagella">
<xsd:complexType mixed="true">
<xsd:sequence>
<xsd:element name="matematica" type="ListOfMarks"/>
<xsd:element name="italiano" type="ListOfMarks"/>
<xsd:element name="edmusicale" type="ListOfMarks"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Definizione: ComplexType MIXED

Definire un complexType mixed permette di inserire
del testo libero, fuori dai tag degli elementi,

Per i tipi degli elementi di pagella, le restrizioni
riguardano i valori assunti dall'elemento voto,
e
"ListOfMarks" è definito come una lista di voti.
<xsd:simpleType name="voto">
<xsd:restriction base="xsd:decimal">
<xsd:minExclusive value="0"/>
<xsd:maxInclusive value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="ListOfMarks">
<xsd:list itemType="voto"/>
</xsd:simpleType>
Come Estendere di un TIPO

Se si può accedere al database della scuola si
possono avere informazioni su studenti già
diplomati.

Per sfruttare il lavoro fatto, è possibile
estendere il tipo studentType aggiungendo
un elemento "votoDiploma".
<xsd:complexType name="GraduatedStudent">
<xsd:extension base="StudentType">
<xsd:element name="voto diploma“type="integer"/>
</xsd:extension>
</xsd:complexType>
Note ulteriori

Si potrebbe effettuare una restrizione sul nuovo
tipo per eliminare i campi riguardanti i voti delle
varie materie che ora risultano superflui.

Si presenta però il problema di permettere in un
documento XML la presenza di uno solo tra
questi due tipi.

Per far questo si usa il tag <choice>, che
permette di scegliere tra uno soltanto degli
elementi contenuti al suo interno