Vous êtes sur la page 1sur 66

Droulement de la formation

Le langage XML 15 dune application de gestion de documents XML XML Le langage de transformation de documents 6 9

Ateliers

Prsentation XSLT

Ateliers XPATH

Le langage de lecture et dcriture de documents XML 9 12 dune application de gestion financire 4/29/12 dot.net et OFX (Open Financial eXchange)

Ateliers

Ralisation

Qu'est-ce que le XML?

XML est une norme permettant de structurer l'information sous une forme plus robuste que les fichiers binaires ou tabulaires. Cette forme permet la fois de faciliter le traitement informatique (internet, intranet, tableur, base de donnes,...) tout en conservant un support texte lisible et ditable sans outil particulier par l'tre humain.

4/29/12

Qu'est-ce que le XML?


La

norme XML en tant que telle doit tre vue comme un outil permettant de dfinir mtalangage, permettant de crer des documents structurs l'aide de balises. balise est une chane de caractre du type: <balise>

Une

4/29/12

Qu'est-ce que le XML?


XML

est une syntaxe gnrique et extensible. Il permet de structurer une grande varit de contenus a t conu pour une facilit de mise en uvrepar rapport SGML(Standard Generalized Markup Language)

XML

4/29/12

XML est une mthode pour structurer des donnes


On entend par "donnes structures" des lments tels que des feuilles de calcul, des carnets d'adresses, des paramtres de configuration, des transactions financires, des dessins techniques, etc. XML est un ensemble de rgles, de lignes directrices, de conventions (quel que soit le nom que vous voulez leur donner) pour la conception de formats texte permettant de structurer des donnes. XML facilite la ralisation de fichiers qui ne soient pas ambigus, et qui vitent les piges courants, tels que la non-extensibilit, l'absence de prise en charge de l'internationalisation/localisation et la dpendance par rapport certaines 4/29/12

XML ressemble un peu HTML


Comme HTML, XML utilise des balises (des mots encadrs par '<' et '>') et des attributs (de la forme nom="valeur"). Mais alors que HTML dfinit la signification de chaque balise et de chaque attribut (et souvent la manire dont le texte qu'ils encadrent apparatra dans un navigateur), XML utilise les balises seulement pour dlimiter les lments de donnes et laisse l'entire interprtation des donnes l'application qui les lit. En d'autres termes, si vous voyez "<p>" dans un fichier XML, ne supposez pas qu'il s'agit d'un paragraphe. Selon le contexte, cela peut tre un prix, un paramtre, une personne, un p... (d'ailleurs, qui 4/29/12

XML est du texte, mais il n'est pas destin tre lu


Les programmes qui produisent de telles donnes les stockent souvent sur disque, dans un format binaire ou un format texte. Ce dernier format vous permet, si ncessaire, de consulter les donnes sans le programme qui les a produites. Les fichiers XML sont des fichiers texte, mais ils sont encore moins destins tre lus par des individus que les fichiers HTML. Ce sont des fichiers texte, car ils permettent des experts (tels que les programmeurs) 4/29/12 de dboguer plus facilement des

XML est bavard, mais ce n'est pas un problme


Comme XML est un format texte et qu'il utilise des balises pour dlimiter les donnes, les fichiers XML sont presque toujours d'une taille plus importante que les formats binaires quivalents. Il s'agit l d'une dcision prise en toute conscience par les dveloppeurs de XML. Les avantages d'un format texte sont vidents, et ses inconvnients peuvent tre gnralement compenss un autre niveau. L'espace disque n'est plus aussi coteux qu'auparavant, et les programmes tels que zip et gzip compressent trs bien et trs rapidement les fichiers. De plus, les protocoles 4/29/12 de communication tels que les protocoles de

XML est une famille de technologies


Il

existe XML 1.0, la spcification qui dfinit ce que sont les "balises" et les "attributs", mais autour de cette spcification, un nombre de plus en plus important de modules facultatifs fournissant des ensembles de balises et d'attributs ou des lignes directrices pour des tches particulires ont t dfinis. C'est, par exemple, le cas de Xlink, qui dcrit une mthode standard pour ajouter des liens hypertextes un fichier XML. XPointer et XFragments sont des syntaxes pour pointer sur des parties d'un document XML. Un XPointer ressemble un URL, mais au lieu de 4/29/12 pointer sur des documents du Web, il pointe

XML est nouveau, mais pas si nouveau que a


Le dveloppement de XML a commenc en 1996, et XML est une norme du W3C depuis fvrier 1998, ce qui peut laisser supposer qu'il s'agit d'une technologie plutt immature. En fait, il ne s'agit pas d'une technologie trs nouvelle. Avant XML, il existait SGML, dvelopp au dbut des annes80, devenu norme ISO depuis 1986 et largement utilis dans des projets de documentation de taille importante. Et il existait bien sr HTML, dont le dveloppement a commenc en 1990. Les concepteurs de XML ont simplement pris les meilleures parties de SGML, profit 4/29/12 de

XML conduit HTML XHTML


Une application importante d'XML est le langage XHTML comme successeur de HTML. On retrouve dans XHTML beaucoup d'lments du langage HTML. La syntaxe a t lgrement modifie afin de se conformer aux rgles d'XML. Plus gnralement, un document fond sur XML hrite sa syntaxe d'XML modulo quelques exceptions : par exemple, XHTML autorise la balise "<p>" mais pas "<r>". XML ajoute aussi un sens cette syntaxe : par exemple, XHTML dit que "<p>" signifie "paragraphe" et non "prix" ou "personne" ou etc.
4/29/12

XML est modulaire


XML permet de dfinir un nouveau format de document en associant et en rutilisant d'autres formats. Cependant, deux formats dvelopps indpendamment peuvent avoir des lments ou attributs de mme nom. Il faut alors tre trs attentif ne pas confondre les noms : "<p>" signifie-t-il "paragraphe" ou "personne" ? Pour viter toute confusion lors de l'association de noms identiques, XML fournit un mcanisme d'espaces de nom. XSL et RDF sont de bons exemples de technologies fondes sur XML qui utilisent les espaces de nom. XML Schema a t conu pour rpercuter cette fonctionnalit modulaire pour la dfinition des 4/29/12 structures XML, puisqu'il est facile de combiner

XML est le fondement de RDF et du Web Smantique


RDF, la norme du W3C pour les mtadonnes, est un texte au format XML qui autorise la description de ressources et les applications mtadonnes, tels que recueils de musiques, albums photos, et bibliographies. Par exemple, RDF pourrait vous laisser identifier des personnes dans un album photo sur le Web en utilisant des informations puises dans une liste de contacts ; puis, votre messagerie pourrait automatiquement envoyer un message prvenant les personnes que leurs photos sont sur le Web. Tout comme les lments HTML 4/29/12

XML est libre de droits, indpendant des plates-formes et correctement pris en charge
En choisissant XML pour un projet, vous bnficiez d'un ensemble important et sans cesse croissant d'outils (et il est possible que l'un d'eux remplisse dj la fonction dont vous avez besoin!) et d'ingnieurs expriments dans cette technologie. Opter pour XML, c'est un peu comme choisir SQL pour des bases de donnes: vous devez encore construire votre propre base de donnes et vos propres programmes ou procdures qui la manipulent, mais un grand nombre d'outils et d'individus 4/29/12 peuvent vous y aider. Et comme XML est libre

Les avantages de XML


La

lisibilit : aucune connaissance ne doit thoriquement tre ncessaire pour comprendre un contenu d'un document XML et extensible structure arborescente : permettant de modliser la majorit des problmes informatiques et portabilit : les diffrents jeux de caractres sont pris en compte : il peut tre facilement distribu par n'importe quels protocoles mme de transporter du texte, comme HTTP
4/29/12

Autodescriptif Une

Universalit Dployable

Les avantages de XML


Intgrabilit

: un document XML est utilisable par toute application pourvue d'un parser (c'est--dire un logiciel permettant d'analyser un code XML) : un document XML doit pouvoir tre utilisable dans tous les domaines d'applications est particulirement adapt l'change de donnes et de documents.

Extensibilit

XML

4/29/12

Les avantages de XML


Fichier

texte donc il sera toujours lisible dans des dcennies. On garantit ainsi une meilleure prennit de l'information XML est standard cela signifie qu'il existe de nombreux outils informatiques qui permettent de lire ou d'crire du XML. On trouve des librairies C, C++, dot net ,java, PHP, perl, ... De plus en plus d'outils sont capables de lire des fichiers XML (Internet Explorer, Excel, Mathematica,...)

Le

4/29/12

Les avantages de XML


Le

XML est strict on ne peut pas crire le XML n'importe comment; Vous tes obligs de suivre une certaine syntaxe. Ca permet de garantir que le fichier soit toujours lisible. Pour vrifier la syntaxe d'un fichier XML, vous pouvez l'ouvrir dans Internet Explorer. Si le fichier est incorrect, Internet Explorer indiquera l'endroit de l'erreur.

4/29/12

Les avantages de XML


Le

XML est structur et hirarchique Le fichier contient des <BALISES> qui peuvent contenir d'autres balises et ainsi de suite (hirarchie). L'ordre d'apparition des balises est conserv.

4/29/12

Les inconvnients de XML


Le

XML est verbeux les fichiers XML sont plus gros que des fichiers binaires ou tabulaires. Mais on peut facilement les compresser pour le stockage (avec des outils OpenSource par exemple). On assure ainsi aussi une prennit de l'information trs long terme tabulaire est plus facile comprendre mais il ny a que peu de choses peuvent tre dcrites par des tableaux 2-dimensions.

Le

4/29/12

Formats de donnes issus de XML


OFX

: Open Financial eXchange pour les changes d'informations dans le monde financier : Mathematical Markup Language permet de reprsenter des formules mathmatique : Chemical Markup Language permet de dcrire des composs chimiques : Synchronized Multimedia Integration Language permet de crer des prsentations multimdia en synchronisant diverses sources : audio, vido, texte,...
4/29/12

MathML

CML

SMIL

La syntaxe XML

4/29/12

Reprsentations dun document XML


Il

existe deux reprsentations dun document XML. srialise : cest la forme courante, o le contenu est marqu par des balises. arborescente : elle met en vidence la structure du document.

Forme Forme

Il est plus facile de raisonner sur la forme arborescente pour concevoir des traitements

4/29/12

Forme srialise
<?xml version="1.0" encoding="utf-8" ?> <Villes> <Ville>Casablanca</Ville> <Ville>Fs</Ville> </Villes>

Cette reprsentation permet le stockage et lchange de documents.

4/29/12

Forme arborescente
Arbre
Villes Ville Casabl anca Ville Fs

4/29/12

Forme srialise
<?xml

>

version="1.0" encoding="ISO-8859-1"?

<CINEMA> <NOM> Epe

de Bois

</NOM> <ADRESSE> 100,

rue Mouffetard

</ADRESSE> <METRO>
4/29/12

Forme arborescente

4/29/12

Usage des formes


On utilise la forme srialise :
pour

stocker un document dans un fichier pour changer des documents de spcifier des manipulations de donnes XML; utilise par certaines applications qui grent lensemble du document en mmoire Exemple : diteurs XML

La forme arborescente :
permet

4/29/12

Autre exemple
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- Commentaire --> <A>Le texte de A <B>Le texte de B</B> <D attr1="1" attr2="azerty"> <C/> </D> <![CDATA[2x < y]]> </A
4/29/12

DOM Document Object Modle


Le le

document srialis est analys, et une reprsentation arborescente est cre : nud racine est de type Document catgories syntaxiques (commentaires, balises, texte) se traduisent par diffrents types de nuds (Comment, Element , Text) noeuds constituent un arbre qui reflte limbrication des lments dans la forme srialise

les

les

4/29/12

Document Object Modle

4/29/12

Prsentation de la syntaxe XML


Un ensemble de catgories syntaxiques :
1. 2. 3. 4. 5.

les lments (et leurs attributs) les commentaires les instructions de traitement les sections de texte les sections littrales

Ainsi que quelques rgles sur la structure dun document

4/29/12

La dclaration XML
Tout

document XML doit tre prcd par une dclaration :

<?xml version="1.0" encoding="ISO-88591"?>


lattribut lattribut

encoding indique le jeu de caractres utilis dans le document optionnel standalone indique si le document fait rfrence dautre documents

4/29/12

Dclaration de type
On peut indiquer quun document est conforme une DTD, et dclarer des entits.
<!DOCTYPE nomDocument SYSTEM "sourceExt" [decLoc]>
nomDocument sourceExt

est le nom du type

est la source extrieure contenant

la DTD
decLoc

sont des dclarations locales (pour les entits principalement)

4/29/12

Entits et rfrences des entits


Les entits servent factoriser des parties du document. <?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE A SYSTEM "minimal.dtd" [<!ENTITY monTexte "texte simple"> <!ENTITY maSignature SYSTEM "signature.xml">]>

<A> Du &monTexte;, sans caractres rservs: ni &lt; ni &gt; ni &amp; ni &apos; ni &quot; &maSignature; </A>
4/29/12

Entits prdfinies
Dclarationentit <!ENTITY lt "&#60"> <!ENTITY gt "&#62"> <!ENTITY amp "&#38"> <!ENTITY apos "&#39"> <!ENTITY quot "&#34"> Rfrence &lt &gt &amp &apos &quot Car < > & "

4/29/12

Commentaires et instructions de traitement


Les

commentaires : utiliser avec parcimonie

Exemple

: <!- Ceci est un commentaire

->
Instructions

de traitement : li au systme qui traite le document.

Exemple : <?xml-stylesheet href="prog.xslt


type="text/xslt">

4/29/12

lments
Dans la forme srialise :
Cest

une balise ouvrante avec un nom, puis un contenu, puis une balise fermante un noeud, avec un nom ;

Dans la forme arborescente


Cest Le

contenu est un sous arbre de ce nud.

4/29/12

Exemple : un lment avec contenu


<?xml

>

version="1.0" encoding="ISO-8859-1"? texte de A texte de B</B>


lment A Texte: texte de A

<A>Le <B>Le </A>

Elme nt B Texte: texte de B

4/29/12

Caractristiques des lments


Un

nom dlment ne contient pas de blanc, ni de caractre accentu majuscules sont distingues des minuscules existe une forme abrge pour les lments sans contenu : <C></C> peut scrire <C/>. document comprend un et un seul lment racine

Les Il

Tout

4/29/12

Attributs
Les <A

attributs constituent un autre moyen de reprsenter de linformation. att1=1 att2=2> des attributs nest pas important

lordre il il

doit toujours y avoir une valeur, encadre par des guillemets (diffrent de HTML) ne peut pas y avoir deux attributs avec le mme nom dans un lment.

4/29/12

Attributs : exemples

<A att1=1 att2=2> est quivalent <A att2=2 att1=1>

<A

att=a> nest pas bien form: pas dapostrophe att1=1 att1=2> : interdit
4/29/12

<A

Les sections littrales


A

priori, on na pas le droit de placer dans le contenu dun document XML des caractres comme <, >, ou &. Exemple incorrect :

<?xml version=1.0?> <PROGRAMME> if ((i < 5) && (j > 6) printf("error\n"); </PROGRAMME>

4/29/12

Sections CDATA
Elles

permettent dinclure du texte qui nest pas analys par le parseur :

<?xml version=1.0?> <PROGRAMME>

<![CDATA[ if ((i < 5) && (j > 6) printf("error\n");]]>


</PROGRAMME>

4/29/12

Rsum
Un document XML comprend trois parties :
le

prologue, avec la dclaration XML, la DTD, des commentaires, des instructions de traitements (optionnels) lment racine avec son contenu pilogue avec des commentaires, ou des instructions de traitements (optionnels) contenu du document proprement dit est le contenu de llment racine.

un un Le

4/29/12

Reprsentation objet des arbres


Un parseur DOM construit en mmoire une reprsentation du document o :
chaque chaque la

nud est un objet de type Node ;

catgorie syntaxique est reprsente par un sous-type de Node ; racine est un nud spcial, de type Document.

4/29/12

Reprsentation DOM

4/29/12

Caractristiques de la forme DOM


Lensemble

du document est reprsent par un nud de type Document cest la racine du document nud peut avoir plusieurs fils, dont un et un seul de type Element cest llment racine autres fils de Document (optionnels) sont les commentaires, instructions de traitement, et DTD

Ce

Les

4/29/12

Exemple complet

4/29/12

Remarques importantes
DOM

est une recommandation du W3C.

Elle tient lieu de norme, mais Cest une spcification trs abstraite : il peut y avoir des variantes selon les implantations est issu dune pratique de programmation pas toujours trs propre du point de vue OO exemples sont bass sur limplantation de la fondation XML/Apache.

DOM

les

4/29/12

Approche objet
Une approche faiblement objet
Tout En

nud DOM est un Node

principe les proprits spcifiques un sous-type devraient apparatre au niveau de ce sous-type : le nom, valable pour un nud Element, pas pour un nud Text pratique Node rassemble toutes les proprits de tous les types de nuds

Exemple En

4/29/12

Sous-classes de Node
Type de Noeuds Document Element Attr Text Comment Processing Instruction Catgorie syntaxique XML document XML lment XML attribut XML valeurs textuelles commentaire instruction de traitement
4/29/12

Proprits du type Node


Proprit nodeType nodeName nodeValue parentNode firstChild lastChild childNodes previousSibling nextSibling attributes Type unsigned short DOMString DOMString Node Node Node NodeList Node Node NamedNodeMap

4/29/12

Les proprits nodeName et nodeValue


Type de noeud CDATASection Comment Document DocumentType Element nodeName #cdata-section #comment #document nom de la DTD nom de llment nodeValue contenu de la section CDATA contenu du commentaire NULL NULL NULL le contenu (moins la cible) contenu du noeud Text NULL NULL

ProcessingInstruction nom de la cible Text #text Notation Entity EntityReference Attr nom de notation nom de lentit

nom de lentit rfrence NULL nom de lattribut valeur de lattribut 4/29/12

Oprations du type Node


Quelques exemples :
insertBefore() replaceChild() removeChild() appendChild() boolean

(Node nouv, Node fils) (Node nouv,Node ancien) (Node fils) (Node fils)

hasChildNodes()()

4/29/12

L interface Document
Il Il Il

reprsente la racine du document. Cest toujours le premier nud cr. contient ventuellement une rfrence vers la DTD sert dusine crer de nouveaux noeuds avec les mthodes:

createElement(), createTextNode(), createComment(), etc

4/29/12

Srialisation
Un traitement DOM seffectue en trois phases :
1.

La version srialise est transforme en un arbre DOM en mmoire Des manipulations de ce document sont effectues Le document modifi est srialis nouveau (par exemple pour tre stock)

2.

3.

Il existe plusieurs srialisations possibles pour un mme document.


4/29/12

Exemple : avec entit


<C> <D>1 &lt; 2</D> </C> Document Element C Element D Texte 1<2 Document Element C Element D Texte 1<2

<C> <D><![CDATA[1 < 2]]></D> </C>

4/29/12

Deux versions
Tout est inclus dans le mme fichier, avec une rfrence une entit. <?xml version=1.0?> <A> <!-- commentaire --> <B>texte</B> <C> <D>1 &#60; 2</D> </C> </A>
Tout est inclus dans le mme fichier, avec une section CDATA <?xml version=1.0?> <A> <!-- commentaire --> <B>texte</B> <C> <D><![CDATA[1 < 2]]></D> </C> </A>

4/29/12

Troisime version
Une partie du document est insr par rfrence une entit externe. <?xml version=1.0?> <!DOCTYPE A [<!ENTITY file SYSTEM "ExXMLArbreB.xml">]> <A> <!-- commentaire --> <B>texte</B> &file; </A>
4/29/12

Un exemple de programme DOM


Le programme Preordre.java prend en argument un nom de fichier contenant un document XML.
1.

Il analyse ce document avec un parseur DOM Il parcourt ensuite les nuds du document et numrote les nuds de type Text par leur position dans larbre Enfin le document modifi est srialis.

2.

3.

Implantation avec le parseur Xerces


4/29/12

Structure du programme
// Import des classes Java import java.io.*; import javax.xml.parsers.*; import org.w3c.dom.*; import org.apache.xalan.serialize.*; class Preordre { public static void main (String args []) { // Instanciation du parseur, analyse // du document, parcours } private static int Parcours (Node noeud, int { // Fonction de parcours et numrotation

4/29/12

Phase danalyse
// Rcupration du document File fdom = new File (args[0]); // Instanciation du parseur DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); // Analyse du document Document dom = builder.parse(fdom);
4/29/12 // On initialise le parcours avec le numro Node

Parcours : numrotation
private int { String

static int Parcours (Node noeud,

numero) str = new String();

numero++; // // if

Numrotation du noeud sil est de type texte

(noeud.getNodeType() == Node.TEXT_NODE)
4/29/12

Parcours : rcursion
... // if { // //

Parcours rcursif si le noeud a des fils (noeud.hasChildNodes()) Rcupre la liste des fils du noeud courant (liste de type NodeList) fils = noeud.getChildNodes(); Parcours de la liste et appel rcursif (int i=0; i < fils.getLength(); i++)
4/29/12 = Parcours (fils.item(i), numero);

NodeList //

for

numero

Srialisation
// Instanciation du serializer SerializerToXML ser = new SerializerToXML (); // Srialisation du rsultat ser.setOutputStream (System.out); ser.serialize(dom.getDocumentElement());

4/29/12