XML per documenti e applicazioni transazionali su Internet Alessio Saltarin (alessios@docflow.it)...

Preview:

Citation preview

XMLper documentie applicazioni transazionalisu InternetAlessio Saltarin (alessios@docflow.it)Progetto XML Factory

PERCORSO

• ELEMENTI DI XML– Sintassi, DTD, Namespace, Schema

• XML PER DOCUMENTI– Gestione documentale– L’approccio Microsoft

• XML PER DATI– Knowledge Management

• XML OGGI– Tecnologie correlate

Elementi di XML

Struttura e Sintassi

• Prologo:– <?xml version=“1.0” encoding=“ISO-8859-1” standalone=“yes”?>

• Document Type Declaration (DTD)– <!DOCTYPE Reagenti SYSTEM “Reagenti.dtd”>

• Document Element (Root)– <REAGENTI></REAGENTI>

Un primo esempio<?xml version="1.0" ?><Reagenti>

<Riga ID=“2”><descrizione>Acetaldeide</descrizione><pezzatura>ammoniaca</pezzatura><qualifica>RPE</qualifica><ps>15</ps><massa_molec>mm 61,08</massa_molec><titolo>99% (alcalimetrico</titolo><punto_fusione>95.0C1.5C</punto_fusione>

</Riga><Riga ID=“5”>

<descrizione>Acetale</descrizione><qualifica>RE</qualifica><ps>20</ps><massa_molec>mm 118,17</massa_molec><titolo>98% (GLC) </titolo><densita>20/4 = 0.8310.005</densita><idx_rifrazione>20/D = 1.3800.003</idx_rifrazione><punto_eboll>102.2C (b.r. 1.0C) </punto_eboll>

</Riga></Reagenti>

Nomi di tag• XML è case-sensitive

– <Para>, <PARA>, <para>, e <PaRa> sono tutti elementi diversi.

• Devono cominciare con una lettera, un underscore (_), o due punti (:)

• Possono includere lettere, numeri, punti (.), linee (-), underscore (_), o due punti (:)

• Non possono cominciare con “XML”

Primo esempio (reagenti.xml)

• Parsing in Internet Explorer 5.0

• Parsing in Netscape (Mozilla Gecko)

• Editing con XML Spy

ELEMENTI

• Rappresentano la struttura LOGICA

Libro

Titolo

Capitolo

Paragrafo 1:

“Era una notte buia e tempestosa ...”

Paragrafo 2:

“L’oscurità portava con sé molti segreti ...”

ATTRIBUTI

• Gli elementi possono contenere:

– Dati– Attributi

<Autore ID=“KJ121”>A. Saltarin</Autore><Autore ID=“KJ121”>A. Saltarin</Autore>

Utilizzo di attributi<?xml version="1.0" ?><Reagenti>

<Riga ID=“2”><descrizione>Acetaldeide</descrizione><pezzatura>ammoniaca</pezzatura><qualifica>RPE</qualifica><ps>15</ps><massa_molec unità=“mm” >61,08</massa_molec><titolo tipo=“alcalimetrico” >99%</titolo><punto_fusione gradi=“centigradi” >95.0</punto_fusione>

</Riga><Riga ID=“5”>

<descrizione>Acetale</descrizione><qualifica>RE</qualifica><ps>20</ps><massa_molec unità=“mm” >118,17</massa_molec><titolo tipo=“GLC” >98%</titolo><densita misura=“20/4” > 0.8310.005</densita><idx_rifrazione misura=“20/D” >1.3800.003</idx_rifrazione><eboll gradi=“Celsius” tipo=“(b.r. 1.0C) ” >102.2</eboll>

</Riga></Reagenti>

ENTITA’

• Rappresentano la struttura fisica• Sono “parti di testo” che il processore

XML inserisce dove sono referenziate• Possono essere un solo carattere o un

intero libro• Possono essere immagini, animazioni,

file PDF o record di database

<Email>Scrivete a: &MIOEMAIL;</Email>

<!ENTITY MIOEMAIL “alessios@docflow.it”>

REFERENZA (reference):

DICHIARAZIONE (entità parsabile):

Unparsed Entities e Notazioni

L’entità MyImage è un file binario in notazione PNG:<!ENTITY MyImage SYSTEM “image001.png” NDATA PNG>

La notazione PNG è processata dal programma Viewer.exe:

<!NOTATION PNG SYSTEM “/utils/viewer.exe”>

Document Type Definition (DTD)

• Definisce Elementi, Attributi, Entità e Notazioni

• Dichiara quali di questi sono legali nel documento…

• …e in quale posto sono legali

• La conformità ad una DTD si dichiara nella sezione DOCTYPE del file XML

XML+DTD = ML

<?xml?>DTD

Mark-Up Language

Una semplice DTD

<?xml version="1.0" encoding="UTF-8"?>

<!ELEMENT Reagenti (Riga)><!ELEMENT Riga (descrizione+, pezzatura, qualifica, ps,

massa_molec, titolo, titolint, densita*, idx_rifrazione*, punto_fusione*, punto_eboll*)>

<!ATTLIST RigaID ID #REQUIRED>

<!ELEMENT descrizione (#CDATA)><!ELEMENT pezzatura (#CDATA)><!ELEMENT qualifica (#CDATA)><!ELEMENT ps (#CDATA)><!ELEMENT massa_molec (#CDATA)><!ELEMENT titolo (#CDATA)><!ELEMENT titolint (#CDATA)><!ELEMENT densita (#CDATA)><!ELEMENT idx_rifrazione (#CDATA)><!ELEMENT punto_fusione (#CDATA)><!ELEMENT punto_eboll (#CDATA)>

TIPI FONDAMENTALI• #PCDATA (Parsable Character Data)

Sono caratteri che possono contenere tags e quindi vanno parsati (questo è anche il tipo di default).

• #CDATA (Character Data) Sono caratteri che in ogni caso il parser deve ignorare.

• EMPTYQuesto elemento non può contenere

dati.

• ANYQuesto elemento può contenere qualsiasi

tipo.

ATTRIBUTI GENERICI

• #REQUIRED Ogni elemento deve specificare il valore

di questo attributo.

• #IMPLIED Attributo opzionale.

• #FIXED valueIl valore “value” è l’unico possibile per

l’attributo. Può essere implicito o esplicito.

• defaultIl valore “default” è assunto se il

documentonon ne specifica altri.

Una DTD per E-MAIL...

<?xml version="1.0"?>

<!ELEMENT EMAIL (TO+, FROM, CC*, BCC*, SUBJECT?, BODY?)><!ATTLIST EMAIL LANGUAGE (Western|Greek|Latin|Universal) "Western" ENCRYPTED CDATA #IMPLIED PRIORITY (NORMAL|LOW|HIGH) "NORMAL">

<!ELEMENT TO (#PCDATA)><!ELEMENT FROM (#PCDATA)><!ELEMENT CC (#PCDATA)>

<!ELEMENT BCC (#PCDATA)><!ATTLIST BCC HIDDEN CDATA #FIXED "TRUE">

<!ELEMENT SUBJECT (#PCDATA)><!ELEMENT BODY (#PCDATA)>

<!ENTITY SIGNATURE "Bill">

… e rispettivo MarkUp Language

<?xml version="1.0"?><!DOCTYPE EMAIL SYSTEM ”email.dtd" [ <!ENTITY SIGNATURE ”andrea"> ]>

<EMAIL LANGUAGE="Western" ENCRYPTED="128" PRIORITY="HIGH"> <TO> federico@docflow.com </TO> <FROM> &SIGNATURE;@docflow.com</FROM> <CC> cristiano@docflow.com </CC> <BCC> alessio@docflow.com </BCC> <SUBJECT> Utilizziamo il mark-up per le email </SUBJECT><BODY> Ciao da &SIGNATURE;. Ti saluto, -&SIGNATURE; </BODY></EMAIL>

VALIDITA’

• Documenti validi (valid):– Un documento valido rispetta

strettamente le regole definite nella DTD

• Documenti ben formati (well formed):– Un documento ben formato rispetta

completamente la specifica XML definita dall’ente standardizzatore (W3C)

PARSER VALIDANTI

• Lo sono quelli che non permettono di parsare documenti che non rispettino le regole contenute nella DTD (es.:MSXML, XMLSpy)

• Parser non validanti non effettuano alcun controllo di validità del documento (es.: IE5).

NAMESPACE

• Qualificano gli elementi in maniera unica su tutto il Web.

• Permettono agli sviluppatori di utilizzare mark-up provenienti da “schema” o DTD diverse.

• I componenti “schema” sono riutilizzabili.

Esempio di Namespace<ec:Order xmlns:ec="http://ecommerce.org/schema/” xmlns:dsig="http://digitalSignatures.org/schema/" xmlns:df=”http://www.docflow.it/"> <dsig:dsig> <ec:Manifest>80183589575795589189518915</ec:Manifest> <ec:Sig href="http://XYX/Joe@company.com"/> </dsig:dsig> <ec:SoldTo> <ec:LastName>Petti</ec:LastName><ec:FirstName>Carlo</ec:FirstName> </ec:SoldTo>

<ec:SoldOn dt:baseType="date.iso8601">15-06-99</ec:SoldOn> <ec:Item Price=”85.000"> <bk:BOOK xmlns:bk="http://books.org/schema/” TITLE="Number, the Language of Science" AUTHOR="Dantzig, Tobias"/> </ec:Item> <ec:Item Price=”60.000"> <bk:BOOK xmlns:bk="http://books.org/schema/” TITLE="Introduction to Objectivist Epistemology" AUTHOR="Rand, Ayn"/> </ec:Item></ec:Order>

XML-Data (Schema)

Cosa che c’è che non va in DTD?

• Ha una sintassi difficile e non xml-like

• Non supporta i tipi (intero, stringa)

• Non supporta specificamente i Namespace

• Non permette l’ereditarietà fra componenti

Esempio di “Schema”<?xml version ="1.0"?><Schema name="Weather Report” xmlns:dt="urn:schemas-microsoft-com:xml-data">

<ElementType name="weather" content="eltOnly" order="seq"><element type="city" minOccurs="1" maxOccurs="*"/>

</ElementType><ElementType name="city" content="eltOnly" order="seq">

<element type="name"/><element type="report"/>

</ElementType><ElementType name="report" content="eltOnly" order="seq">

<element type="high"/><element type="low"/><element type="precip" minOccurs="0" maxOccurs="1"/>

</ElementType><ElementType name="precip" content="textOnly" dt:type="r4">

<AttributeType name="day_total" dt:type="r4" required="yes"/><AttributeType name="type" dt:type="enumeration" dt:values="rain snow"

default="rain"/><AttributeType name="force" dt:type="enumeration" dt:values="light heavy"/><attribute type="day_total"/><attribute type="type"/><attribute type="force"/>

</ElementType></Schema>

XML per Documenti

FRAMEWORK

ODB

(RDB)XMLFactory

File System

LaTeX

CSS/XSL

PDF™

Carta

Web

CDROM

DocFlow XML Factory

L’obiettivo è avere uno strumento in grado di:

• offrire rappresentazioni automatiche e molteplici di uno stesso flusso di dati (es: cataloghi elettronici, e-commerce, report aziendali)

• validare il dato prima di presentarlo

• creare “on the fly” cataloghi personalizzati su carta, su Web oppure su CDROM

Documenti Ricchi

• HTML è abbastanza potente per formattare pagine Web, ma non lo è per pagine da stampare su carta.

• Con XML e un appropriato foglio di stile possono essere definiti linguaggi di markup con riferimenti specifici alla carta.

Un esempio di markup per la carta

<?xml version="1.0"?><libro><titolo> Alice nel paese delle meraviglie </titolo><autore> Lewis Carrol </autore><capitolo numero=“1”><formato pagina=“A4” vedove=“sì” orfani=“no”

numpagina=“basso a destra” num_sulla_prima_pagina=“no” sillabazione=“no”

margine_alto=“15mm”margine_basso=“15mm” margine_destro=“20mm” margine_sinistro=“20mm”rilegatura=“no”/>

<paragrafo></paragrafo></capitolo>< /libro>

Documenti XML su carta

Documento Documento XMLXML

Processore XML2TEX

Processore XML2PS

TEX PostScript™

APPROCCIO MICROSOFT™

• E’ possibile visualizzare un documento XML ben formato che contenga tag HTML in qualsiasi browser.

• Documenti che contengano tag XML di formattazione possono essere utilizzati da word-processor e visualizzati nel browser senza perdere informazioni, né di formato, né di contorno (autore, soggetto, data).

Linee guida Microsoft™

• XML– E’ usata estensivamente nei siti MS

(esempio) – E’ la tecnologia Web in Office2000

• Parser XML – E’ implementato nativamente in IE5

• Tecnologie supportate – XML attraverso W3C– XSL, Schema (CDF)

MS Word 2000<html xmlns:v="urn:schemas-microsoft-com:vml"xmlns:o= "urn:schemas-microsoft-com:office:office"xmlns:w= "urn:schemas-microsoft-com:office:word"

xmlns="-//W3C//DTD HTML 4.0//EN">

<head><title>MS Word 2000 e XML</title></head><!--[if gte mso 9]> <xml> <o:DocumentProperties> <o:Author>Alessio Saltarin</o:Author> <o:LastAuthor>Alessio Saltarin</o:LastAuthor> <o:Revision>1</o:Revision> <o:TotalTime>23</o:TotalTime> <o:Created>1999-06-06T07:17:00Z</o:Created> <o:LastSaved>1999-06-06T07:17:00Z</o:LastSaved> <o:Pages>1</o:Pages> </o:DocumentProperties> <w:WordDocument> <w:HyphenationZone>14</w:HyphenationZone> </w:WordDocument></xml>

Output di Word 2000

• Su carta – utilizza gli attributi definiti nelle tag

xml <o:> e <w:>

• Su Web – utilizza CSS 2.0 standard

XML per i dati

Due Approcci...

• Ad oggetti – permette di mantenere la struttura

gerarchica del dato e di associarvi contenuto attivo attraverso i metodi.

• Relazionale– compatibilità con l’esistente– interoperabilità tra vari formati

… un solo obiettivo:far viaggiare i dati

ODB

(RDB)

XML

Factory

LaeX

PDFCDROM

ODB

(RDB)

Esempi

• Data Source Object (DSO)– XML come Access, SQL Server,

Oracle…– Esempio: Booklist

• Ricercare dati– Data Scripting con Data Islands– Esempio: Datascripting

XML Oggi

Document Object Model (DOM)

• E’ un API per HTML e XML

• Definisce la struttura logica dei documenti (gerarchia)

• Definisce il modo in cui un documento è acceduto e manipolato

• XML presenta il dato…

• … e DOM lo manipola.

• E’ attualmente implementabile in Java, JavaScript e IDL. E’ concepito per essere cross-platform.

DOM: Utilizzo della metafora dei nodi

// Iterazione fra tutti i nodi di un documento

objThisNode.childNodes.reset();objCurrentNode = objThisNode.childNodes.nextNode();do{

// Faccio qualcosa con il nodo correnteobjCurrentNode = objThisNode.childNodes.nextNode();

} while (objCurrentNode != null);

XSL

• E’ usato per applicare stili a XML

• Discende direttamente da DSSSL

• Applica gli stili seguendo un “pattern-matching”

• Può contenere script Javascript - vantaggio rispetto alla soluzione CSS

• Difficile… esempi

• Pro: Microsoft, IBM, Adobe ...

Contro XSL: CSS+DOM(Michael Leventhal - mozilla.org)

• XSL non aggiunge funzionalità che non siano già presenti nelle specifiche CSS e DOM

• Non supporta documenti interattivi

• XSL è difficile, contorto e non verrà accettato dalla comunità Web

• Contribuisce alla creazione di nuovi “standard” che minano quelli esistenti

• Docflow: a differenza di DSSSL non serve per andare su carta!

• Contro XSL: Netscape, Sun.

XLL (Xlink)

• Descrive i collegamenti tra diverse sorgenti XML

• Funzionalità– Collegamento con URL HTTP– Link semplici: <A> di HTML– Link estesi: reverse linking, multipoint

linking.• XPointer : collega parti dello stesso

documento.

XQLQuery:

//clienteRisultato:

<xql:result> <cliente> Wile E. Coyote, Death Valley, CA </cliente> <cliente> Camp Mertz </cliente></xql:result>

XML Data Islands• XML in una pagina HTML• Sono “isole” di XML ben formato in documenti

HTML• Devono istanziare un processore XML• Sono identificate da un ID• Esempio:

<XML id=“author-info”><author>

<name>Brian Travis</name><affiliation>Architag University</affiliation>

</author></XML>

STRUMENTI

Ecco una lista esauriente di strumenti disponibili sul mercato che rispettano completamente le direttive/proposte W3C:

Ora Prossimo Futuro• XSL 0 ?• XLink 0 ?• XQL 0 ?• DOM 0 ?• Namespace 0 ?• Schema 0 ?

COSA FARE?

• Cominciare a strutturare i propri documenti

• Utilizzare XML• Utilizzare le tecnologie di supporto

standard (CSS)• Scrivere le proprie applicazioni

(utilizzando i comuni linguaggi: Basic, C++, Java)

RIFERIMENTI

• http://www.w3.org/TR/1998/REC-xml-19980210

• http://www.xml.com/xml/pub• http://msdn.microsoft.com/xml/default.asp• http://xmlu.com (<TAG>)• news://comp.text.xml• http://www.alphaworks.ibm.com/tech• http://www.ucc.ie/xml/ (faq)

BIBLIOGRAFIA ESSENZIALE

• Goldfarb-Prescod THE XML HANDBOOK (Prentice Hall)

• HomerXML IE5 (Wrox)

• MegginsonSTRUCTURING XML DOCUMENTS (Prentice Hall)

• Boumphrey - DiRenzo - GrafXML APPLICATIONS (Wrox)

• McGrathXML BY EXAMPLE (Prentice Hall)

</seminario>

Q&A

alessios@docflow.it

Recommended