Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication...

54
Services Web Cours 2 Isis TRUCK Université Paris 8

Transcript of Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication...

Page 1: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWebCours2

IsisTRUCK UniversitéParis8

Page 2: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

Références

•  http://www-igm.univ-mlv.fr/~dr/XPOSE2004/woollams/index.html

•  https://benoitpiette.com/labo/introduction-aux-web-services.html

•  http://www.christian-faure.net/2012/10/08/services-web-ou-api/

•  http://www.gchagnon.fr/cours/xml/servicesweb.html •  https://openclassrooms.com/courses/les-requetes-

http •  https://doc.ubuntu-fr.org/wget •  https://fr.wikipedia.org/ •  https://www.w3schools.com/xml/xml_dtd_intro.asp •  https://www.irif.fr/~carton/Enseignement/XML/

Cours/Namespace/index.html •  Etbeaucoupd’autres…

Page 3: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

Plan

•  Cours1:Préliminaires:couchesréseau-  Modèlethéorique:OSI-  Modèlepratique:TCP/IP-  HTTP

•  Cours2:ServicesWebouAPI?-  ServiceWeb(Génèse,…,XML,DTD,XSD…)-  API,APIpublique-  Contrat

•  Cours3:SOAP?•  CORBA•  REST

Page 4: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:Génèse

•  Audépart:lesapplicationsréparties•  Exemple:banquededépôt

•  offrepossibilitédeconsultersoncompteclientpardifférentsmoyens:MobileouInternet

•  Ilfautunearchitectureadaptativeetouverteavecuneseuleapplicationdetraitementmaisplusieursinterfacesfront-end(applicationAppStore,GooglePlay…ouweb)

•  DoncapplicationB2C,maiségalementB2Bcarlabanquepeutproposerdesproduitsfinanciersàdestinationdesespartenaires

•  Onparleégalementd’applicationagrégéelorsqueleproduitproposéestuneagrégationdeplusieursautresproduits.

•  Autreexemple:laréservationd’unvoyageestenfaituneapplicationagrégéecarunecombinaisond’uneréservationdebilletsdetransport,d’hôtels,devoituresdelocation,etc.

•  Agrégationd’informationsrécupéréesauprèsdeplusieursfournisseurs(cesontbiendesServicesWeb):compagniesaériennes,hôtels,loueursdevéhicules…

Page 5: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:Génèse

•  UneapplicationWebcommunicanteestunassemblagedeservicesWebquipeuventêtreinternesouexternesetfournispardiverspartenairesetfournisseurs.

•  MaisquelledifférenceentreServiceWebetapplidistantetraditionnelle?•  Archirépartiesdépendentetévoluentenfonctiondes:

•  Protocolesd’échangesetd’accès(Corba,RMI,.NET,ActiveX… cf.Programmationorientéecomposants–qu’est-cequec’est?)

•  Langagesd’implémentation(Java,C++,…)•  Interfacesd’interactionetdeprésentation

•  Maislesclientsdoivent,euxaussi,évoluerpourpouvoirrecevoirdetellesarchitectures.

Page 6: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:Génèse

•  LeWeb,quantàlui,estplussommaire:•  Débitplutôtfaible•  Caractéristiquesduprotocole(HTTP)bienplusbasiquesque

Corba,RMI,etc.•  Interactionsmoinsriches(html,CSS,etc.)

•  CôtéWeb,lesconfigurationsclientessontlégères(unnavigateur)etleprotocoleHTTPestinstallé(compris)partout.

•  DoncHTTPs’impose…

•  D’oùlavolontédecombinerlescaractéristiquesdesarchitecturesdistribuéesetlescontraintesduWeb(clientlégeretmiseenœuvredeHTTP)=>ApparitiondesServicesWeb

Page 7: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServiceWeb:qu’est-cequec’est?

•  ServiceWeb?-  CommunicationmachineàmachinesurleWeb-  déporterletraitementdedonnéesd'unposteclient,versunposte

serveursurlequel"tourne"l'application-  Troisraisonspourraientinciteràopterpourunteltraitement

déporté:l  lamachinedistantepeutêtreenpossessiondesdonnées,celle

duclient,non;l  lamachinedistantepeutdisposerd'unepuissancedecalcul

supérieure(attention,celanesuffitpas:ilfautégalementtenircomptedelarapiditédudébitentrelesdeuxmachines)

l  lamachinedistantedisposedelogicielsplusadaptésautraitementdesdonnées.

Page 8: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServiceWeb:principesdebase

•  HTTPnesaittransporterquedutexte(HTML…)

•  Leséchanges(requêtesetréponses)sontdoncauformattexte

•  LeformattextepourreprésenterlesinformationsestXML

•  LesmessagessontauformatXML.

Page 9: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:résumé

•  ServiceWeb:kesako?-  mettredesressourcesàdisposition(gratuitesounon)surInternet,viaunprotocole

d'échangesstandardisé,pourdesprogrammesécritsdansdeslangagesquelconques.-  Ilfaut:

l  unencodage(toujoursXML);l  untransport(souventHTTP);l  uneorganisationdesrequêtesetdesréponses.

-  Laprocéduredefonctionnementd'unserviceWebestlasuivante:l  leserviceWebdéfinitunformatpourlesrequêtesetlesréponses;l  unordinateurdemandeureffectueunerequête;l  leserviceWebeffectueuneaction,etrenvoielaréponseàl'ordinateurdemandeur.

-  UnserviceWebpeutparexemple:l  récupéreruncoursdeboursel  faireunedemandeautomatiquementmiseàjourd'unprix;l  accéderàuncalendrieruniverselfaisantlesconversionsentrecalendriers

internationauxetconnaissant,pourchaquepays,lesdatesdesjoursfériés;l  traduireunpassagedetextel  valideruncodepostalinternational...

-  PourpouvoirutiliserunserviceWeb,plusieursétapessontnécessaires:l  ilfautsavoirletrouver...l  ...puisconnaîtrelaméthodepouryaccéder...l  ...enfinsavoirl'utilisercorrectement.

Page 10: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb

•  Quelquesprotocoles(cf.plusloin)•  SOAP:utiliseXMLpourreprésenterlesdonnées•  WSDL:utiliseXML,XMLSchéma

HTTP,SMTP…:Transmissioneffective

SOAP,WSDL:Interactionsdecommunication

UDDI

Services

d’annuaire

WS-Security

Servicesde

sécurité

WS-Transaction

Servicesde

transaction

BPEL4WS,..

Servicesde

synchronisation

Page 11: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:XML

•  XML?•  eXtensibleMarkupLanguage•  Langagedebalisage(commeHTML*,maisgénérique)•  Oncréesespropresbalisesetsespropresrègles.Oninventeson

dictionnaireetsagrammaire.Ex.docx,formatXML(OfficeOpenXML?)

•  C’estunerecommandationduW3C•  Syntaxestricte,facileàmettreenœuvre•  Facileàlire•  Interopérabilité•  Destinéàêtreinterprétéparunprogrammepour:

•  AfficherquelquechosedansunepageWeb•  Commanderunemachine(ex.brasrobotisé,regarderparex.

http://air.imag.fr/images/6/6a/RenduprojetRobot.pdf)•  Stockerdesinformationspourmieuxleséchanger(ex.docx)•  Etc.

Page 12: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:XML

•  XML•  estnésuiteauxlimitesavéréesduHTML(impossibilitéde

créersespropresbalises,langagetroprestrictif…d’oùlanaissanceplustardduXHTML)

•  ButdeXML:étendrelesfonctionnalitésdeHTML•  XMLestunhéritier(unesimplification)deSGML

(StandardGeneralizedMarkupLanguage)•  XMLpermetlavérificationdelastructured’undocument

viaunegrammairetypedéfiniedansuneDTD(DocumentTypeDeclaration)

•  XMLestunlangagededescriptionetd’échangededonnéesstructurées

Page 13: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:XML

•  XML:5principes•  Lisiblepourlamachinecommepourl’humain•  Définitionsansambiguïtéducontenud’undocument

•  Définitionsansambiguïtédelastructured’undocument

•  Séparationentredocumentsetrelationsentredocuments

•  Séparationentrestructuredudocumentetprésentationdudocument

Page 14: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:XML

•  XML:exemple

Quanddécide-t-ondemettreunebaliseoubienunattribut?

Sou

rce:

Syl

vie

CA

LAB

RE

TTO

, Tip

hain

e A

CC

AR

Y. X

ML,

Ges

tion

de c

onte

nu W

eb

Page 15: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:XML •  documentXMLbienformé:respectelesrèglesdelagrammaire•  règlesd'undocumentbienformé

•  toutebaliseouvertedoitêtrefermée,ex:<livre></livre>•  lesbalisessontcorrectementimbriquées.Ex:Entrelacementmal

formé<p><b>….</p></b>•  lesvaleursd'attributssontentreguillemets

•  lesbalisesautofermantescorrespondentàdesdocumentsvidesetsontnotées:Ex:<img source="image.gif" />

•  lescaractères<&sontnotés&lt;&amp;•  undocumentcommenceparunedéclarationXML

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

•  Cetencodageautorisel’utilisationdesaccentsdanslesnomsdeséléments(etdesattributs),mais,danslapratique,onleséviterapourdesraisonsdecompatibilité

Page 16: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:XML

•  XML:namespaces•  LesdocumentsXMLcontiennentdoncdesbalisesquicodifientdes

grammairesetuncertainvocabulaireselonunecertainespécialité(lagéographie–legéocodage,parexemple–labiologie,etc.)

•  XMLpermetuneinteropérabilitéquisupposequeplusieursDTDpeuventseretrouverdansunmêmedocumentXML(contenantuneagrégationdesdocumentsXMLd’origine).

•  Cecisupposequ’iln’yapasd’ambiguïtédanslenommagedesdifférentsélémentsdechaquedocument.

•  LesdomainesdenomsXML(namespaces)sontunerecommandationduW3Cpourrésoudreleproblèmeduconflitdenoms

•  Principe:onpréfixechaquenomd’élémentd’unnomdedomaineuniqueauquelilfaitréférence.

Page 17: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:XML

•  XML:namespaces•  Exemplededéclarationd’unélément

•  sanspréfixe:head •  avecpréfixe:html:head

•  Unespacedenomsestdéclarévial’attributxmlns•  Soitendéclarantl’espacedenomsdansl’élément•  Soitenassociantunpréfixepouruneutilisationplus

fine.

Page 18: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:namespaces

•  Lemélangedeplusieursvocabulairesestillustréparl'exemplesuivant•  Pourinsérerdesmétadonnéesdansdesdocuments,ilfautdisposer

d'élémentspourlesprésenter.•  Ilexistedéjàunstandard,DublinCore,pourorganiserces

métadonnées.•  dccomprendunequinzained'élémentsdonttitle,creator,

subjectetdate•  Ilestpréférabled'utilisercevocabulaire,plutôtqued'introduireun

nouveauvocabulaire.•  Voiciledocumentprincipald'unlivreauformatDocBook•  Lesmétadonnéessontcontenuesdansunélémentmetadata.•  Celui-cicontientplusieursélémentsduDublinCore(préfixedc)•  L'élémentincludedeXIncludefaitpartied'unautreespacede

nomsmarquéparlepréfixexi

Page 19: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:namespaces <?xml version="1.0" encoding="iso-8859-1"?> <book version="5.0" xml:lang="fr" xmlns="http://docbook.org/ns/docbook" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xi="http://www.w3.org/2001/XInclude"> <!-- Titre DocBook du document --> <title>Langages formels, calculabilité et complexité</title> <!-- Métadonnées --> <metadata> <dc:title>Langages formels, calculabilité et complexité</dc:title> <dc:creator>Olivier Carton</dc:creator> <dc:date>2008-10-01</dc:date> <dc:identifier>urn:isbn:978-2-7117-2077-4</dc:identifier> </metadata> <!-- Import des chapitres avec XInclude --> <xi:include href="introduction.xml" parse="xml" /> <xi:include href="chapter1.xml" parse="xml" /> <xi:include href="chapter2.xml" parse="xml" /> <xi:include href="chapter3.xml" parse="xml" /> <xi:include href="chapter4.xml" parse="xml" /> <index /> </book>

Page 20: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:namespaces

•  Analysedudocumentprécédent:•  Lesespacesdenomsévitentlesconflitsdenomsentredifférents

vocabulaires.•  LedialecteDocBookdisposed'unélémenttitledemêmenomque

l'élémenttitleduDublinCore.•  Cesdeuxélémentsnesontpasconfonduscarl'élémenttitledu

DublinCorealepréfixedc.

Page 21: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:DTD

•  DTD:DocumentTypeDeclaration•  Définitlastructureetlesélémentsetattributsautorisésd’un

documentXML•  Permetdevaliderlaconformitéd'undocumentXMLparrapportàsa

définition•  Exemple1:documentXML:

<note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend</body>

</note>

•  DTDassociée:<!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)>

Page 22: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:DTD

•  Exemple2:<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?> <boutique> <telephone> <marque>Samsung</marque> <modele>Galaxy S8</modele> </telephone> <telephone> <marque>Apple</marque> <modele>iPhone 8</modele> </telephone> <telephone> <marque>Nokia</marque> <modele>2</modele> </telephone> </boutique>

Page 23: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:DTD

•  Exemple2:DTDassociée

<!ELEMENT boutique (telephone*)> <!ELEMENT telephone (marque, modele)> <!ELEMENT marque (#PCDATA)> <!ELEMENT modele (#PCDATA)> •  Quesignifiel’étoileaprès«téléphone»?

•  Ens’aidantdespagesdewww.w3schools.com(https://www.w3schools.com/xml/xml_dtd_intro.asp,notammentlesDTDElements,Attributes,etc.),écrirelaDTDdufichierXMLécritdansl’exercice1duTP3

Page 24: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:DTD

<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <repertoire> <!–- Jean AYMAR --> <personne sexe="masculin"> <nom>AYMAR</nom> <prenom>Jean</prenom> <adresse> <numero>12</numero> <voie type="rue">rue des roses</voie> <codePostal>75015</codePostal> <ville>PARIS</ville> <pays>FRANCE</pays> </adresse> <telephones> <telephone type="fixe">01 02 03 04 05</telephone> <telephone type="portable">06 07 08 09 10</telephone> </telephones> <emails> <email type="personnel">[email protected]</email> <email type="professionnel">[email protected]</email> </emails> </personne>

Page 25: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:DTD

<!– Emilie JOLIE --> <personne sexe="feminin"> <nom>JOLIE</nom> <prenom>Emilie</prenom> <adresse> <numero>43</numero> <voie type="boulevard">boulevard Haussmann</voie> <codePostal>17000</codePostal> <ville>LA ROCHELLE</ville> <pays>FRANCE</pays> </adresse> <telephones> <telephone type="bureau">04 05 06 07 08</telephone> </telephones> <emails> <email type="professionnel">[email protected]</email> </emails> </personne> </repertoire>

Page 26: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:DTD

•  2façonsdedéclareruneDTD,donc2typesdeDTD:interneouexterne

•  Interne:elleestsituéeauseindudocumentXML,dansleDOCTYPE.Exemple:<?xml version = "1.0" encoding="UTF-8" standalone="yes" ?> <!DOCTYPE boutique [ <!ELEMENT boutique (telephone*)> <!ELEMENT telephone (marque, modele)> <!ELEMENT marque (#PCDATA)> <!ELEMENT modele (#PCDATA)> ]> <boutique> <telephone> <marque>Samsung</marque> ... </boutique>

Page 27: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:DTD

•  Externe:laDTDeststockéedansunfichieràpart,dontl’extensionest.dtdTrèsintéressantpourlamodulariténotamment,càdsilaDTDestcommuneàplusieursfichiersXML

•  DTDexternePUBLIC:utiliséelorsquelaDTDestunenorme.•  Syntaxe:<!DOCTYPE racine PUBLIC "identifiant" "url"> •  ExempledanslesdocumentsXHTML1.0:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

•  DTDexterneSYSTEM:utiliséedanslecascontraire

•  Syntaxe:<!DOCTYPE racine SYSTEM "uri"> •  Exemple:

<!DOCTYPE boutique SYSTEM "doc1.dtd">

Page 28: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb:DTD

•  DTDexterneSYSTEM:Exemplecomplet

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

<!DOCTYPE boutique SYSTEM "doc1.dtd">

<boutique> <telephone> <marque>Samsung</marque> <modele>Galaxy S3</modele> </telephone>

... </boutique>

Page 29: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb

•  DTDintéressantesmaisinsuffisantesetontdesfaiblesses:•  Sontassezpauvres:nesupportentpaslesespacesdenomsdonc

impossibled’importerdesschémasexternes•  etelless’écriventdansunformatquin’estpasXML:ilfautdonc

apprendreunenouvellesyntaxeetonnepeutpasutiliserlesoutilsexistantscommeDOMouSAXpourparserlesDTD,commeonparselesdocumentsHTMLetXML

•  =>SchémasXML•  XMLSchemaestunealternativeXMLauxDTD•  Enfait,XMLSchémaapparaîtcommelesuccesseurdesDTDcarilest

parnatureextensibleets'appuiesurXML

Page 30: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWeb

•  AinsiXMLSchemadécrit(enXML)lastructured'undocumentXMLc'est-à-dire:•  lesélémentsquicomposentundocument,•  lesattributs,•  lahiérarchieentreleséléments,•  l'ordredessouséléments,•  lenombredesouséléments,•  lestypesdesélémentsetattributs,•  lesvaleurspardéfaut,leformatoularestrictiondesvaleursd'un

élémentoud'unattribut.•  OnparleainsideXMLSchemaDefinition(XSD).

Page 31: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémasElémentsdebase:(s’aiderdusitew3schools:https://www.w3schools.com/xml/schema_intro.asp )Lestypessimpleslespluscourantssontdetypes:

xs:string (NB:xsestunpréfixedenommage.L’usageveutqu’onutilisexsouxsd)

xs:decimal xs:integer xs:boolean xs:date xs:time

exemple:<xs:element name="Services Web" type="xs:string"/> déclarationd'unevaleurpardéfaut: <xs:element name="code_postal" type="xs:string" default="93526"/> déclarationd'unevaleurfigée: <xs:element name="universite" type="xs:string" fixed="Paris8"/> Lesélémentsdetypesimplenepeuventpascontenirdesous-éléments.Seulslesélémentscomplexeslepeuvent.

Page 32: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémasEléments complexes : la définition d'un élément complexe peut se faire directement au niveau de l'élément lui-même ou par référence au nom du type complexe (ce qui permet à plusieurs éléments de partager le même type complexe). La définition se fait alors par l’utilisation du tag xs:complexType. Un type complexe peut enrichir un autre type complexe on non (tag <xs:extension base="type_de_base">). Un type complexe peut aussi en restreindre un autre (exemple <xs:restriction base="xs:integer">). Il est possible de mélanger du texte libre avec des tags (exemple : bonjour<prenom>simon</prenom>) : <xs:complexType mixed="true">.

Page 33: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémas•  Unesuited’élémentscomplexesdoitêtredéclaréedansun<xs:sequence>, <xs:choice> ou <xs:all> :

•  <xs:all> spécifiequelesélémentsfilspeuventapparaîtreunefoisoupasdutout,etdansn’importequelordre.Ceconnecteurn’apasd’équivalentdansuneDTD.Seulle?permetdegérerl’occurrence(0ou1fois)dansuneDTD.

•  <xs:sequence> spécifiequelesélémentsfilspeuventseulementapparaîtredansl’ordrementionné.Ceconnecteuralamêmesignificationqu’unesuccessiondedéclarationd'élémentsséparéspardesvirgules,dansuneDTD.

•  <xs:choice> spécifiequ’unseuldesélémentsfilspeutapparaître.Ceconnecteuralamêmesignificationquele|dansuneDTD.

Page 34: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémasAttributs:Seulslesélémentscomplexespeuventavoirdesattributs.Ladéclarationdesattributspardéfautoufixeestidentiqueauxéléments:•  rendreunattributobligatoire:<xs:attributename="email"type="xs:string"

use="required"/>•  rendreunattributfacultatif:<xs:attributename="url"type="xs:string"

use="optional"/>Restrictionssurlesattributsouéléments(voirexemplesslidessuivants):•  Plagedevaleurs:<xs:minInclusivevalue="minimum"/>et<xs:maxInclusive

value="maximum"/>,•  Listedevaleurs:<xs:enumerationvalue="une_valeur"/>,•  Conformitéàunmotif:<xs:patternvalue="[A-Z][A-Z][A-Z]"/>ou

<xs:patternvalue="([az])*"/>,

Page 35: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémas•  Traitementdesespaces:<xs:whiteSpacevalue="preserve"/>

(lesespacessontlaisséstelsquels).Autresvaleurs:replace(remplacerlesLF,CR,TAB...pardesespaces)oucollapse(remplacerlesCR,LF...maisaussisupprimerlesespacesavant/aprèsetconcaténerlessuccessionsd'espaceenunseul),

•  surlalongueur:<xs:lengthvalue="8"/>ou<xs:minLength

value="5"/>et<xs:maxLengthvalue="8"/>,•  ilexisteaussidesrestrictionssurlesdécimales(fractionDigits

ettotalDigits)

Page 36: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémas

Exemplesderestrictions(encoreappeléesfacets)•  Surdesplagesdevaleursnumériques:<xs:element name="age"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:minInclusive value="0"/> <xs:maxInclusive value="120"/> </xs:restriction> </xs:simpleType> </xs:element>

Page 37: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémas•  Surdesensemblesdevaleurs:<xs:element name="voiture"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType> </xs:element> Solution2(permetderéutiliserlarestriction):<xs:element name="voiture" type="typeVoiture"/> <xs:simpleType name="typeVoiture"> <xs:restriction base="xs:string"> <xs:enumeration value="Audi"/> <xs:enumeration value="Golf"/> <xs:enumeration value="BMW"/> </xs:restriction> </xs:simpleType>

Page 38: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémas

•  Surdesmotifs(expressionsrégulières):Ex:onveutuncodepostalfrançais<xs:element name="CPFrancais"> <xs:simpleType> <xs:restriction base="xs:integer"> <xs:pattern value="[0-9]{5}"/> </xs:restriction> </xs:simpleType> </xs:element> VoirlesregexdeXMLSchemaici:https://www.regular-expressions.info/xml.html

Page 39: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémas

•  Surlalongueurdeschaînesdecaractères:

<xs:element name="password"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="5"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:element> •  NB:ilyaunordredansladéfinitionXSD:d’abordleséléments

<xs:element> (ou<xs:sequence> ou<xs:all>…)puislesattributs<xs:attribute>

Page 40: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XMLSchémas

•  Onpeutégalementcréeruntypecomplexeàpartird’untypesimple.•  Parexemple,pourdéfinirunélémentcontenantunevaleursimpleetun

attribut,commedans<quantite unit="g">250</quantite>

•  Onvadoncdériveruntypecomplexeàpartird’untypesimple:<xs:complexType name="quantite"> <xs:simpleContent> <xs:extension base="xs:positiveInteger"> <xs:attribute name="unit" type="xs:string" /> </xs:extension> </xs:simpleContent> </xs:complexType>

Page 41: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

•  XMLSchemasindispensablescommeoutild’interopérabilitépourdesapplicationsréparties:

•  entredesapplicationsweb•  dansdesapprochesobjetsrépartiscommeSOAPouWSDL•  entredesbasesdedonnéeshétérogènes

•  Pourlesnormes,spécificationsetrecommandationsduW3C,voirhttps://www.w3.org/XML/Schema

XMLSchémas

Page 42: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XSL?

•  XSL:eXtensibleStylesheetLanguage•  langageévoluépourladéfinitiondefeuillesdestyle•  XSLn’estpasunsimplelangagedeformatagededocumentsXML,commeCSS.

•  C’estbeaucoupplusquecela:ilpermetderetraiterundocumentXML,deréarrangersastructure.

•  =>XSLpermetdetransformerundocumentXMLenunautredocument,souventXML,maispasforcément,parexempleenHTML,TeX,RTF,PostScript,etc.

Page 43: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XSL•  1:ledocXMLnedemandepasdetransformation.SeulleCSSestutilisé.•  2:nécessitéd’utiliserunsous-langagedeXSL(FO:formattingobjects)•  3:ongénèreviaXSLT(voirplusloin)unXMLouHTMLetonl’affichedansun

navigateurgrâceàCSS

1

2

3

CSS

CSS

XSLTCSS

XSLT

HTML doc.

XML doc. XML or HTML

XSL−FO

presentation

Source : https://www.w3.org/Style/CSS-vs-XSL.en.html

Page 44: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XSL•  LafeuilledestyleXSLestenregistréedansunfichierexterneet

sonnomcomportel’extension".xsl"•  DansledocumentXML,onindiquececi: <?xml-stylesheet type="text/xml" href="URL"?> •  Structured’unefeuilledestyleXSL

•  XSLétantuneapplicationXML,unefeuilledestyleXSLest…undocumentXML!

•  LafeuilledestylecontientdoncunedéclarationXMLettoussesélémentssontplacésdansl’élémentracine.D’autrepart,lesélémentsXSLsontpréfixésparxsl:(XSLutiliselesdomainesdenoms).

•  L’élémentracinecontientprincipalementdesmodèles(templates)pourl'affichagedudocumentXML.

Page 45: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XSL•  chaquemodèlecontientdesinformationssurl'affichaged'une

branchedesélémentsdudocument•  S'iln'yaqu'unseulmodèle,alorsils'appliquesurlaracinedu

documentXML•  UnefeuilledestyleXSLcomporteunedéclarationXML,un

élémentracinexsl:stylesheet quienglobetouslesautresélémentsetprécisequelesélémentspréfixésparxsl:appartiennentaudomainedenomxsl.

•  Lemodèleestappliquéàlabranchespécifiéeparl'attributmatchdel’élémenttemplate.

•  EnCSS,lavaleurdel'attributmatchcorrespondraitausélecteurdelarègle.

Page 46: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XSL•  Souvent,labrancheindiquéeestlaracinedudocumentXML

(nepasconfondreavecl’élémentracinequi,lui,estunenfantdelaracinedudocument)

•  Latransformationd'undocumentXMLparunefeuilledestyleXSLs'effectuedoncparunmodèletraitantunnœuddonné

•  Chaquemodèleestdiviséendeuxparties:unnœudcibleindiquéparl’attributmatchetuneactionsurlenœud:

<xsl:template match="noeud_cible"> action (par exemple : <html>, etc.) </xsl:template>

Page 47: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XSL•  Unmodèlecontientdeuxtypesd’éléments:

•  desélémentsXMLbienforméspourreprésenterlesélémentshtml;•  desélémentsXSL

•  Parex.,xsl:value-of ou xsl:for-each•  quipermettentd’accéderaucontenudesélémentsdudocument

XML•  l’attributselectindiquelenomdel’élémentXML(àpartirde

l’élémentcourant)auquelonveutaccéder.

•  Onpeutclasserlesélémentsavecxsl:sort •  Onpeutfiltrerlesélémentsavecunesyntaxecrochets(et@

s’ils’agitd’unattribut)•  Parex.:<xsl:for-each select="catalog/cd[type='reggae']">

Page 48: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

XSL/XSLT•  Pourquelatransformationsefasse,ilfautégalementpréciserquellesortie

onveutobtenir:•  Parexemple,unesortieversunfichierHTML:<xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes"/>

•  LafeuilledestyleXSLestenregistréedansunfichierexterneetsonnomcomportel'extension".xsl"

•  DansledocumentXML,onindiquececi: <?xml-stylesheet type="text/xml" href="URL"?> •  Latransformationsefaitenutilisantunfichierxsletunfichierxml.Onparle

alorsdeXSLT(XSLtransformations)etonutilise(parexemple,sousLinux):xsltproc

•  L’interopérabilitéestdoncparfaitementatteintepuisquel’onpeutautomatiserlestraitementsdetransformationdesfichiers(XML)sousdiversformats

Page 49: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWebouAPI?

•  ServiceWebvs.API-  D’unpointdevuegénérique,unservicewebestuneAPI(uneAPIquiala

particularitéd’utiliserleprotocoleHTTP);etuneAPIwebseraitalorslemécanismequeconnaissentlesdéveloppeurs(librairies,modules,classes,etc.)maisappliquéauprotocoleHTTP.

-  Maiscommentuneinterface(API)peutelleêtreenmêmetempsunprotocole(HTTP)?

-  Uneinterfaceprotocolaireestunprotocoledetransportquidevientunprotocoledetransfert

-  UneAPIwebpeutdoncêtrecomprisecommeune“interfaceprotocolaire”.Legénieduwebestd’avoirpermisunearchitecturequisupportecetteapprochequifaitduprotocoledetransfertuneinterface.

Page 50: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWebouAPI?

•  ServiceWebvs.API-  C’estdoncleprotocoledetransfertquiprimedansune

APIweb.-  Onpeutallerplusloin:lesprotocolesdetransports

deviennentdesprotocolesdetransfertquandilsacquièrentunstatutd’interface.

-  C’estcettesublimationd’unprotocoledetransport(TCP/IP)enuneinterface(uniforme)quidonnedesprotocolesdetransfert.

Page 51: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWebouAPI?

•  APIpublique-  Ceuxquivendaientdesarchitecturesdeservicesvendentàprésent

desarchitecturesd’API.-  Maisilyamaintenantquelquechosededifférentencesensque

c’étaitgénéralementlesmêmespersonnesquimettaientenplacelesserviceswebetquilesutilisaient.C’étaitlamêmeéquipequiétudiaitlesbesoinsdecommunicationentre2ounapplicationsetmettaientenplacelesserviceswebappropriés.Avecl’approcheparlesAPI,ladémarcheestdifférenteencesensquecen’estpasforcémentlamêmeéquipededéveloppeursquiproduitlesserviceswebetlesutilise;cefaitdevientuneévidencequandonneparleplusd’APIprivéesetinternesmaisd’APIpubliques.

-  ExGoogleAPIs

Page 52: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWebouAPI?

•  Contrat-  Touttransfertestuncontratquiliedeuxparties.-  UneAPIsous-entenduncontrat,toutcommeunserviceWeb.

-  Onpeutvoirlescontratscommeunregroupementd’assertionssurlespropriétésd’unprogramme.

-  Chacuned’elleconstituealorsuneexpressionbooléenneàsatisfairepoursonexécution

Page 53: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWebouAPI?

•  Résumé

-  D’unpointdevuegénéral,unservicewebestuneAPI(quialaparticularitéd’utiliserleprotocoleHTTP);etuneAPIwebseraitalorslemécanismedelibrairie(module,classe)bienconnudesdéveloppeurs,maisappliquéauprotocoleHTTP.

-  MaisHTTP,entantqueprotocoledetransfert,estégalementqualifiéd’«Interface»(cf.RoyFielding,avecREST–plusloin)

-  Cequiesttroublant,c’estdoncquecequiestexplicitementunprotocole(HTTP)soitenmêmetempsqualifiéd’interface.Eneffet,danslemodèleOSI,letermed’interfaceétaitréservéàlacommunicationentredesprotocolesdeniveauxdifférentssansqu’iln’yaitdeprotocoledetransportutilisé.

-  Silesinterfacesn’étaientpasdesprotocolesdecommunications,c’étaitparcequel’onconsidéraitquelepassaged’unniveaudeprotocoleàunautresefaisaitauseindelamêmemachine.

-  Ilyaaussiunequestiondemode(lamode«API»adépassélamode«ServicesWeb»…pourl’instant…)

Page 54: Services Web - Freeisis.truck.free.fr/Site/ens/fichiers/l3miashs/sweb/Cours2.pdf- Communication machine à machine sur le Web- déporter le traitement de données d'un poste client

ServicesWebouAPI?

•  ServicesWebouAPI?-  QuiutiliselesServicesWebetquilesdéveloppe?

-  Enprincipe,lesmêmeséquipes-  QuiutiliselesAPIetquilesdéveloppe?

-  cen’estpasforcémentlamêmeéquipededéveloppeurs-  onneparleplusd’APIprivéesetinternesmaisd’APIpubliques

-  D’oùlefocusmissurlesbonnespratiques:simplicité,bonnedocumentation…