ServicesWebCours2
IsisTRUCK UniversitéParis8
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…
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
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…
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.
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
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.
ServiceWeb:principesdebase
• HTTPnesaittransporterquedutexte(HTML…)
• Leséchanges(requêtesetréponses)sontdoncauformattexte
• LeformattextepourreprésenterlesinformationsestXML
• LesmessagessontauformatXML.
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.
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
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.
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
ServicesWeb:XML
• XML:5principes• Lisiblepourlamachinecommepourl’humain• Définitionsansambiguïtéducontenud’undocument
• Définitionsansambiguïtédelastructured’undocument
• Séparationentredocumentsetrelationsentredocuments
• Séparationentrestructuredudocumentetprésentationdudocument
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
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<&• undocumentcommenceparunedéclarationXML
<?xml version="1.0" encoding ="UTF-8" standalone="yes" ?>
• Cetencodageautorisel’utilisationdesaccentsdanslesnomsdeséléments(etdesattributs),mais,danslapratique,onleséviterapourdesraisonsdecompatibilité
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.
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.
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
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>
ServicesWeb:namespaces
• Analysedudocumentprécédent:• Lesespacesdenomsévitentlesconflitsdenomsentredifférents
vocabulaires.• LedialecteDocBookdisposed'unélémenttitledemêmenomque
l'élémenttitleduDublinCore.• Cesdeuxélémentsnesontpasconfonduscarl'élémenttitledu
DublinCorealepréfixedc.
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)>
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>
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
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>
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>
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>
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">
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>
ServicesWeb
• DTDintéressantesmaisinsuffisantesetontdesfaiblesses:• Sontassezpauvres:nesupportentpaslesespacesdenomsdonc
impossibled’importerdesschémasexternes• etelless’écriventdansunformatquin’estpasXML:ilfautdonc
apprendreunenouvellesyntaxeetonnepeutpasutiliserlesoutilsexistantscommeDOMouSAXpourparserlesDTD,commeonparselesdocumentsHTMLetXML
• =>SchémasXML• XMLSchemaestunealternativeXMLauxDTD• Enfait,XMLSchémaapparaîtcommelesuccesseurdesDTDcarilest
parnatureextensibleets'appuiesurXML
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).
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.
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">.
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.
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])*"/>,
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)
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>
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>
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
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>
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>
• XMLSchemasindispensablescommeoutild’interopérabilitépourdesapplicationsréparties:
• entredesapplicationsweb• dansdesapprochesobjetsrépartiscommeSOAPouWSDL• entredesbasesdedonnéeshétérogènes
• Pourlesnormes,spécificationsetrecommandationsduW3C,voirhttps://www.w3.org/XML/Schema
XMLSchémas
XSL?
• XSL:eXtensibleStylesheetLanguage• langageévoluépourladéfinitiondefeuillesdestyle• XSLn’estpasunsimplelangagedeformatagededocumentsXML,commeCSS.
• C’estbeaucoupplusquecela:ilpermetderetraiterundocumentXML,deréarrangersastructure.
• =>XSLpermetdetransformerundocumentXMLenunautredocument,souventXML,maispasforcément,parexempleenHTML,TeX,RTF,PostScript,etc.
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
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.
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.
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>
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']">
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
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.
ServicesWebouAPI?
• ServiceWebvs.API- C’estdoncleprotocoledetransfertquiprimedansune
APIweb.- Onpeutallerplusloin:lesprotocolesdetransports
deviennentdesprotocolesdetransfertquandilsacquièrentunstatutd’interface.
- C’estcettesublimationd’unprotocoledetransport(TCP/IP)enuneinterface(uniforme)quidonnedesprotocolesdetransfert.
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
ServicesWebouAPI?
• Contrat- Touttransfertestuncontratquiliedeuxparties.- UneAPIsous-entenduncontrat,toutcommeunserviceWeb.
- Onpeutvoirlescontratscommeunregroupementd’assertionssurlespropriétésd’unprogramme.
- Chacuned’elleconstituealorsuneexpressionbooléenneàsatisfairepoursonexécution
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…)
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…
Top Related