1 / 88

XML

eXtensible Markup Language. XML. eXtensible. Chiunque può personalizzare il linguaggio aggiungendovi nuovi elementi Metalinguaggio: insieme di regole per la definizione di un linguaggio

noreen
Download Presentation

XML

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. eXtensible Markup Language XML

  2. eXtensible • Chiunque può personalizzare il linguaggio aggiungendovi nuovi elementi • Metalinguaggio: insieme di regole per la definizione di un linguaggio • Esistono diversi “dialetti” xml, che condividono le regole grammaticali e sintattiche del linguaggio xml • Bisogno di uno sviluppo “coordinato” dei linguaggi XML

  3. Markup • Annotazione inserita all’interno del testo di un documento utilizzata per inserire informazioni aggiuntive (grafiche, strutturali, semantiche, …) • In generale un linguaggio di markup descrive i meccanismi di rappresentazione (strutturali, semantici o presentazionali) del testo che, utilizzando convenzioni standardizzate, sono utilizzabili su più supporti (Wikipedia)

  4. World Wide Web Consortium • Organizzazione il cui scopo è lo sviluppo delle tecnologie destinate al World Wide Web • Standardizzazione • Recommendation • HTML • CSS • SGML

  5. SGML • Standard General Markup Language • Matalinguaggio che permette di definire diversi linguaggi di marcatura • Sviluppato nei primi anni '70 da Goldfarb e altri presso IBM e poi standardizzato dall'ISO • Permette di definire sia aspetti strutturali che di formattazione • Estremamente complesso • Linguaggi derivati da SGML • HTML • XML • …

  6. All’inizio era HTML • Linguaggio “spurio”, che descrive sia elementi strutturali che di formattazione • Difficoltà di analisi automatica dei documenti • Necessità di separare i due aspetti • Riutilizzo delle impostazioni di formattazione (CSS, …)

  7. … poi, arrivò XML • Nuovo linguaggio standardizzato, estremamente flessibile e sintatticamente rigoroso • Molto più semplice dell’SGML, conserva comunque le caratteristiche salienti di tale linguaggio • Permette di comporre documenti comprensibili sia all’uomo che alla macchina

  8. XML • In HTML la rappresentazione dei dati si basa sulla forma • In XML la rappresentazione dei dati è resa attraverso la struttura • Indipendenza dei dati => netta separazione tra il contenuto e la sua rappresentazione • Molteplicità dei dati rappresentabili: • testi, immagini, grafici vettoriali, scene 3D ...

  9. XML e Web • Largo impiego dell’XML nel Web • Spesso utilizzato come standard per la comunicazione client/server • La semplicità di elaborazione dei documenti XML consente di demandare al client molti processi • Di recente utilizzato anche come formato per la conservazione ed il recupero di dati strutturati (Database XML) • la struttura agevola le elaborazioni del DB

  10. Tag • elemento sintattico con cui si marcano porzioni di un documento nei linguaggi di markup (Wikipedia) • In XML forma ed uso dei tag sono ispirati agli analoghi tag dell’HTML • Parole chiave racchiuse tra parentesi angolari

  11. Tag • I tag di un documento XML sono sempre in coppia • Tag di apertura • Tag di chiusura <primotag> … (contenuto vario) </primotag>

  12. Tag • La disposizione dei tag è analoga a quella delle parentesi in un’espressione algebrica • Ogni elemento di un documento XML è racchiuso tra un tag di apertura ed il corrispondente tag di chiusura

  13. Tag • Inserimento degli elementi “a scatole cinesi” • L’ordine di chiusura dei tag è inverso a quello di apertura

  14. Tag <primotag> <secondotag> <terzotag> … </terzotag> </secondotag> </primotag>

  15. Tag • La particolare indentazione degli elementi di un documento XML serve soprattutto a semplificare la lettura del documento • Linguaggio estendibile perché permette di inventare sempre nuovi tag • Case sensitive • L’autore del documento è libero di adoperare qualsiasi parola per un tag • Unico vincolo: il rispetto delle regole sintattiche dell’XML

  16. Struttura del documento XML • La struttura di un documento XML è omomorfa a quella di un albero • Ciascun documento ha un elemento radice • L’elemento radice è uno ed uno solo • Ciascun elemento del documento può contenere altri elementi (uno o più) • Un elemento che non contiene altri elementi è una foglia

  17. Struttura del documento XML • Esistono diversi tipi di elementi in un documento XML • Testo • Contenuti particolari • Altri nodi • Interi sottoalberi

  18. Struttura del documento XML • Una coppia di tag può anche non racchiudere alcun contenuto <root> <null></null> </root> • In tali casi si utilizza spesso una forma contratta per rappresentare la coppia dei tag di apertura e chisura <root> <null/> </root>

  19. Struttura del documento XML

  20. Struttura del documento XML <root> <person> <name>John</name> <surname>Smith</surname> </person> <person> <name>Mary</name> <surname>Brown</surname> </person> … </root>

  21. Gli attributi • Ciascun tag può contenere degli attributi nomeattributo=“valoreattributo” • Il valore di un attributo va sempre messo tra virgolette <person sex=“M”> <name>John</name> </person>

  22. Processing Instruction • I dati contenuti in una istruzione di elaborazione vengono passate all’applicazione che usa il documento XML • Solo delimitate dai caratteri <? E ?> • Sono formate da un target e da un valore <?xml-stylesheet type=“text/xsl” href=“usage.xsl” ?>

  23. Intestazione del documento XML • Tutti i documenti XML devono contenere una dichiarazione nel primo rigo <?xml version=“1.0”standalone="yes" ?> (intestazione) <myMessage> <message>hello</message> </myMessage>

  24. Intestazione del documento XML • Anche l’intestazione è un esempio di Processing Instruction • Essa indica la vesrione dell’XML in cui è stato scritto il documento • A volte indica anche se il documento è da ritenersi come una risorsa a se stante o se legata ad altre

  25. Il set di caratteri • I documenti XML possono contenere i seguenti caratteri • Carriage return; • Line feed; • Unicode • I caratteri Unicode possono essere rappresentabili con &#codice; <testoarabo>&#1571;&#1607;</testoarabo>

  26. Il set di caratteri • I caratteri speciali utilizzati da XML vengono riprodotti con la convenzione già nota in HTML: • < ==> &lt; • > ==> &gt; • & ==> &amp; • ' ==> &apos; • “ ==> &quot;

  27. Caratteri vuoti • I seguenti caratteri sono definiti caratteri vuoti • Spazi • Caratteri di tabulazione • Carriage return • Line feed • In genere le applicazioni che gestiscono i documenti XML ignorano lunghe sequenze di caratteri bianchi (normalizzazione)

  28. Le sezioni CDATA • Tali sezioni possono contenere testi, caratteri riservati (come < e >) e caratteri vuoti • Tali caratteri NON sono elaborati dal parser <![CDATA[ 2<3 ]]>

  29. I commenti • I commenti sono compresi tra i caratteri <!-- e --> <root> … <!-- questo è un commento --> … </root>

  30. I namespace • Chiunque può definire i propri tag • Conflitti di nomi • Posso definire dei namespace • <prefissonamespace:tag> <radice xmlns:image=“urn:deitel:imageInfo”> <image:file filename=“bunny.jpg” /> </radice>

  31. I parser XML • Il parsing (o piò formalmente l’analisi sintattica) è il processo di analisi delle sequenze di token per determinarne la struttura grammaticale in relazione ad una data grammatica formale • Un parser è quel componente dei compilatori che svolge tale compito • Un documento sintatticamente corretto è detto “ben formato” (well-formed) • DOM • SAX

  32. DOM • Document Object Model • Standard del W3C • http://www.w3.org/DOM/ • "The W3C Document Object Model (DOM) is a platform and language-neutral interface that allows programs and scripts to dynamically access and update the content, structure, and style of a document."

  33. DOM • W3C DOM descrive un insieme standard di oggetti per i documenti HTML e XML • Esso descrive anche un’interfaccia standard per accedere e manipolare tali documenti • Il W3C DOM è diviso in tre parti: • Core DOM, che definisce un insieme standard di oggetti per qualunque documento strutturato • XML DOM, che definisce un insieme standard di oggetti per i documenti XML • HTML DOM, che definisce un insieme standard di oggetti per i documenti HTML • Il W3C DOM è diviso in tre livelli (DOM Level 1/2/3):

  34. DOM • Secondo il DOM, ogni cosa è un nodo • Il DOM dice che: • L’intero documento è un nodo documento • Ciascun tag XML è un nodo elemento • I testi contenuti negli elementi XML sono nodi testo • Ogni attributo XML è un nodo attributo • I commenti sono nodi commento

  35. DOM • I nodi hanno tra di loro una relazione gerarchica • Tutti i nodi di un documento XML formano l’albero del documento. Ciascun elemento, attributo, testo, etc, di un documento XML rappresenta un nodo dell’albero. L’albero comincia con il nodo documento e continua ad estendersi fino a quando si raggiungono tutti i nodi testo al livello più basso dell’albero. • I termini “parent” e “child” sono usati per descrivere le relazioni tra nodi. Alcuni nodi possono avere nodi figli, mentre altri possono non averne (nodi foglia). • Poiché i dati XML sono strutturati a forma di albero, essi possono essere attraversati senza conoscere l’esatta struttura dell’albero o il tipo dei dati contenuti

  36. JAXP Creato da Sun Microsystem ( http://java.sun.com/xml ) XML4J Creato da IBM ( http://www.alphaworks.ibm.com/tech/xml4j ) Xerces Prodotto da Apache Software Foundation (http://xerces.apache.org) Msxml Incluso in Internet Explorer 4DOM Per Python ( http://pyxml.sourceforge.net/topics ) XML::DOM Modulo Perl DOM • Esempi di parser XML:

  37. DOM Esempio: book.xml <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book>

  38. DOM Esempio: book.xml <book category="WEB"> <title lang="en">XQuery Kick Start</title> <author>James McGovern</author> <author>Per Bothner</author> <author>Kurt Cagle</author> <author>James Linn</author> <author>Vaidyanathan Nagarajan</author> <year>2003</year> <price>49.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore>

  39. DOM

  40. Document Rappresenta il nodo di livello più alto di un documento XML, che permettere di accedere a tutti i nodi del documento, incluso il nodo radice Node Rappresenta un nodo del documento XML NodeList Rappresenta una lista degli oggetti Node Element Rappresenta un nodo di elemento; deriva da Node Attr Rappresenta un nodo di attributo; deriva da Node Interfacce/classi del DOM

  41. CharacterData Rappresenta dei dati di caratteri; deriva da Node Text Rappresenta un nodo di testo; deriva da CharacterData Comment Rappresenta un nodo di commento; deriva da CharacterData ProcessingInstruction Rappresenta un nodo di istruzione di elaborazione; deriva da Node CDATASection Rappresenta una sezione CDATA; deriva da Text Interfacce/classi del DOM

  42. createElement Crea un nodo di elemento createAttribute Crea un nodo di attributo createTextNode Crea un nodo di testo createComment Crea un nodo di commenti createProcessingInstruction Crea un nodo di istruzione di elaborazione Alcuni metodi di Document

  43. createCDATASection Crea un nodo di sezione CDATA getDocumentElement Restituisce l’elemento radice del documento appendChild Accoda un nodo child getChildNodes Restituisce i nodi child Alcuni metodi di Document

  44. appendChild Accoda un nodo child cloneNode Duplica il nodo getAttributes Restituisce gli attributi del nodo getChildNodes Restituisce i nodi child di un nodo getNodeName Restituisce il nome del nodo getNodeType Restituisce il tipo di nodo I metodi di Node

  45. getNodeValue Restituisce il valore del nodo getParentNode Restituisce il nodo parent del nodo hasChildNodes Restituisce true se il nodo ha nodi child removeChild Elimina un nodo child dal nodo replaceChild Sostituisce un nodo child con un altro nodo setNodeValue Imposta il Valore del nodo insertBefore Inserisce un nodo child davanti ad un nodo child I metodi di Node

  46. Alcuni tipi di nodi • Node.ELEMENT_NODE • Node.ATTRIBUTE_NODE • Node.TEXT_NODE • Node.COMMENT_NODE • Node.PROCESSING_INSTRUCTION_NODE • Node.CDATA_SECTION_NODE

  47. getAttribute Restituisce il valore di un attributo getTagName Restituisce il nome di un elemento removeAttribute Elimina l’attributo di un elemento setAttribute Imposta il valore di un attributo Alcuni metodi di Element

  48. XML DOM e Java

  49. XML DOM e Java

  50. XML DOM e Java import java.io.*; import org.w3c.dom.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.stream.*; import javax.xml.transform.dom.*; import org.xml.sax.*; Public class Prova { public Prova() { try { DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance(); factory.setValidating( true ); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse( new File(“intro.xml”) ); Node root = document.getDocumentElement(); if(root.getNodeType() == Node.ELEMENT_NODE ) { … } } catch(Exception e) { } } }

More Related