Python et les modules pour XML

Dimension: px
Commencer à balayer dès la page:

Download "Python et les modules pour XML"

Transcription

1 Python et les modules pour XML Institut Pasteur (infobio) Mars 004 (version.9) Méthodes d analyse et d extraction : éditeur expressions rationnelles Traitement de type événementiel : flot d événement lecture complète ou partielle maintenir un con Parcourir une arborescence : document entier navigation et modification de l arbre Mixte événementiel et arborescence : avantages et inconvénients des deux API Transformation et interrogation : langage de transformation : XSLT (extensible Stylesheet Language Transformation) «langage d interrogation» : XQL, Xquery langage d extraction de noeuds : Xpath...etc.

2 Modules python --> XML XML-SIG = XML Special Interest Group Objectif : «faire de python le meilleur langage d analyse de code XML» développement PyXML version = 0.8. (9/07/00) Python and XML Processing 4suite : rdf, xlink, xpointer, dom, sax, xslt, schema, RelaxNG Pyxie : (format pyx <--> XML) xmlproc : module et commande (validation du code) xmllib : ancienne compatibilité avec python.5 Principe de base des API pour XML flux de données API database Web xml/html deux approches différentes graphique Formats... Document XML Parser application Etc... API Arborescence en mémoire Construction d arbre flux de données Arborescence sérialisation 4

3 Cas particuliers du flux flux de données arborescence <?xml version=".0" encoding="utf-8"?> <systeme> documentxml <proteine> <sequence> MGDVEKGKKIF </sequence> systeme 6 <motif seq="k..k.f"/> proteine 4 proteine </proteine> 4 <proteine> 5 </proteine> <sequence> RADLIAYLKKATNE </sequence> sequence motif seq 5 sequence 6 </systeme> 5 Expat 6

4 xml.parsers.expat : exemple code # appel du module expat import xml.parsers.expat # exemle de fonctions def start_element(name, attrs): print 'Start element:', name, attrs def end_element(name): print 'End element:', name def char_data(data): print 'Character data:', repr(data) p = xml.parsers.expat.parsercreate() p.startelementhandler = start_element p.endelementhandler = end_element p.characterdatahandler = char_data p.parse("""<?xml version=".0"?> <data type= nucl"> <seq id= UIH">ATGTTGTAT</seq> <seq id= RTE">TGTTATTCTT</seq> </data>""") définition évenements appel du parser association des def. au parser lancer le parser # autre possibilité p.parsefile(fichier) Start element: data {u'type': u'nucl'} Character data: u'\n' Start element: seq {u'id': u'uih'} Character data: u'atgttgtat' End element: seq Character data: u'\n' Start element: seq {u'id': u'rte'} Character data: u'tgttattctt' End element: seq Character data: u'\n' End element: data 7 xml.parsers.expat wrapper de la bibliothèque C de J. Clark voir : appelé aussi : pyexpat ne peut pas valider le code xml avantage : plus rapide que les parser s en python, gère les espaces de noms interface pour les événements suivants : StartElementHandler (...) CharacterDataHandler (...) EndElemenTHandler (...) ProcessingInstructionHandler (. CommentHandler (...) StartCdataSectionHandler (...) EndCdataSectionHandler (...)...etc... 8

5 xml.parsers.expat : code xml à traiter <!-- extrait code xml pir modifié --> <ProteinEntry id="cchu"> <header> <uid>cchu</uid> <accession>a764</accession> <accession>a05676</accession> <accession>i559</accession> <accession>a0000</accession> </header>...etc. <organism> <source>human</source> <common>man</common> <formal>homo sapiens</formal> </organism>...etc. <sequence> MGDVEKGKKIFIMKCSQCHTVEKGGKHKTGPN LHGLFGRKTGQAPGYSYTAANKNKGIIW GEDTLMEYLENPKKYIPGTKMIFVGIKKKEERA DLIAYLKKATNE </sequence> </ProteinEntry> <!-- extrait code xml pir modifié --> <ProteinEntry id="cccz"> <header> <uid>cccz</uid> <accession>a0000</accession> </header>...etc. <organism> <source>chimpanzee</source> <common>chimpanzee</common> <formal>pan troglodytes</formal> </organism>...etc. <sequence> GDVEKGKKIFIMKCSQCHTVEKGGKHKTGPNL HGLFGRKTGQAPGYSYTAANKNKGIIWG EDTLMEYLENPKKYIPGTKMIFVGIKKKEERAD LIAYLKKATNE </sequence> </ProteinEntry> 9 xml.parsers.expat : fichier résultat ## fichier fasta résultat que l on souhaite obtenir. >CCHU A764 A05676 I559 A0000 Homo sapiens MGDVEKGKKIFIMKCSQCHTVEKGGKHKTGPNLHGLFGRKT GQAPGYSYTAANKNKGIIWGEDTLMEYLENPKKYIPGTKMIF VGIKKKEERADLIAYLKKATNE >CCCZ A0000 Pan troglodytes GDVEKGKKIFIMKCSQCHTVEKGGKHKTGPNLHGLFGRKTG QAPGYSYTAANKNKGIIWGEDTLMEYLENPKKYIPGTKMIFV GIKKKEERADLIAYLKKATNE 0

6 xml.parsers.expat :prog. principal #from pyexpat import * from xml.parsers.expat import * import sys from clsevnt import * appel modules objinst = clsevnt("fasta.out") instance xmlpar = ParserCreate() xmlpar.startelementhandler = objinst.debutelement xmlpar.endelementhandler = objinst.finelement xmlpar.characterdatahandler = objinst.caractere Associé méthodes au parser objfile = open ("xaapir_mod") xmlpar.parsefile(objfile) Lancer le parseur xml.parsers.expat : gestion des événements class clsevnt : def init (self, file): self.flagdict = {'uid':0, 'accession':0, 'formal':0, 'sequence':0} self.out = open(file,'w') def debutelement(self, name, attr): if name == 'ProteinEntry': self.out.write('>') if self.flagdict.has_key(name): self.flagdict[name] = python expat_pirxaa_class.py def finelement(self, name): if name == 'ProteinDatabase': self.out.close() return if name == 'sequence': self.flagdict['sequence'] = 0 return if self.flagdict.has_key(name): if self.flagdict[name] == : self.out.write(' ') self.flagdict[name] = 0 def caractere(self, data): if self.flagdict['uid'] == : self.out.write(data) if self.flagdict['accession'] == : self.out.write(data) if self.flagdict['formal'] == : self.out.write(data) if self.flagdict['sequence'] == : self.out.write(data)

7 API SAX API SAX / xml.sax Projet java : <?xml version=".0" encoding="utf-8"?> <systeme> <proteine> SAX = Simple API XML Standard SAX, SAX (espace de noms) principe : analyse du flux de données et émet des évènements en fonction de la structure du document parser + gestionnaire d évènements <sequence>mgdvekgkkif</sequence> <motif seq="k..k.f"/> </proteine> <proteine> <sequence>radliaylkkatne</sequence> </proteine> etc. <?xml version=".0"encoding="utf8"?> Ev Ev Ev <systeme><proteine><sequence> </systeme> Ev4 Ev5 MGDVEKGKKIF</sequence> 4

8 Organisation de l API SAX SAX Articles & Tutorials Content Handler classe Parser Sax XMLReader Error Handler DTD Handler DefaultHandler XML application Entity Resolver xml.sax.handler saxutils 5 API SAX (suite) méthodes pour chaque évènement l interface ContentHandler : startdocument(self) Appel lors de la reception du début de document enddocument(self) Appel à la fin de la lecture du document startelement(self, name, attrs) Appel lors de la réception du debut d élément sans espace de noms endelement(self, name) Appel lors de la reception de l élément de fin sans espace de noms startelementns(self, name, qname, attrs) Idem ci-dessus mais avec gestion de l espace de noms endelementns(self, name, qname) Idem ci-dessus mais avec gestion de l espace de noms characters(self, content) Appel lors de la reception d un caractère processinginstruction(self, target, data) Appel lors de la reception d une instruction de traitement 6

9 API SAX (suite) : exemple de code from xml.sax import make_parser from xml.sax import ContentHandler appel modules class ProteHandler (ContentHandler): Classe handler def startdocument(self): pass def enddocument(self): pass application def characters(self, str): pass # creation du "parser" parser = make_parser ( ) # creation d une instance de l handler dh = ProteHandler ( ) # initiliaser avec la classe dochandler parser.setcontenthandler ( dh ) # analyse le flux de données parser.parse ( open( prot.xml") ) instance parseur instance de l handler initialisation du parseur lancement de l analyse du flux 7 API SAX (suite) : gestion des attributs Les objets de type «Attributes» (méthodes qui gèrent les attributs) getlength(self) Retourne le nombre d attributs dans la liste getvalue(self, name) Retourne la valeur qui correspond au nom de l attribut. keys(self) Retourne la liste des noms d attributs values(self) Retourne une liste de toutes les valeurs des attributs has_key(self, name): True si l attribut est dans la liste, false dans les autres cas. get(self, name, alternative=none) Retourne la valeur associée avec le nom de l attribut, si ce n est pas possible alors il retourne la valeur de la variable alternative 8

10 API SAX (suite) : exemple sur «Attributes» <?xml version='.0'?> <db> <seq att= PROT' nbr='989 typ='iop'> LASVHSRAEAE</seq> <seq att='prot' nbr='' typ='tro'> NRFFCLTVLFS</seq> </db> ########################################## Nom Elem : db Nombre : 0 Clefs : [] Valeurs : [] Nom Elem : seq Nombre : Clefs : [u'typ', u'att', u'nbr'] Valeurs : [u'iop', u'nucl', u'989'] typ IOP att NUCL nbr 989 Nom Elem : seq Nombre : Clefs : [u'typ', u'att', u'nbr'] Valeurs : [u'tro', u'prot', u''] typ TRO att PROT nbr from xml.sax import make_parser from xml.sax.handler import ContentHandler class SequenHandler (ContentHandler): def startelement(self, name, attr): print "Nom Elem : ",name print "\tnombre : ",attr.getlength() print "\tclefs : ",attr.keys() print "\tvaleurs : ",attr.values() if attr.getlength() > 0: for each in attr.keys(): print "\t\t",each,"\t",attr.getvalue(each) # creation du "parser" parser = make_parser ( ) # creation d.une instance de l.handler dh = SequenHandler ( ) # initiliaser avec la classe dochandler parser.setcontenthandler ( dh ) # analyse le flux de donnees parser.parse ( prot.xml' ) python demosax.py 9 API SAX (suite) : exercice Objectif : prendre un fichier au format XML de la base de données ABCISSE sur les transporteurs ABC (voir le fichier abc.xml qui est une version très simplifiée) et créer un fichier qui comportera les commandes SQL nécessaires a l'insertion des données dans une base de donnees de type relationnelle. Table (de demo) dans la base de données : Nom de la Table = sys nbr (generateur auto) fnc fonction fam famille sub substrat esp espece gen gene gip gip typ type Commande SQL pour insérer dans la table : acc acces INSERT INTO sys VALUES ( 'import', 'MET', 'maganese'...); ou INSERT INTO sys (fnc, fam) VALUES ('import', 'MET_family'); 0

11 API SAX (suite) : exercice <?xml version=".0"?> <transporter> <system> <function type="import" /> <family name="met_family" /> <substrate>manganese</substrate> <species name="syc" /> <gene name="sll598" /> <gip nbr="6500" /> <type> BP </type> <accesp nbr="d9090" /> </system> <system> <function type="import" /> <family name="met_family" /> <substrate>iron</substrate> <species name="ype" /> <gene name="yfea" /> <gip nbr="45464" /> <type> BP </type> <accesp nbr="u50597" /> </system> <system> <function type="import" /> <family name="met_family" /> <substrate>zinc</substrate> <species name="eco" /> <gene name="znub" /> <gip nbr="78866" /> <type> IM </type> <accesp nbr="ae00080" /> </system> </transporter> ## résultat à obtenir INSERT INTO sys VALUES ('Import','MET_family','Manganese','syc','sll5 98','6500',' BP ','D9090'); INSERT INTO sys VALUES ('Import','MET_family','Iron','ype','yfea','4546 4',' BP ','U50597'); INSERT INTO sys VALUES ('Import','MET_family','Zinc','eco','znub','788 66',' IM ','AE00080'); API SAX (suite) : exercice from xml.sax import make_parser from xml.sax.handler import ContentHandler import sys class SystHandler (ContentHandler): def init (self, file, nbr=0): self.nom = file self.inc = nbr self.ligne = "" self.type = 0 self.subs = 0 def startelement(self, name, attr): if name == "transporter": self.out = open(self.nom, 'w') if name == "system" : self.inc += self.ligne = "INSERT INTO sys VALUES (" if name == "function": self.ligne += "'" + attr.getvalue("type") + "'," if name == "family": self.ligne += "'" + attr.getvalue("name") + "'," if name == "substrate": self.subs = if name == "species": self.ligne += "'" + attr.getvalue("name") + "'," if name == "gene": self.ligne += "'" + attr.getvalue("name") + "'," if name == "gip": self.ligne += "'" + attr.getvalue("nbr") + "'," if name == "type": self.type = if name == "accesp": self.ligne += "'" + attr.getvalue("nbr") + "'" def characters(self, txt): if self.type == : self.ligne += "'" + txt + "'," self.type = 0 if self.subs == : self.ligne += "'" + txt + "'," self.subs = 0

12 API SAX (suite) : exercice def endelement(self, name): if name == "transporter": self.out.close() if name == "system": self.ligne = self.ligne + ");\n" self.out.write(self.ligne) Fin de la classe if name == ' main ': # creation du "parser" parser = make_parser ( ) Appel du parseur SAX # creation d.une instance de l.handler dh = SystHandler (sys.argv[]) # initiliaser avec la classe SystHandler parser.setcontenthandler ( dh ) # analyse le flux de donnees parser.parse ( sys.argv[] ) python insertsax.py abc.xml req.sql API SAX (suite) : quelques inconvénients une seule passe, impossible de revenir en arrière <?xml version=".0" encoding="utf-8"?> ordre des éléments dans le fichier difficile d ajouter du code XML <systeme> <proteine> <sequence> MGDVEKGKKIF </sequence> 4 impossible de déplacer du code XML </proteine> <motif seq="k..k.f"/> <proteine> </proteine> </systeme> <sequence> RADLIAYLKKATNE </sequence> 4

13 API SAX (suite) SAX Parser DocumentHandler AttributeList HandlerBase SAX XMLReader ContentHandler Attributes DefaultHandler voir pydoc xml.sax d autres différences : SAX SAX (voir xml.sax.handler) characters(self, ch, start, length) startelement(self, name, atts) characters(self, content) startelement(self, name, attrs) startelementns(self, name, qname, attrs) 5 API DOM 6

14 API DOM : introduction DOM = Document Object Model balise données attribut standard du WC DOM, DOM, DOM documentxml Construction de l arbre complet avant de pouvoir atteindre les données systeme <systeme> <proteine> <sequence>ssgiflii...etc.. </sequence> <motif seq=«g..l» /> </proteine> <proteine> <sequence>dfiqgfengfe...etc. </sequence> </proteine> </systeme> proteine sequence motif seq proteine sequence 7 API DOM (suite) : présentation api module xml.dom sérialisation XML arbre dom document Élément racine Élément enfant lecture Parser Construction arbre Élément enfant Élément enfant écriture application XML 8

15 API DOM (suite) : arbres de noeuds documentxml systeme les documents sont organisés sous forme d arbre de noeuds proteine proteine chaque noeud à un type particulier : Text, Element, sequence motif sequence ProcessingInstruction, EntityReference, CDATASection...etc. seq balise données attribut 9 API DOM (suite) : appel du «parseur» DOM from xml.dom.minidom import parse, parsestring appel modules appel par le nom dom = parse(../infobio/proteine.xml') datasource = open(../infobio/proteine.xml') dom = parse(datasource) appel objet fichier appel chaîne de car. dom = parsestring( <codexml>exemple <empty/> de quelques balises</codexml>') 0

16 API DOM (suite) : classes et méthodes implantation des méthodes pour accéder et modifier les objets dans l arbre Hierarchie d objets de type Node l API comporte un certain nombre de classes (xml.dom.minidom): Node Attr : valeur affectée à l attribut d un élément CharacterData dont Text et CDATASection Comment : Document : document XML complet bien formé DocumentFragment : conteneur provisoire d un fragment du document XML DocumentType :; correspond à la description de la DTD Element : tout élément XML est traduit en un noeud unique, accède aux valeurs des attributs sous la forme d objet Attr ProcessingInstruction : accès au contenu d une instruction de traitement NodeList : accès à une collection ordonnée de noeuds API DOM (suite) : exemple de code exemple simple de l utilisation de dom : >>> import xml.dom.minidom as xdm >>> domobj = xdm.parsestring("<foo> bar </foo>") appel modules transformation du fichier xml en objet DOM (arbre) Noeud élément >>> rootobj = domobj.childnodes[0] >>> print rootobj.tagname foo >>> rootobj.childnodes [<DOM Text node " bar ">] >>> print "[" + rootobj.childnodes[0].nodevalue + "]" [ bar ] >>> print domobj.toxml() <?xml version=".0"?> <foo> bar </foo> Noeud Affiche le code XML

17 API DOM (suite) : interface «Node» L interface Node possède trois attributs principaux : nodetype nodename nodevalue Source : XML in a nutshell edi O reilly, ISBN API DOM (suite) : arborescence «Node» Chaque objet Node dans un document contient des références à ses parents, fils et frères <?xml version=«.0»?> <systeme> 4 <proteine motif=«g..l»> SGIFLIIPRIL </proteine> </systeme> 5 Document nodetype = DOCUMENT_NODE nodename = #document nodevalue = (null) Element nodetype = ELEMENT_NODE nodename = systeme nodevalue = (null) firstchild Document Element Element 4 5 Text Attr Element Attr nodetype = ELEMENT_NODE nodename = proteine nodevalue = (null) firstchild attributes nodetype = ATTRIBUTE_NODE nodename = motif nodevalue = G..L Text 4 nodetype = TEXT_NODE nodename = #text nodevalue = SGIFLIIPRIL 5 4

18 API DOM (suite) : les attributs Liste des attributs utilisables : parentnode Le noeud parent pour tous les types de noeuds sauf Document, DocumentFragment et Attr. childnodes Les enfants du noeud courant. Retourne une liste de noeuds.!! En python ne retourne pas une NodeList!! firstchild Le premier noeud enfant, si il n existe pas renvoie None lastchild Le dernier de la liste des noeuds enfants, s il n existe pas renvoie None previoussibling Le noeud précédent le noeud courant immédiatement dans l arbre, s il n existe pas renvoie None nextsibling Le noeud suivant le noeud courant immédiatement dans l arbre, s il n existe pas renvoie None Deux attributs spéciaux : attributes qui correspond à un objet NameNodeMap ownerdocument qui correspond au document lui-même, pour Document c est None 5 API DOM (suite) : se balader dans l arbre parentnode previoussibling nextsibling childnodes firstchild lastchild 6

19 API DOM (suite) : fichier exemple <?xml version=".0"?> documentxml <RacineDoc> <EleTestSup> Texte element superieur </EleTestSup> RacineDoc <EleTestMed> Texte element medium </EleTestMed> EleTestSup EleTestMed EleTestInf EleVidAtt <EleTestInf> Texte element inferieur </EleTestInf> <EleVidAtt cours="infobio" jour="vdr" mois="mars" /> </RacineDoc> cours jour mois balises données attributs 7 API DOM : le document from xml.dom.minidom import parse, parsestring objxml documentxml objxml = parse('dom_test.xml') objxml <xml.dom.minidom.document instance at 0x806a0c> enfant RacineDoc print objxml.nodename #document EleTestSup EleTestMed EleTestInf EleVidAtt print objxml.nodevalue None print objxml.nodetype 9 ### DOCUMENT_NODE print objxml.toxml() <?xml version=".0"?>...etc. cours jour mois balise données attribut 8

20 API DOM : la racine objxml.childnodes [<DOM Element: RacineDoc at 68068>] objxml.childnodes[0].nodename u'racinedoc parent objxml documentxml RacineDoc objxml.childnodes[0].nodetype ## ELEMENT_MODE enfants objxml.childnodes[0].parentnode <xml.dom.minidom.document instance at 0x806a0c> EleTestSup EleTestMed EleTestInf EleVidAtt objxml.childnodes[0].toxml() u'<racinedoc>...etc... cours jour mois balise données attribut 9 API DOM : les enfants objele = objxml.childnodes[0].childnodes [<DOM Text node "\n">,...etc... objxml documentxml for nbr in range(len(objele)):... if objele[nbr].nodetype == :... print nbr," ",objele[nbr]... <DOM Element: EleTestSup at > 5 <DOM Element: EleTestMed at 66996> 8 <DOM Element: EleTestInf at > <DOM Element: EleVidAtt at > objele[].childnodes[].nodevalue u' Texte element superieur' parent RacineDoc objele EleTestSup EleTestMed EleTestInf enfants EleVidAtt cours jour mois balise données attribut 40

21 API DOM : quelques méthodes Document : createelement(nom) createdocumentfragment() createtextnode() createcomment() createcdatasection() createprocessinginstruction(cible, paramètres) getelementsbytagname(nom) : balaye les noeuds et retourne une liste de tous les éléments noeuds correspondant à la balise «nom». Element : getattribute (nom) setattribute(nom, valeur) removeattribute (nom) getattributenode(nom) : retourne un objet Attr getelementsbytagname(nom) CharacterData : appenddata() deletedata(décalage, nbr)...etc... 4 API DOM : attributs (méthodes élement) objele[] <DOM Element: EleVidAtt at 6868> objele[].toxml() u'<elevidatt cours="infobio" jour="vdr" mois="mars"/>' parent documentxml RacineDoc objele[].getattribute('jour') u'vdr objele[].hasattribute('jour') objele[].hasattribute('toy') 0 objele EleTestSup enfants EleTestMed EleTestInf EleVidAtt objele[].setattribute('jour','lun') objele[].getattribute('jour') 'lun objele[].toxml() u'<elevidatt cours="infobio" jour="lun" mois="mars"/>' cours jour mois balise données attribut 4

22 API DOM : attributs ( NameNodeMap ) objele[] <DOM Element: EleVidAtt at 6868> documentxml objele[].toxml() u'<elevidatt cours="infobio" jour="vdr" mois="mars"/>' parent RacineDoc objele[].attributes <xml.dom.minidom.namednodemap instance at 0x809b4> objele[].attributes.keys [u'jour', u'mois', u'cours'] objele[].attributes.values() [<xml.dom.minidom.attr instance...etc..] objele[].attributes.values()[0].value u'vdr ### lecture/ecriture objele EleTestSup enfants EleTestMed EleTestInf EleVidAtt objele[].attributes.items() [(u'jour', u'vdr'),...etc. objele[].attributes.length cours jour mois balise données attribut 4 API DOM (suite) : exercice Objectif : à l aide du fichier cdr.xml qui est le résultat d un programme d analyse de séquences (programme extrait ). Utiliser le module minidom pour extraire toutes les séquences nucléiques d une longueur de 69 caractères et transférer les résultats dans un fichier au format fasta, qui devra comporter les informations suivantes (voir exemple ci-dessous) : le nom du fichier, la position de la sequence et le sens de lecture. Résultat à obtenir : >FH_A07_049.seq DIR GCGAGAGACCATAGGGGATATTGTAGTGGTGGTAGCTGCTACTCCGGCCTAGACTGGTAC TTCGATCTC >FH_E07_05.seq DIR GCGAGAGGAACTTACTATGATAGTACTGGCTATATGTGGGGGCCCACTAGGTACTGGTAC TTCGATCTC 44

23 API DOM (suite) : format du fichier <?xml version=".0"?> <extrait> <sequence id="fh_a0_00.seq"> <sens_direct> <!-- SENS DIR --> <ref val=""> <seq> <!-- SEQ --> <nucl lng="98" pos="75" b5="ctggag" b="tggggc" > TGGATTGGG...CGATCTC </nucl> <prot lng="66"> WIGYIYY...FDL </prot> </seq> </ref> <ref val=""> <seq> <!-- SEQ --> <nucl lng="" pos="4" b5="ctggag" b="tggggc" > CTGGC... ATCTC </nucl> <prot lng="">non_traduite</prot> </seq> </ref> </sens_direct> <sens_inverse> <!-- SENS INV --></sens_inverse> </sequence>...etc API DOM (suite) : «arbre» Document >FH_A07_049.seq DIR GCGAGAGACCATAGGGGATA... 4 sequence extrait attributs sequence Sens_direct Sens_inverse ref seq attributs ref ref seq attributs ref nucl prot nucl 4 text attributs text attributs 4 text attributs 46

24 API DOM (suite) : organigramme de recherche getelement.. non lng == 69 oui non nodename == sens_direct oui Foreach nucl gettext DIR non nodename == sens_inverse oui parentnode INV non nodename == ref oui parentnode!= extrait getattribute non nodename == sequence oui getattribute parentnode 47 API DOM (suite) : le code ;-) import sys from xml.dom import minidom, Node def gettext(nodelist): """ extrait de la doc python. """ rc = "" for node in nodelist: if node.nodetype == node.text_node: rc = rc + node.data return rc def cherche(noeud, nbr): ligne = "" seq = "" for nucl in noeud.getelementsbytagname('nucl'): if nucl.getattribute('lng') == nbr : seq = gettext(nucl.childnodes) seq = seq.replace(" ","") seq = seq[:-] prtnode = nucl.parentnode while prtnode.nodename!= "extrait" : if prtnode.nodename == "sens_direct": ligne += "DIR " if prtnode.nodename == "sens_inverse": ligne += "INV " if prtnode.nodename == "ref": ligne += prtnode.getattribute('val')+" " if prtnode.nodename == "sequence": ligne = ">" + prtnode.getattribute('id') + " " + ligne prtnode = prtnode.parentnode ligne += seq print ligne ligne = "" if name == ' main ': doc = minidom.parse('cdr.xml') cherche(doc, "69") 48

25 API DOM : construction document from xml.dom.minidom import * objctr = parsestring('<racine></racine>') print objctr.toprettyxml() <?xml version=".0"?> <Racine/> objctr enfant documentxml RacineDoc objctr.nodename '#document objctr.nodetype 9 objctr.childnodes [<DOM Element: Racine at 60>] objctr.childnodes[0] <DOM Element: Racine at 60> objctr.childnodes[0].nodename u'racine objctr.childnodes[0].nodetype balise données attribut 49 API DOM : construction élément bal = objctr.createelement("eletestsup") txt = objctr.createtextnode("texte Element Superieur") objctr documentxml bal.appendchild(txt) <DOM Text node "Texte Elem..."> bal.toxml() '<EleTestSup>Texte Element Superieur</EleTestSup> bal enfant text RacineDoc objctr.childnodes[0] <DOM Element: Racine at 60> objctr.childnodes[0].childnodes [ ] bal.parentnode bal.childnodes [<DOM Text node "Texte Elem...">] bal <EleTestSup> Texte Element Superieur </EleTestSup> balise données attribut 50

26 API DOM : construction élément objctr documentxml deb = objctr.childnodes[0] deb.appendchild(bal) <DOM Element: EleTestSup at 67440> deb RacineDoc deb.childnodes [<DOM Element: EleTestSup at 67440>] bal EleTestSup bal.parentnode <DOM Element: Racine at 60> bal.parentnode.parentnode <xml.dom.minidom.document instance at 0x8d89c> print objctr.toprettyxml() <?xml version=".0"?> <Racine> <EleTestSup> Texte Element Superieur </EleTestSup> </Racine> balise données attribut 5 API DOM : construction élément bal = objctr.createelement("eletestmed") txt = objctr.createtextnode("texte Element Medium") bal.appendchild(txt) bal = objctr.createelement("eletestinf") txt = objctr.createtextnode("texte Element Inferieur") bal.appendchild(txt) objctr documentxml deb RacineDoc bal bal bal bal4 bal4 = objctr.createelement("elevidatt") EleTestSup deb.appendchild(bal) deb.appendchild(bal) deb.appendchild(bal4) balise données attribut 5

27 API DOM : ajouter des attributs objatt = objctr.childnodes[0].childnodes[] objctr documentxml objatt.setattribute("cours","infobio") objatt.setattribute("jour","vdr") objatt.setattribute("mois","mars") deb RacineDoc OU bal4.setattribute("cours","infobio") bal4.setattribute("jour","vdr") bal4.setattribute("mois","mars") bal EleTestSup bal EleTestMed bal EleTestInf bal4 EleVidAtt bal4._attrs {'jour': <xml.dom.minidom.attr instance at 0x8098a4>, 'mois': <xml.dom.minidom.attr instance at 0x809aa4>, 'cours': <xml.dom.minidom.attr instance at 0x80874c>} balise données attribut 5 API DOM : «arbre» terminé print objctr.toprettyxml( ) objctr documentxml <?xml version=".0"?> <Racine> <EleTestSup> Texte Element Superieur </EleTestSup> <EleTestMed> Texte Element Medium </EleTestMed> <EleTestInf> Texte Element Inferieur </EleTestInf> <EleVidAtt cours="infobio" jour="vdr" mois="mars"/> </Racine> objctr.writexml(open('exo.xml','w')) bal EleTestSup deb RacineDoc bal bal EleTestMed EleTestInf EleVidAtt cours jour mois balise données attribut 54

28 En résumé SAX... DOM... API lègère et rapide Document sous forme d arbre flux de données liste de noeuds pas d image mémoire vue globale du document 4 construction d un gestionnaire 4 modification et manipulation de noeuds 55 Conclusion sur XML / API XML est une technologie d avenir structure les données API standard pour l extraction des données puissant format d échange et de diffusion de l information communication entre applications hétérogènes langage de requètes et de transformation ouvert à tous les langages de programmation libre de droit et extensible à l infini 56

29 D autres API xml.dom interface complète DOM/DOM dom.html construction d un arbre html dom.javadom utilise java dom pour jython dom.minidom implémentation minimale de DOM dom.ext.domsax génère des évènements SAX d un arbre DOM xml.parsers.sgmllib xml.parsers.xmlproc «parseur» avec validation xml.sax interface complète SAX/SAX sax.drivers parseurs:htmllib, sgmllib,xmlproc... sax.drivers parseur SAX java pour jython sax.saxlib classes: DecHandler, LexicalHandler sax.saxutils classes: DefaultHandler, ErrorPrinter, ErrorRaiser et XMLGenerator sax.xmlreader classe : XMLReader xml.utils.qp_xml parseur simple et rapide sous pyexpat représentation d arbre xml.xpath parseur et évaluation de chemin Xpath mais aussi : dom.ext, dom.ext.cl4n, dom.ext.reader, xml.marshal.generic, xml.marshall.wddx, xml.ns, xml.schema.trex, xml.utils.characters, xml.utils.iso Pratiquer XML en python Python XML FAQ and How-to Chapter 5. XML Processing Différences entre SAX et SAX : Python implementation python/xml xmlproc: An XML parser in Python tools python Python and XML in general Information on 4Suite 58

30 Pratiquer XML en python examples/demo practical python, xml and dom python and HTML processing (sgmllib) 59 Récapitulatif des modules/applications Python A lire : 4Suite: Platform for XML XML package for Python librairie pour le projet gnome 60

31 Récapitulatif des modues perl Perl XML Project Home Page Perl XML FAQ Version. Bioperl Projects: XML Parsing Biological Data: Flat, HTML, and XML Files XML::SAX - an introduction london.pm.org/tech_talks/_nov_00/dom/xmlsax.pdf Liste des modules perl / xml 6 Où trouver l information pour Java? SAX java An Overview of Sun's Java XML APIs JAXP, JAXB, JDOM...etc 6

Document Object Model (DOM)

Document Object Model (DOM) Document Object Model (DOM) Jean-Claude Charr Maître de conférences IUT de Belfort Montbéliard Université de Franche Comté Description générale Définit un standard pour accéder aux documents structurés

Plus en détail

Programmation des Applications Réparties. Parsers XML DOM et SAX

Programmation des Applications Réparties. Parsers XML DOM et SAX Programmation des Applications Réparties Parsers XML DOM et SAX Luiz Angelo Steffenel luiz-angelo.steffenel@univ-reims.fr Steffenel Programmation des Applications Réparties Master M1-2007-2008 1 Comment

Plus en détail

<http://cahiers.gutenberg.eu.org/fitem?id=cg_1999 33-34_155_0>

<http://cahiers.gutenberg.eu.org/fitem?id=cg_1999 33-34_155_0> Cahiers GUTenberg GUT LE DOCUMENT OBJECT MODEL (DOM) François Role, Philippe Verdret Cahiers GUTenberg, no 33-34 (1999), p. 155-171. Association

Plus en détail

DOM - Document Object Model

DOM - Document Object Model DOM - Document Object Model 1 But de DOM Interfacer les langages de programmation avec les documents XML en les associant avec un modèle orienté objet DOM permet aux programmes et scripts : d'accéder et

Plus en détail

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition) Présentation du langage XML 1. De SGML à XML 17 2. Les bases de XML 18 2.1 Rappel sur HTML 18 2.2 Votre premier document XML 19 2.3 Les avantages de XML 21 3. La syntaxe XML 21 3.1 La première ligne du

Plus en détail

XML, PMML, SOAP. Rapport. EPITA SCIA Promo 2004 16 janvier 2003. Julien Lemoine Alexandre Thibault Nicolas Wiest-Million

XML, PMML, SOAP. Rapport. EPITA SCIA Promo 2004 16 janvier 2003. Julien Lemoine Alexandre Thibault Nicolas Wiest-Million XML, PMML, SOAP Rapport EPITA SCIA Promo 2004 16 janvier 2003 Julien Lemoine Alexandre Thibault Nicolas Wiest-Million i TABLE DES MATIÈRES Table des matières 1 XML 1 1.1 Présentation de XML.................................

Plus en détail

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv> Langage HTML (2 partie) «Je n'ai fait que prendre le principe d - hypertexte et le relier au principe du TCP et du DNS et alors boum! ce fut le World Wide Web!» Tim Berners-Lee

Plus en détail

Master d Informatique Corrigé du partiel novembre 2010

Master d Informatique Corrigé du partiel novembre 2010 Universités d Aix-Marseille I & II Technologies XML Master d Informatique Corrigé du partiel novembre 2010 Année 2010-11 Documents autorisés Exercice 1 : Documents XML et Applications XML (4 points) Georges,

Plus en détail

Cours Bases de données

Cours Bases de données Informations sur le cours Cours Bases de données 9 (10) séances de 3h Polycopié (Cours + TD/TP) 3 année (MISI) Antoine Cornuéjols www.lri.fr/~antoine antoine.cornuejols@agroparistech.fr Transparents Disponibles

Plus en détail

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch

Faculté de Génie Chaire industrielle en infrastructures de communication. La technologie XML. Wajdi Elleuch Faculté de Génie Chaire industrielle en infrastructures de communication La technologie XML Wajdi Elleuch Octobre 2004 SOMMAIRE Content : - XML : Définition - XML : Solution pour des applications réparties

Plus en détail

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr

Module BDWEB. Maîtrise d informatique Cours 9 - Xquery. Anne Doucet. anne.doucet@lip6.fr Module BDWEB Maîtrise d informatique Cours 9 - Xquery Anne Doucet anne.doucet@lip6.fr 1 Langages de requêtes XML Concepts des langages de requêtes XML motivations caractéristiques Navigation dans les documents

Plus en détail

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition

Thierry BOULANGER. par la pratique. Bases indispensables Concepts et cas pratiques XML. 3 ième édition. Nouvelle édition XML par la pratique Bases indispensables Concepts et cas pratiques 3 ième édition Nouvelle édition Thierry BOULANGER Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante

Plus en détail

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object) Quelques patterns pour la persistance des objets avec DAO Ce cours présente des modèles de conception utilisés pour effectuer la persistance des objets Université de Nice Sophia-Antipolis Version 1.4 30/8/07

Plus en détail

SQL Parser XML Xquery : Approche de détection des injections SQL

SQL Parser XML Xquery : Approche de détection des injections SQL SQL Parser XML Xquery : Approche de détection des injections SQL Ramahefy T.R. 1, Rakotomiraho S. 2, Rabeherimanana L. 3 Laboratoire de Recherche Systèmes Embarqués, Instrumentation et Modélisation des

Plus en détail

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014 pascal.dayre@enseeiht.

Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS. IDS2014, Nailloux 26-28/05/2014 pascal.dayre@enseeiht. Evolution et architecture des systèmes d'information, de l'internet. Impact sur les IDS IDS2014, Nailloux 26-28/05/2014 pascal.dayre@enseeiht.fr 1 MVC et le web 27/05/14 2 L'évolution des systèmes informatiques

Plus en détail

XML et Bases de données. Les bases de données XML natives.

XML et Bases de données. Les bases de données XML natives. XML et Bases de données. Les bases de données XML natives. Introduction. Une définition de l'expression «Base de données XML Native» : Une base de données XML native définit un modèle (logique) de document

Plus en détail

Perl Orienté Objet BioPerl There is more than one way to do it

Perl Orienté Objet BioPerl There is more than one way to do it Perl Orienté Objet BioPerl There is more than one way to do it Bérénice Batut, berenice.batut@udamail.fr DUT Génie Biologique Option Bioinformatique Année 2014-2015 Perl Orienté Objet - BioPerl Rappels

Plus en détail

Gestion de stock pour un magasin

Gestion de stock pour un magasin Département d Informatique Université de Fribourg, Suisse http://diuf.unifr.ch Gestion de stock pour un magasin Stock online utilise ASP/MS-Access DO Thi Tra My No étudiant : 05-333-750 Travail de séminaire

Plus en détail

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML

Faculté Polytechnique de Mons. Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML Faculté Polytechnique de Mons Johnny TSHEKE SHELE Le processus d Extraction, Transformation et Load (ETL) dans des entrepôts de données XML Travail de fin d études présenté en vue de l obtention du grade

Plus en détail

Notes de cours : bases de données distribuées et repliquées

Notes de cours : bases de données distribuées et repliquées Notes de cours : bases de données distribuées et repliquées Loïc Paulevé, Nassim Hadj-Rabia (2009), Pierre Levasseur (2008) Licence professionnelle SIL de Nantes, 2009, version 1 Ces notes ont été élaborées

Plus en détail

La base de données XML exist. A. Belaïd

La base de données XML exist. A. Belaïd La base de données XML exist Introduction Qu est-ce-que exist? C est une base de donnée native, entièrement écrite en Java XML n est pas une base de données en soi Bien qu il possède quelques caractéristiques

Plus en détail

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1 Plan 1. Généralités sur la persistance des données dans les applications 2. La connection

Plus en détail

Structure fonctionnelle d un SGBD

Structure fonctionnelle d un SGBD Fichiers et Disques Structure fonctionnelle d un SGBD Requetes Optimiseur de requetes Operateurs relationnels Methodes d acces Gestion de tampon Gestion de disque BD 1 Fichiers et Disques Lecture : Transfert

Plus en détail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation Web. Madalina Croitoru IUT Montpellier Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance

Plus en détail

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/

Information utiles. cinzia.digiusto@gmail.com. webpage : Google+ : http://www.ibisc.univ-evry.fr/ digiusto/ Systèmes de gestion de bases de données Introduction Université d Evry Val d Essonne, IBISC utiles email : cinzia.digiusto@gmail.com webpage : http://www.ibisc.univ-evry.fr/ digiusto/ Google+ : https://plus.google.com/u/0/b/103572780965897723237/

Plus en détail

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7 Sommaire 1-Introduction 2 1-1- BPM (Business Process Management)..2 1-2 J-Boss JBPM 2 2-Installation de JBPM 3 2-1 Architecture de JOBSS JBPM 3 2-2 Installation du moteur JBoss JBPM et le serveur d application

Plus en détail

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau

Ingénierie Dirigée par les Modèles. Editeurs de modèles. (Eclipse Modeling Tools) Jean-Philippe Babau labsticc.univ-brest.fr/pages_perso/babau/ Ingénierie Dirigée par les Modèles Editeurs de modèles (Eclipse Modeling Tools) Jean-Philippe Babau Département Informatique, UFR Sciences, Laboratoire Lab-STICC

Plus en détail

SYSTÈMES D INFORMATIONS

SYSTÈMES D INFORMATIONS SYSTÈMES D INFORMATIONS Développement Modx Les systèmes de gestion de contenu Les Content Management Système (CMS) servent à simplifier le développement de sites web ainsi que la mise à jour des contenus.

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

BIRT (Business Intelligence and Reporting Tools)

BIRT (Business Intelligence and Reporting Tools) BIRT (Business Intelligence and Reporting Tools) Introduction Cette publication a pour objectif de présenter l outil de reporting BIRT, dans le cadre de l unité de valeur «Data Warehouse et Outils Décisionnels»

Plus en détail

OpenPaaS Le réseau social d'entreprise

OpenPaaS Le réseau social d'entreprise OpenPaaS Le réseau social d'entreprise Spécification des API datastore SP L2.3.1 Diffusion : Institut MinesTélécom, Télécom SudParis 1 / 12 1OpenPaaS DataBase API : ODBAPI...3 1.1Comparaison des concepts...3

Plus en détail

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com

Cours Plugin Eclipse. Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com Cours Plugin Eclipse Université Paris VI / Parcours STL / Master I Pierre-Arnaud Marcelot - Iktek - pamarcelot@iktek.com 1 Qui suis-je? Ancien étudiant de Jussieu - Paris VI Diplomé du Master Technologies

Plus en détail

Module BD et sites WEB

Module BD et sites WEB Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Mise en œuvre des serveurs d application

Mise en œuvre des serveurs d application Nancy-Université Mise en œuvre des serveurs d application UE 203d Master 1 IST-IE Printemps 2008 Master 1 IST-IE : Mise en œuvre des serveurs d application 1/54 Ces transparents, ainsi que les énoncés

Plus en détail

Introduction aux concepts d ez Publish

Introduction aux concepts d ez Publish Introduction aux concepts d ez Publish Tutoriel rédigé par Bergfrid Skaara. Traduit de l Anglais par Benjamin Lemoine Mercredi 30 Janvier 2008 Sommaire Concepts d ez Publish... 3 Système de Gestion de

Plus en détail

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année 1997-98. J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES

BASES DE DONNÉES. CNAM Centre associé de Clermont-Ferrand Cycle A Année 1997-98. J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES BASES DE DONNÉES CNAM Centre associé de Clermont-Ferrand Cycle A Année 1997-98 J. Darmont I. INTRODUCTION II. LES SYSTÈMES HIÉRARCHIQUES III. LES SYSTÈMES RÉSEAU IV. LES SYSTÈMES RELATIONNELS V. LE LANGAGE

Plus en détail

4. SERVICES WEB REST 46

4. SERVICES WEB REST 46 4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,

Plus en détail

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki Institut Supérieur de Gestion Cours pour 3 ème LFIG Java Enterprise Edition Introduction Bayoudhi Chaouki 1 Java EE - Objectifs Faciliter le développement de nouvelles applications à base de composants

Plus en détail

Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML

Qu'est-ce que XML? XML : Extensible Markup Language. Exemple de document SGML SGML XML : Extensible Markup Language SGML Une introduction (1) http://kiwi.emse.fr/3a/dn.html Ph. Jaillon / J.J. Girardot J.J. GIRARDOT - EMSE 10/2004 1 Standard Generalized Markup Language Norme ISO-8879

Plus en détail

Pratique et administration des systèmes

Pratique et administration des systèmes Université Louis Pasteur Licence Informatique (L2) UFR de Mathématiques et Informatique Année 2007/2008 1 But du TP Pratique et administration des systèmes TP10 : Technologie LAMP Le but de ce TP est de

Plus en détail

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services

Whitepaper. Méthodologie de création de rapports personnalisés SQL Server Reporting Services Ce Whitepaper décrit la méthodologie de développement d un rapport personnalisé au format SQL Server Reporting Service (SSRS) appliqué à System Center Operations Manager (SCOM) Whitepaper Méthodologie

Plus en détail

Compte Rendu d intégration d application

Compte Rendu d intégration d application ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...

Plus en détail

td3a correction session7az

td3a correction session7az td3a correction session7az August 19, 2015 1 Séance 7 : PIG et JSON et streaming avec les données vélib (correction avec Azure) Plan Récupération des données Connexion au cluster et import des données

Plus en détail

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan

Plus en détail

BASE DE DONNÉES XML NATIVE

BASE DE DONNÉES XML NATIVE BASE DE DONNÉES XML NATIVE NXDB - exist - XQuery IvMad, 2011-2012 2 1. exist exist-db Open Source Native XML Database Ce cours s inspire, reprend, modifie et enrichi des supports disponibles sur Internet

Plus en détail

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40 Déroulement du cours Introduction Concepts Java Remarques Langage et Concepts de Programmation Orientée-Objet Gauthier Picard École Nationale Supérieure des Mines de Saint-Étienne gauthier.picard@emse.fr

Plus en détail

L'API DOM : Document Object Model

L'API DOM : Document Object Model Ingénierie Documentaire L'API DOM : Document Object Model http://doc.crzt.fr STÉPHANE CROZAT 16 octobre 2014 Table des matières I - Introduction au DOM 5 A. Principes du DOM...5 B. L'interface DOM...6

Plus en détail

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS 1. Introduction Nous allons aborder la notion de surcouche procédurale au sein des SGBDS relationnels tels que Oracle (PLSQL)

Plus en détail

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Accès à l'information XML par des requêtes XQuery au travers de son XSchema Rapport projet de fin d étude ASR Accès à l'information XML par des requêtes XQuery au travers de son XSchema Réalisé par : DAB Marwa MGARRECH Oussama Encadré par : Mme LOPES GANCARSKI Alda 2011/2012 Remerciements

Plus en détail

BD et XML : Exercices

BD et XML : Exercices BD et XML : Exercices 1 Stockage XML Voici un arbre XML : A B E C F C F C F D C C D D D 1.1 Stockage générique Exercice 1.1.1 : Définissez un schéma de stockage relationnel générique (sans prendre en compte

Plus en détail

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code

Généralités. javadoc. Format des commentaires. Format des commentaires. Caractères spéciaux. Insérer du code Généralités javadoc Université de Nice - Sophia Antipolis Richard Grin Version 1.4.1 8/2/11 javadoc produit de la documentation en partant de commentaires particuliers insérés dans le code source des classes

Plus en détail

PHP 4 PARTIE : BASE DE DONNEES

PHP 4 PARTIE : BASE DE DONNEES PHP 4 PARTIE : BASE DE DONNEES 1. Introduction 2. Présentation de MySQL 3. Principe 4. Connexion 5. Interrogation 6. Extraction des données 7. Fonctions de services 8. Traitement des erreurs 9. Travaux

Plus en détail

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8 SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8 INTRODUCTION Bonjour à tous; Aujourd hui je publie une nouvelle version de l adaptation de la Sync Framework Toolkit,

Plus en détail

Patrons de Conception (Design Patterns)

Patrons de Conception (Design Patterns) Patrons de Conception (Design Patterns) Introduction 1 Motivation Il est difficile de développer des logiciels efficaces, robustes, extensibles et réutilisables Il est essentiel de comprendre les techniques

Plus en détail

les techniques d'extraction, les formulaires et intégration dans un site WEB

les techniques d'extraction, les formulaires et intégration dans un site WEB les techniques d'extraction, les formulaires et intégration dans un site WEB Edyta Bellouni MSHS-T, UMS838 Plan L extraction des données pour un site en ligne Architecture et techniques Les différents

Plus en détail

Séance 1 Introduction aux bases de données

Séance 1 Introduction aux bases de données Introduction aux bases de données Séance 1 Introduction aux bases de données Sébastien Combéfis mardi 24 février 2015 Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons

Plus en détail

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 MapReduce Malo Jaffré, Pablo Rauzy ENS 16 avril 2010 Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril 2010 1 / 15 Qu est ce que c est? Conceptuellement Données MapReduce est un framework de calcul distribué

Plus en détail

Serveur d'archivage 2007 Installation et utilisation de la BD exist

Serveur d'archivage 2007 Installation et utilisation de la BD exist Type du document Procédure d'installation Auteur(s) Eric Bouladier Date de création 26/02/20007 Domaine de diffusion tous Validé par Equipe Versions Date Auteur(s) Modifications V1.00 26/02/2007 Eric Bouladier

Plus en détail

INTRODUCTION À PYRAMID Gaël Pasgrimaud @gawel_ Bearstech. Crédits: Blaise Laflamme

INTRODUCTION À PYRAMID Gaël Pasgrimaud @gawel_ Bearstech. Crédits: Blaise Laflamme INTRODUCTION À PYRAMID Gaël Pasgrimaud @gawel_ Bearstech Crédits: Blaise Laflamme Pyramid Pourquoi Pyramid Petit : ~ 5000 lignes de code Documenté : pratiquement tout est documenté Testé : 100% par des

Plus en détail

Introduction à la B.I. Avec SQL Server 2008

Introduction à la B.I. Avec SQL Server 2008 Introduction à la B.I. Avec SQL Server 2008 Version 1.0 VALENTIN Pauline 2 Introduction à la B.I. avec SQL Server 2008 Sommaire 1 Présentation de la B.I. et SQL Server 2008... 3 1.1 Présentation rapide

Plus en détail

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS) PHP et mysql php_mysql PHP et mysql Code: php_mysql Originaux url: http://tecfa.unige.ch/guides/tie/html/php-mysql/php-mysql.html url: http://tecfa.unige.ch/guides/tie/pdf/files/php-mysql.pdf Auteurs et

Plus en détail

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 SQL Sommaire : COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2 COMMANDES DE MANIPULATION DE DONNEES... 2 COMMANDES DE CONTROLE TRANSACTIONNEL... 2 COMMANDES DE REQUETE DE DONNEES... 2 COMMANDES

Plus en détail

Bases de données et sites WEB Licence d informatique LI345

Bases de données et sites WEB Licence d informatique LI345 Bases de données et sites WEB Licence d informatique LI345 Anne Doucet Anne.Doucet@lip6.fr http://www-bd.lip6.fr/ens/li345-2013/index.php/lescours 1 Contenu Transactions en pratique Modèle relationnel-objet

Plus en détail

Bases Java - Eclipse / Netbeans

Bases Java - Eclipse / Netbeans Institut Galilée PDJ Année 2014-2015 Master 1 Environnements Java T.P. 1 Bases Java - Eclipse / Netbeans Il existe plusieurs environnements Java. Il est ESSENTIEL d utiliser la bonne version, et un environnement

Plus en détail

UE 8 Systèmes d information de gestion Le programme

UE 8 Systèmes d information de gestion Le programme UE 8 Systèmes d information de gestion Le programme Légende : Modifications de l arrêté du 8 mars 2010 Suppressions de l arrêté du 8 mars 2010 Partie inchangée par rapport au programme antérieur Indications

Plus en détail

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013 NFA 008 Introduction à NoSQL et MongoDB 25/05/2013 1 NoSQL, c'est à dire? Les bases de données NoSQL restent des bases de données mais on met l'accent sur L'aspect NON-relationnel L'architecture distribuée

Plus en détail

Application web de gestion de comptes en banques

Application web de gestion de comptes en banques Application web de gestion de comptes en banques Objectif Réaliser une application Web permettant à un client de gérer ses comptes en banque Diagramme de cas d'utilisation 1 Les cas d'utilisation Connexion

Plus en détail

Les bases de données

Les bases de données Les bases de données Introduction aux fonctions de tableur et logiciels ou langages spécialisés (MS-Access, Base, SQL ) Yves Roggeman Boulevard du Triomphe CP 212 B-1050 Bruxelles (Belgium) Idée intuitive

Plus en détail

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles) SGBDR Systèmes de Gestion de Bases de Données (Relationnelles) Plan Approches Les tâches du SGBD Les transactions Approche 1 Systèmes traditionnels basés sur des fichiers Application 1 Gestion clients

Plus en détail

Mysql avec EasyPhp. 1 er mars 2006

Mysql avec EasyPhp. 1 er mars 2006 Mysql avec EasyPhp 1 er mars 2006 Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requètes vers les bases de données relationnelles. Il en reprend la syntaxe

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

34. DOM (Document Object Model)

34. DOM (Document Object Model) 34. DOM (Document Object Model) 34.1. DOM DOM est l'acronyme de Document Object Model. C'est une spécification du W3C pour proposer une API qui permet de modéliser, de parcourir et de manipuler un document

Plus en détail

Introduction aux outils BI de SQL Server 2014. Tutoriel sur SQL Server Integration Services (SSIS)

Introduction aux outils BI de SQL Server 2014. Tutoriel sur SQL Server Integration Services (SSIS) MIT820: Entrepôts de données et intelligence artificielle Introduction aux outils BI de SQL Server 2014 Tutoriel sur SQL Server Integration Services (SSIS) Description générale Ce tutoriel a pour objectif

Plus en détail

Le stockage local de données en HTML5

Le stockage local de données en HTML5 Le stockage local HTML5, pourquoi faire? Dans une optique de réduction des couts de maintenance, de déploiement, beaucoup d'entreprises ont fait le choix de migrer leurs applicatifs (comptables, commerciales,

Plus en détail

A QUOI SERVENT LES BASES DE DONNÉES?

A QUOI SERVENT LES BASES DE DONNÉES? BASE DE DONNÉES OBJET Virginie Sans virginie.sans@irisa.fr A QUOI SERVENT LES BASES DE DONNÉES? Stockage des informations : sur un support informatique pendant une longue période de taille importante accès

Plus en détail

1/ Présentation de SQL Server :

1/ Présentation de SQL Server : Chapitre II I Vue d ensemble de Microsoft SQL Server Chapitre I : Vue d ensemble de Microsoft SQL Server Module: SQL server Semestre 3 Année: 2010/2011 Sommaire 1/ Présentation de SQL Server 2/ Architerture

Plus en détail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris : Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens

Plus en détail

Serveur d Applications Web : WebObjects

Serveur d Applications Web : WebObjects Serveur d Applications Web : WebObjects Nicolas Roard 29 avril 2004 Table des matières 1 Introduction 1 2 Historique 1 2.1 Implémentation WebObjects....... 2 2.2 Différences et manques?......... 3 3 Principes

Plus en détail

COUCHE 7/OSI : TRANSFERT DE FICHIERS FTAM

COUCHE 7/OSI : TRANSFERT DE FICHIERS FTAM Service Application : FTAM 175 COUCHE 7/OSI : TRANSFERT DE FICHIERS FTAM Le transfert de fichiers entre systèmes hétérogènes correspond à un besoin fondamental. Il en est de même pour l'accès à des fichiers

Plus en détail

OCL - Object Constraint Language

OCL - Object Constraint Language OCL - Object Constraint Language Laëtitia Matignon laetitia.matignon@univ-lyon1.fr Département Informatique - Polytech Lyon Université Claude Bernard Lyon 1 2012-2013 Laëtitia Matignon SIMA - OCL - Object

Plus en détail

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP) Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP) Définition (G. Gardarin) Entrepôt : ensemble de données historisées variant

Plus en détail

CREATION WEB DYNAMIQUE

CREATION WEB DYNAMIQUE CREATION WEB DYNAMIQUE IV ) MySQL IV-1 ) Introduction MYSQL dérive directement de SQL (Structured Query Language) qui est un langage de requêtes vers les bases de données relationnelles. Le serveur de

Plus en détail

Vulgarisation Java EE Java EE, c est quoi?

Vulgarisation Java EE Java EE, c est quoi? Paris, le 1 Février 2012 Vulgarisation Java EE Java EE, c est quoi? Sommaire Qu est ce que Java? Types d applications Java Environnements Java Versions de Java Java EE, c est quoi finalement? Standards

Plus en détail

Groupe Eyrolles, 2004 ISBN : 2-212-11504-0

Groupe Eyrolles, 2004 ISBN : 2-212-11504-0 Groupe Eyrolles, 2004 ISBN : 2-212-11504-0 Table des matières Avant-propos................................................ 1 Quel est l objectif de cet ouvrage?............................. 4 La structure

Plus en détail

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com

Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184. Frédéric BERTIN fbertin@neotilus.com Développement mobile MIDP 2.0 Mobile 3D Graphics API (M3G) JSR 184 Frédéric BERTIN fbertin@neotilus.com Présentaion : Mobile 3D Graphics API JSR 184 M3G :présentation Package optionnel de l api J2ME. Prend

Plus en détail

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite

Mise en oeuvre d'une base de données mono-utilisateur avec SQLite Mise en oeuvre d'une base de données mono-utilisateur avec SQLite Utilisation de SQLite dans le logiciel CASSIS Plan Le contexte scientifique avec le logiciel CASSIS La problématique avec Mysql La solution

Plus en détail

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG Master1 ère année Réseaux avancés I TP nº5 filière ISICG Utilisation de la microplateforme Bottle et du framework AngularJS La «micro web-framework» Bottle pour Python Les principales caractèristiques

Plus en détail

NFE204 Bases de données avancées

NFE204 Bases de données avancées NFE204 Bases de données avancées Bases de données documentaires et NOSQL Philippe Rigaux, Nicolas Travers Conservatoire National des Arts et Métiers October 8, 2013 WebDam (CNAM) NFE204 Bases de données

Plus en détail

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème

Chapitre IX. L intégration de données. Les entrepôts de données (Data Warehouses) Motivation. Le problème Chapitre IX L intégration de données Le problème De façon très générale, le problème de l intégration de données (data integration) est de permettre un accès cohérent à des données d origine, de structuration

Plus en détail

1 Modélisation d être mauvais payeur

1 Modélisation d être mauvais payeur 1 Modélisation d être mauvais payeur 1.1 Description Cet exercice est très largement inspiré d un document que M. Grégoire de Lassence de la société SAS m a transmis. Il est intitulé Guide de démarrage

Plus en détail

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions

1 Définition et Appel d une fonction. V. Phan Luong. Cours 4 : Fonctions Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 4 : Fonctions La construction de fonctions dans un langage de programmation permet aux

Plus en détail

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin 2011. Talend 2010 1

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin 2011. Talend 2010 1 Big Data Cyril Amsellem Consultant avant-vente 16 juin 2011 Talend 2010 1 Big Data Architecture globale Hadoop Les projets Hadoop (partie 1) Hadoop-Core : projet principal. HDFS : système de fichiers distribués

Plus en détail

Application Web et J2EE

Application Web et J2EE Application Web et J2EE Servlet, JSP, Persistence, Méthodologie Pierre Gambarotto Département Informatique et Math appli ENSEEIHT Plan Introduction 1 Introduction Objectfis

Plus en détail

Java DataBaseConnectivity

Java DataBaseConnectivity Java DataBaseConnectivity JDBC JDBC est une API Java (ensemble de classes et d interfaces défini par SUN et les acteurs du domaine des SGBD) permettant d accéder aux bases de données à l aide du langage

Plus en détail

SSIS Implémenter un flux

SSIS Implémenter un flux SSIS Implémenter un flux Version 1.0 Z Thibault Denizet 2 SSIS Implémenter un flux Sommaire 1 Introduction 4 2 Contraintes de précédence 5 3 Implémenter un flux de contrôle 8 3.1 Conteneurs du flux de

Plus en détail

Module http MMS AllMySMS.com Manuel d intégration

Module http MMS AllMySMS.com Manuel d intégration Module http MMS AllMySMS.com Manuel d intégration Objectif du document... 3 1 Envoi de MMS par requête http... 4 1.1 Format de la requête utilisée... 4 1.2 Arborescence et explication des balises du flux

Plus en détail

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java Langages objets Introduction M2 Pro CCI, Informatique Emmanuel Waller, LRI, Orsay présentation du module logistique 12 blocs de 4h + 1 bloc 2h = 50h 1h15 cours, 45mn exercices table, 2h TD machine page

Plus en détail

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework L'objectif de ce document est de poser des bases de réflexion sur la modélisation d'un projet réalisé

Plus en détail